Rinox Skrevet 26. august 2007 Rapporter Del Skrevet 26. august 2007 (endret) Hei! Jeg jobber nå med et script hvor jeg ønsker å skrive ut fornavn, etternavn og kommuner som er listet i databasen. Fornavn og etternavn går fint å skrive ut, men nå vil jeg skrive ut alle kommunene som tilhører den og den brukeren. Kanskje ikke så enkelt å forstå, men her er koden min: <?php $logged_sok = mysql_query('SELECT * FROM sok WHERE logged > ' . (time() - (60*60*24*14))); while($fetch_logged_sok = mysql_fetch_array($logged_sok)) { echo mysql_real_escape_string($logged_sok['fornavn']) . ' ' . mysql_real_escape_string($logged_sok['etternavn']) . ' ' . . '<a href="index.php?side=sokinfo&id=' . $fetch_logged_sok['id'] . '">Mer informasjon</a>, '; } ?> Etter mysql_real_escape_string($logged_sok['etternavn']) vil jeg skrive ut alle kommunene som brukeren har. Kommunene som brukeren har ligger i en tabell som ser slik ut: bruker_id | kommune ------------------------------- 1 | oslo 1 | asker Noen som vet hvordan jeg kan gjøre det? Takk for svar Endret 26. august 2007 av Rinox Lenke til kommentar
EirikO Skrevet 26. august 2007 Rapporter Del Skrevet 26. august 2007 (endret) Fungerer det der? Burde du ikke printe ut: $fetch_logged_users['fornavn'] $fetch_logged_users['etternavn'] istedet for $logged_sok['fornavn'] etc..? Eller tar jeg feil nå? Kommuneopplegget er jeg litt usikker på.. Du kan jo selvfølgelig kjøre en spørring inni while-løkka, men er sikkert en bedre måte å gjøre det på. Kanskje noe GROUPE BY greier? Endret 26. august 2007 av EirikO Lenke til kommentar
Rinox Skrevet 26. august 2007 Forfatter Rapporter Del Skrevet 26. august 2007 Slurvefeil Men det er ikke det som er problemet... Noen som vet hvordan jeg skal gjøre dette med kommunene? Lenke til kommentar
Flin Skrevet 26. august 2007 Rapporter Del Skrevet 26. august 2007 Altså du har en bruker, la oss kalle han Ola Bruker. Først vil du skrive ut Fornavn og etter navn og så vil du skrive ut kommuner Ola har. Da er tabellen ordna på denne måten håper jeg. -------------------------------------- |Bruker_id| fornavn | etternavn| -------------------------------------- |1 |Ola |Bruker | -------------------------------------- Og så har du en annen tabell med kommuner? Eller har du de i samme tabell? Hvis du har det i separate tabeller er et ordna lignende dette? --------------------------- |Bruker_id|Kommuner| --------------------------- |1 |Eidsvoll | --------------------------- |2 |Hamar | --------------------------- Hvis du har det er det bare å hente ut bruker id når du heter ut navn. Når det er gjort henter du ut kommunene fra kommune tabellen med: PHP select * from kommuner where Bruker_id=$bruker_id... Her har du da henta ut bruker id'en til Ola og satt $bruker_id lik den. Lenke til kommentar
Rinox Skrevet 26. august 2007 Forfatter Rapporter Del Skrevet 26. august 2007 Jeg har det i separate tabeller, men jeg har en kommune på hver rad. Det vil si at det kan være f.eks. 3 rader som har bruker_id 1. Skjønner? Derfor er det litt vanskelig. Lenke til kommentar
Flin Skrevet 26. august 2007 Rapporter Del Skrevet 26. august 2007 Nei det er ikke vanskelig, for du trenger bare ut alle som har bruker_id 1. Når du har en henta en bruker henter du id'en hans også og så henter du ut alle kommunene som har den bruker id'en også. Lenke til kommentar
Rinox Skrevet 26. august 2007 Forfatter Rapporter Del Skrevet 26. august 2007 Kan du vise meg hvordan i koden min? Jeg vil at kommunene skal separeres med et komma etterfulgt av et mellomrom. Lenke til kommentar
Crowly Skrevet 26. august 2007 Rapporter Del Skrevet 26. august 2007 (endret) En liten ting først, du bruker mysql_real_escape_string på variabler/verdier du skal sette inn i en database, ikke når du henter ut. Ikke bruk SELECT * FROM hvis ikke du trenger alle feltene i tabellen, spesifiser de du trenger. Du kan gjøre noe slikt PHP <?php $sql="SELECT t1.brukerid id, t1.fornavn fn ,t1.etternavn en ,t2.kommune k FROM sok t1, kommuner t2 WHERE t1.brukerid = t2.brukerid ORDER BY t1.brukerid"; $result=mysql_query($sql); $id=NULL; echo '<table>'; while($row=mysql_fetch_assoc($result)) { if ($row['id']!==$id) { echo '<tr><td>'.$row['fn'].'</td><td>'.$row['en'].'</td><td>'.$row['k'].'</td></tr>'; $id=$row['id']; } else echo '<tr><td> </td><td> </td><td>'.$row['k].'</td></tr>'; } echo '</table>'; ?> Endret 26. august 2007 av crowly Lenke til kommentar
Flin Skrevet 26. august 2007 Rapporter Del Skrevet 26. august 2007 (endret) Ok, la oss si at vi kaller tabellen med for og etternavn for "navn" og den med kommuner kaller vi "kom". I dette tilfellet kan vi god bruke select * siden vi skal bruke alt som er Her søker vi på bruker via etternavn. PHP <?php $result = mysql_query("select * from navn where etternavn = $sok) or die ("error"); while ($row =mysql_fetch_array($result)) { $id = $row["bruker_id"]."<br>"; $fnavn = $row["fornavn"]."<br>"; $enavn = $row["etternavn"]."<br>"; }; $result = mysql_query("select * from kom where bruker_id = $id) or die ("error"); while ($row1 =mysql_fetch_array($result1)) { $kommune = $row1[kommune].","; }; echo $fnavn; echo $enavn; echo $kommune; ?> Bare slå meg hvis det er noe feil her, jeg pleier å ha en god del feil som jeg retter på underveis og dette var bare noe jeg skrev ned nå, men det burde funke greit er sikkert ikke optimalt på noe vis. Endret 26. august 2007 av Hjelpphp Lenke til kommentar
Crowly Skrevet 26. august 2007 Rapporter Del Skrevet 26. august 2007 (endret) Hvorfor bruke to sql oppslag når man kan klare seg med ett ? mysql_fetch_array er mer ressurskrevende enn mysql_fetch_assoc eller mysql_fetch_row, siden _array inneholder både _assoc og _row verdiene. Så lenge man bare henviser til den ene, i dette tilfellet _assoc hvorfor ikke bare bruke mysql_fetch_assoc til å begynne med Skader ikke å tenke på litt optimalisering, spesielt hvis skriptet skal kjøres på ett webhotell og ikke en dedikert server. Forskjellen her er minimal, men hvis det kjøres på ett webhotell, så "mange bekker små ...". Endret 26. august 2007 av crowly Lenke til kommentar
Flin Skrevet 26. august 2007 Rapporter Del Skrevet 26. august 2007 Tingen er at jeg ikke husker alle de greie i hode, men du har helt rett. Bare et utkast til hvordan det kan gjøres. Som sagt pleier jeg å ordne sånne ting etter hvert, først få det til å fungere så optimalisere det. 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å