Avatar billede eqvaliser Nybegynder
24. januar 2010 - 10:41 Der er 4 kommentarer og
1 løsning

PhP - vælge og vise flere gange bruger select destinct, har problemer med arrays

Har en database der ligner denne

id|columa|bruger|columc
---------------------------
1|dataA|bruger|selectorid1
2|dataB|bruger|selectorid2
3|dataC|bruger|selectorid3
4|dataA|bruger1|selectorid1
5|dataB|bruger1|selectorid2
6|dataC|bruger1|selectorid3
----------------------------
osv. nok op til 25-30 brugere..
jeg skal bruge dataen dataB fra hver bruger
og jeg kender ikke bruger, men jeg kender godt selectorid

så min første select er

$hentdataB = SELECT DISTINCT dataB FROM mintabel WHERE selectorid2

så "gætter" jeg på nu indholder $hentdataB et array af dataB
men jeg kan ikke få den vist ordenligt..

prøvede at lave en
while($row($hentdata))
{
arbejde med dataen her,  men kan kun vise den "sidste" selected.
}

det jeg gerne ville var at lave en while
også for hvergang uanset antal brugere, ramte selectorid2
echo dataB på skærmen..  men kan ikke få det til at lykkes.
Avatar billede erikjacobsen Ekspert
24. januar 2010 - 11:16 #1
Prøv at vis din kode.
24. januar 2010 - 11:16 #2
For at svare paa dit direkte spoergsmaal, hvis du fra din tabel vil have en udskrift af alle de datatyper for hvilket selectorid er 'selectorid2' saa har jeg lavet en lille hjemmeside http://christianjorgensen.be/eqvaliser.php og en databasetabel der giver dig dette.  Der er to vaerdier, begge 'dataB' som udskrives paa hver sin linie.  Jeg kaldte databasetabellen eqvaliser.  Koden og tabellen foelger nedenfor.

Men jeg tror dit foerste problem er en daarlig databasestruktur.  Problem nummer to er at du maaske ikke er saa god til at forklare hvad du vil.  Fortael lidt mere om hvad vaerdierne i din tabel bruges til og hvordan de haenger sammen og hvad formaalet er med din soegning, saa kan jeg maaske komme med et par forslag.

Her er koden til hjemmesiden og databasetabellen:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <title></title>
</head>

<body>
<?
$link = mysql_connect ('christianjorgensen.be.mysql', 'christianjoygen', 'dnyBKKbe') or die(mysql_erorr());
mysql_select_db('christianjoygen') or die('Could not select database');
$hentdataB = mysql_query("SELECT columa FROM eqvaliser WHERE columc = 'selectorid2'") or die(mysql_error());
while($row = mysql_fetch_array($hentdataB))
echo $row['columa'] . "<br/>";
mysql_close($link); 
?> 
</body>
</html>

CREATE TABLE eqvaliser(id INT, columa VARCHAR(10), bruger VARCHAR(10), columc VARCHAR(20));

INSERT INTO eqvaliser VALUES(1, 'dataA', 'bruger', 'selectorid1');
INSERT INTO eqvaliser VALUES(2, 'dataB', 'bruger', 'selectorid2');
INSERT INTO eqvaliser VALUES(3, 'dataC', 'bruger', 'selectorid3');
INSERT INTO eqvaliser VALUES(4, 'dataA', 'bruger1', 'selectorid1');
INSERT INTO eqvaliser VALUES(5, 'dataB', 'bruger1', 'selectorid2');
INSERT INTO eqvaliser VALUES(6, 'dataC', 'bruger1', 'selectorid3');
26. januar 2010 - 05:38 #3
eqvaliser, fik du mit indlaeg?  Har du en reaktion?
Avatar billede eqvaliser Nybegynder
26. januar 2010 - 09:58 #4
Hej det kan du tro, det fungerede fint,
brugte dit eksempel ovenfor, men lavede så senere hele tabellen
om pga det var noget rod, den var delt sammen med nogle faste
variabler og med nogle som blev dannet ved bruger input.

nu er det delt i 2 tabeller hvilket gør querys nemmere, og lidt
mere "normale" at arbejde med..

Smid et svar for points christian.
26. januar 2010 - 10:02 #5
Godt du kunne bruge det og glad du fandt ud af at forbedre datastrukturen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester