Gilbert Skrevet 29. desember 2003 Del Skrevet 29. desember 2003 $query = "SELECT * FROM venneliste WHERE bruker LIKE '".$bruker_id."' ORDER BY venn"; poenget er at venn som det skal sorteres etter, er et nummer, som tilsvarer id til personen. Derfor må jeg ut og hente navnet med denne i en while-løkke: SELECT * FROM brukere WHERE venn LIKE '".$venn_id."'"); da blir følgelig listen sortert etter nummeret, men jeg kunne tenke meg å sortere etter navnet, ikke id. noen som forsto Lenke til kommentar
ZoRaC Skrevet 29. desember 2003 Del Skrevet 29. desember 2003 (endret) Nå er ikke jeg noen "reser" på å kjøre et query mot flere tabeller, men prøv noe slikt: "SELECT * FROM venneliste, brukere WHERE venneliste.bruker LIKE '".$bruker_id."' ORDER BY venneliste.venn"; Mulig jeg er helt på bærtur, men det er verdt et forsøk Endret 29. desember 2003 av ZoRaC Lenke til kommentar
???????? Skrevet 29. desember 2003 Del Skrevet 29. desember 2003 Join tabellene i spørringen! Forklar hvilke felter du har i tabellene, hvilke som er like i begge (id felter) og hvilket felt du vil sortere etter - så kan vi sikkert sette opp en join spørring for deg, hvis du ikke kan det. Hvis du vil prøve deg frem, så virker det som du kan bruke LEFT JOIN! Lenke til kommentar
Gilbert Skrevet 30. desember 2003 Forfatter Del Skrevet 30. desember 2003 (endret) tusen takk Tabell venneliste: id // unik bruker // id til brukernavnet venn // id til vennen til brukernavnet Tabell brukere id // unik, men har ingen ting til felles med id i tabell venneliste, men venn. brukernavn // navn på alle venner Eksempel tabell venneliste: 1. 12 - 42 // nr. 42 står på vennelista til 12 2. 12 - 96 // nr. 96 står på vennelista til 12 3. 42 - 34 // nr. 34 står på vennelista til 42 når jeg har hentet ut hvilke venner hver enkelt bruker har, sorteres de i stigende rekkefølge etter id'en de har i tabell venneliste. Jeg ønsker å hente ut brukernavnet etter tabell brukere, og sortere de alfabetisk istedenfor. er det mulig ? EDIT: Feil smily... Endret 30. desember 2003 av fjartan Lenke til kommentar
???????? Skrevet 30. desember 2003 Del Skrevet 30. desember 2003 Jeg er ikke helt sikker på hva du mener? Vil du hente ut alle brukre og tilhørende data i venneliste? I så fall kan du bruke denne: SELECT * FROM brukere LEFT JOIN venneliste ON venneliste.venn = brukere.id ORDER BY brukere.brukernavn Er det ikke dette du mener, så beskriv litt nærmere hvilken data du ønsker. Kom med et eksempel på feltene og data'en du ønsker. Lenke til kommentar
Gilbert Skrevet 30. desember 2003 Forfatter Del Skrevet 30. desember 2003 (endret) vanskelig å forklare det bedre, slik jeg gjør det i dag, henter jeg ut alle brukerene: NAVN VENNER Martin Merethe Martin Merethe Mia Martin Men det er ikke poenget. Poenget er at de (vennene) sorteres etter deres nummer i tabell Venneliste, fordi de ligger lagret med sin id og ikke navn (for å unngå problemer hvis folk sletter sin profil og andre kommer inn med samme brukernavn). Derfor må jeg hente navnet deres ved å finne deres id i tabell brukernavn. Dette gjøres i while-løkka til den første spørringen - altså spørringen etter id'ene til alle vennene til hver bruker. Slik foregår det i dag: function vis_venneliste() { $bruker_id = $_SESSION['sypher']; $query = "SELECT * FROM venneliste WHERE bruker LIKE '".$bruker_id."' ORDER BY venn"; // HER SORTERES DEN ETTER ID PÅ VENN $result = mysql_query($query); $number = mysql_num_rows($result); $i = 0; if ($number == 0) : print "<tr><td colspan=3 bgcolor=\"#F5F0F0\"><i>Du har ikke lagt noen til i vennelisten din.</i></td></tr>"; elseif ($number > 0) : while ($i < $number): $bruker = mysql_result($result,$i,"bruker"); $venn_id = mysql_result($result,$i,"venn"); $venn_result = mysql_query("SELECT * FROM brukere WHERE sypher LIKE '".$venn_id."'"); // MEN JEG VIL SORTERE DEN ETTER SVARET AV DENNE SPØRRINGEN $venn = mysql_result($venn_result,0,"brukernavn"); $i++; endwhile; endif; } Endret 30. desember 2003 av fjartan Lenke til kommentar
???????? Skrevet 31. desember 2003 Del Skrevet 31. desember 2003 Hvis jeg forstår deg rett vil du hente ut vennene til en bestemt bruker fra tabellen venneliste. Videre ønsker du å hente ut navnene til vennene og sortere etter disse navnene. I tabellen venneliste har du f.eks. følgende felter: id, bruker og venn - der id er f.eks. et auto_increment felt som bare fungerer som id for tabellen, bruker er den personen som har vennene lagt til i listen og venn sier hvilken venn han/hun har. Dersom en person har flere venner legges det til en ny rad med id, bruker og venn. F.eks. her er all data der brukeren er # 5: 04 - 5 - 10 11 - 5 - 57 15 - 5 - 60 Her er bruker 5 venn med bruker 10, 57 og 60. Videre har du en tabell som holder info om navnet på brukerene, med f.eks. følgende felter: id og brukernavn. id er linket til venn i tabellen venneliste Stemmer dette? I så fall kan du kjøre en spørring som dette: SELECT * FROM venneliste LEFT JOIN brukere ON venneliste.venn = brukere.id WHERE venneliste.bruker = '5' ORDER BY brukernavn Da vil du få opp et resultat som dette: +----+--------+------+------+------------+ | id | bruker | venn | id | brukernavn | +----+--------+------+------+------------+ | 12 | 5 | 3 | 3 | Askepott | | 10 | 5 | 1 | 1 | Nissen | | 11 | 5 | 2 | 2 | Trollet | +----+--------+------+------+------------+ Der er alle vennene til bruker hentet og sortert etter brukernavnet. Lenke til kommentar
???????? Skrevet 31. desember 2003 Del Skrevet 31. desember 2003 Glem ikke at MySQL ofte har et problem med det norske alfabetet. Alle bokstavene fra a-z kommer på rett plass men ikke æ ø å - de kommer i rekkefølgen å æ ø (akuratt som i det svenske alfabetet). Den enkleste måten å fikse dette problemet er å bruke CASE og byttet ut æ med å, ø med æ og å med ø. F.eks.: SELECT * FROM tabell ORDER BY CASE felt WHEN 'æ' THEN 'å' WHEN 'ø' THEN 'æ' WHEN 'å' THEN 'ø' ELSE felt END; Mange som glemmer dette, og oppdager problemet først når de får klagemail! Lenke til kommentar
Gilbert Skrevet 31. desember 2003 Forfatter Del Skrevet 31. desember 2003 har ikke oppdaget noe problem med æøå ennå. men tusen takk for svar, godt jeg slapp å vente til neste år med å få gjort noe med det så vidt jeg kan se, stemmer det du skriver med det jeg var ute etter, skal prøve dette... godt nytt år Lenke til kommentar
Gilbert Skrevet 11. januar 2004 Forfatter Del Skrevet 11. januar 2004 Dette fungerer ikke. ??????? har jeg misforstått noe, hvor er feilen(e)? $query = "SELECT * FROM venneliste WHERE bruker LIKE '".$bruker_id."' ORDER BY venn"; $result = mysql_query($query); $number = mysql_num_rows($result); $i = 0; if ($number == 0) : print "<tr><td colspan=3 bgcolor=\"#F5F0F0\"><i>Du har ikke lagt noen til i vennelisten din.</i></td></tr>"; elseif ($number > 0) : while ($i < $number): $sorter = mysql_query("SELECT * FROM venneliste LEFT JOIN brukere ON venneliste.venn = brukere.id WHERE venneliste.bruker = '$bruker_id' ORDER BY brukere.brukernavn"); $bruker = mysql_result($sorter,$i,"bruker"); $venn = mysql_result($sorter,$i,"venn"); $tid = mysql_result($sorter,0,"sistinnlogget"); print "<tr><td bgcolor=\"#F5F0F0\"><a href=\"index.php?locat=profil&id=$venn\" class=\"link\">$venn</td><td width=10 bgcolor=\"#F5F0F0\" align=\"center\" valign=\"middle\"><center><a href=\"index.php?locat=venneliste&action=del&navn=$venn\" class=\"link\">DEL</a>|<a href=\"index.php?locat=meldingny&navn=$venn\" class=\"link\">PMS</a>|<a href=\"index.php?locat=meldingny&navn=$venn&action=dagbok\" class=\"link\">VLS</a></center></td><td width=70 bgcolor=\"#F5F0F0\" align=\"center\" valign=\"middle\">"; if ($tid > time() - 900) { echo "<font color=green size=1><b>Pålogget nå!</b></font></td></tr>"; } else { echo date("d/m H:i",$tid); } echo "</td></tr>"; $i++; endwhile; endif; Lenke til kommentar
???????? Skrevet 11. januar 2004 Del Skrevet 11. januar 2004 Ved å bruke mysql_result henter du kun ut en bestemt celle. $sorter = mysql_query("SELECT * FROM venneliste LEFT JOIN brukere ON venneliste.venn = brukere.id WHERE venneliste.bruker = '$bruker_id' ORDER BY brukere.brukernavn"); if(mysql_num_rows($sortere) <= 0){ echo "Du har ikke lagt til noen venner i venneliste din"; }else{ while($rad = mysql_fetch_array($sorter)){ echo $rad['DeVerdieneDuVilVise']; } } Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå