ilpostino Skrevet 17. februar 2004 Skrevet 17. februar 2004 planen er å kunne skrive ut data om alle brukere som er registrert i en database. disse dataene ligger i en multidimensjonal array. det jeg har problemer med er å få skrevet ut data for alle brukerne istedenfor data for den første som ligger i databasen. har prøvd med foreach og detvarjeg jeg kun fikk skrevet ut for den første brukeren i databasen. Jeg har laget arrayen slik: $link_id = mysql_connect($default_dbhost, $dbusername, $dbpassword ) or error_message ("Oppkobling feilet"); $database = mysql_select_db ("brukere") or error_message ("Databasen finnes ikke"); $data = mysql_query ("SELECT * FROM `brukere`") or error_message("Henting av data feilet"); $antall = mysql_num_rows ($data); $mail_data = mysql_fetch_array($data, MYSQL_ASSOC) or error_message ("Klarte ikke hente ut data"); og skrevet ut dataene slik: foreach ($mail_data as $display) { echo "<td>" . $display['fornavn'] . "</td>"; echo "<td>" . $display['etternavn'] . "</td>"; echo "<td>" . $display['brukernavn'] . "</td>"; } hva gjør jeg galt?
Edorph Skrevet 17. februar 2004 Skrevet 17. februar 2004 while ($rad = mysql_fetch_row($data)) { printf(" <tr> <td>%s</td> <td>%s</td> <td>%s</td> </tr> ", $rad[1], $rad[2], $rad[3]); } Hvis ikke jeg har misforstått, skulle noe liknende det være løsningen.
Nervetattoo Skrevet 17. februar 2004 Skrevet 17. februar 2004 I følge php manualen må du bruke 2 foreach for å skrive ut multidimensjonale array. Funnet det litt teit og vanskelig selv, bruk while loop som Edorph har beskrevet, funker fint.
Torbjørn Skrevet 17. februar 2004 Skrevet 17. februar 2004 man bruker while løkker for å hente ut mysql data som regel. mener det skal stå flust med eksempler under funksjonsbeskrivelsen til mysql_fetch_assoc eller *_array
ilpostino Skrevet 17. februar 2004 Forfatter Skrevet 17. februar 2004 vet at det står masse eksempler om det i manualen til php.. spesielt med at en må bruke 2 foreach-løkker. problemet mitt er at jeg såvidt har begynt å skjønne hvordan en skal bruke (og manipulere) multidimensjonale arrays... så hvordan jeg da skal (mis)bruke de i en løkke har vært ganske uforståelig..... jeg i manualen til php har jeg fått inntrykk av at foreach brukes på slike arrays så jeg var vel litt villedet med hensyn til å bruke noe annet....
Torbjørn Skrevet 18. februar 2004 Skrevet 18. februar 2004 jeg har aldri brukt begrepet "multidimensjonelle arrays" om resource identifier'en du får fra et mysql query, og synes heller ikke det hører helt hjemme der.. et mysql query gir deg en såkalt "resource identifier", ingen array. vha funksjonene mysql_fetch_array, *_assoc og *_row kan du hente ut arrays fra denne. disse array'ene er hver rad i mysql tabellen og er ikke multidimensjonale. som du ser av Edorph sitt eksempel brukes han ikke for eller foreach en eneste gang.
ilpostino Skrevet 18. februar 2004 Forfatter Skrevet 18. februar 2004 while ($rad = mysql_fetch_row($data)) { printf(" <tr> <td>%s</td> <td>%s</td> <td>%s</td> </tr> ", $rad[1], $rad[2], $rad[3]); } Hvis ikke jeg har misforstått, skulle noe liknende det være løsningen. kanskje dette er litt teit spørsmål, men hva gjør %s...?
sven-o Skrevet 18. februar 2004 Skrevet 18. februar 2004 while ($rad = mysql_fetch_row($data)) { printf(" <tr> <td>%s</td> <td>%s</td> <td>%s</td> </tr> ", $rad[1], $rad[2], $rad[3]); } Hvis ikke jeg har misforstått, skulle noe liknende det være løsningen. kanskje dette er litt teit spørsmål, men hva gjør %s...? %s fungerer på en måte som å fortelle php "putt strengen her!" Det som da får plassen til %s blir de variablene som er 2. argument< til printf. Dette fungerer på samme måte: printf(" <tr> <td>".$rad[1]."</td> <td>".$rad[2]."</td> <td>".$rad[3]."</td> </tr>");
ilpostino Skrevet 18. februar 2004 Forfatter Skrevet 18. februar 2004 %s fungerer på en måte som å fortelle php "putt strengen her!"Det som da får plassen til %s blir de variablene som er 2. argument< til printf. det er jo en ganske fiffig løsning om jeg får si det..... et dumt spørsmål til: når en bruker 'mysql_fetch_array' blir innholdet (den valgte linjen/raden i tabellen) puttet inn i en 'vanlig' array eller en multidimensjonal array...? nå begynner jeg skjønne hvorfor jeg ikke fikk det til da jeg lagde denne tråden...
Torbjørn Skrevet 18. februar 2004 Skrevet 18. februar 2004 et dumt svar: hvor mange dimensjoner har du i en mysqlrad? ellers: echo "<pre>"; print_r($din_array_her); echo "</pre>"; så ser du hva du har i arrayet.
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å