demiurgen Skrevet 17. mai 2009 Del Skrevet 17. mai 2009 (endret) jeg skal lage et skjema til å redigere innhold som ligger i en database. jeg har da et skjema med noen tekstfelt og en rullgardinmeny. slik som jeg har satt det opp må jeg spørre databasen 2 ganger om den samme informasjonen. en gang til tekstfeltene og en gang til rullgardinmenyen. dette virker litt for dumt så derfor spør jeg: er det en måte å gjøre dette annerledes på, slik at jeg lipper å spørre databasen 2 ganger?? her er koden min... <?php require_once("../inc/connection.php"); if (isset($_REQUEST['id'])) { $user_id = $_REQUEST['id']; } // Perform database query $result = mysql_query("SELECT * FROM vt_users WHERE id = $user_id", $connection); if (!$result) { die("Database query failed: " . mysql_error()); } // Use returned data while ($row = mysql_fetch_array($result)) { $u_id = $row['id']; $first_name = $row['first_name']; $last_name = $row['last_name']; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Rediger bruker</title> </head> <body> <form name="edit_frm" method="post" action="commit.php?action=edit"> <p><label for="first_name_fld">Fornavn</label> <input name="first_name_fld" type="text" value="<?php echo $first_name; ?>" /></p> <p><label for="last_name_fld">Etternavn</label> <input name="last_name_fld" type="text" value="<?php echo $last_name; ?>" /></p> <select name="list"> <?php // Perform another database query $result2 = mysql_query("SELECT * FROM vt_users", $connection); if (!$result2) { die("Database query failed: " . mysql_error()); } // Use returned data while ($row2 = mysql_fetch_array($result2)) { $id = $row2['id']; $f_name = $row2['first_name']; echo "<option value='$id'>$f_name</option>"; } ?> </select> <p><input name="edit_btn" type="submit" value="Oppdater" /></p> </form> </body> </html> Endret 18. mai 2009 av cyclo Kode i spoiler Lenke til kommentar
TeisL Skrevet 17. mai 2009 Del Skrevet 17. mai 2009 (endret) Hei, hvis du inistialiserer en variabel utenfor whileløkka og legger arrayen du får fra databasen der, så skal den kunne brukes flere steder. Prøv noe sånt: $row = mysql_fectch_array($result); while ($row = mysql_fetch_array($result)) { $u_id = $row['id']; $first_name = $row['first_name']; $last_name = $row['last_name']; } Så mener jeg at den arrayen $row skal kunne brukes det andre stedet du kjører en ny spørring. Håper det var til hjelp. Endret 18. mai 2009 av cyclo Fjernet unødvendig quote Lenke til kommentar
demiurgen Skrevet 17. mai 2009 Forfatter Del Skrevet 17. mai 2009 hvordan får jeg den arrayen ut da? jeg har prøvd å bare kopiere hele while løkka og putte den inni rullgardinmenyen men det fungerer ikke. jeg får ingen error men det kommer ingenting ut... Lenke til kommentar
Danjaco Skrevet 17. mai 2009 Del Skrevet 17. mai 2009 (endret) Aloha En ide som burde fungere, har ikke testet (har programmert for mye i java i det siste) den er heller ikke klar, men kommentere med hva som burde gjøres videre. mvh thegreatone <?php require_once("../inc/connection.php"); if (isset($_REQUEST['id'])) { $user_id = $_REQUEST['id']; } // Perform database query $result = mysql_query("SELECT * FROM vt_users", $connection); if (!$result) { die("Database query failed: " . mysql_error()); } $result_array = array(); // Use returned data while ($row = mysql_fetch_array($result)) { //ENDRING ENDRING ENDIRNG $result_array[] = array( $row['id'],$row['first_name'],$row['last_name']); // $u_id = $row['id']; //$first_name = $row['first_name']; //$last_name = $row['last_name']; //SLUTT ENDRING ENDRING ENDIRNG } //ENDRING ENDRING ENDIRNG for($result_array as $user){ $user_array = $user; if($user_array[0] == $_REQUEST['id']){ //set fornavn etternavn osv //samt at du kan loppe igjennom samme array ($result_array) når du trenger alle brukere } } //SLUTT ENDRING ENDRING ENDIRNG ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Rediger bruker</title> </head> <body> <form name="edit_frm" method="post" action="commit.php?action=edit"> <p><label for="first_name_fld">Fornavn</label> <input name="first_name_fld" type="text" value="<?php echo $first_name; ?>" /></p> <p><label for="last_name_fld">Etternavn</label> <input name="last_name_fld" type="text" value="<?php echo $last_name; ?>" /></p> <select name="list"> <?php // Perform another database query $result2 = mysql_query("SELECT * FROM vt_users", $connection); if (!$result2) { die("Database query failed: " . mysql_error()); } // Use returned data while ($row2 = mysql_fetch_array($result2)) { $id = $row2['id']; $f_name = $row2['first_name']; echo "<option value='$id'>$f_name</option>"; } ?> </select> <p><input name="edit_btn" type="submit" value="Oppdater" /></p> </form> </body> </html> Endret 18. mai 2009 av cyclo Kode i spoiler Lenke til kommentar
fhugas Skrevet 27. juni 2009 Del Skrevet 27. juni 2009 Her har du en kode som gjør at du bare behøver å spørre databasen 1 gang Og i tillegg bare spørr om dataen du trenger, id, first_name og last_name Fant ut det var litt unødvendig å spørre om *(allt) når du bare bruker de 3 feltene. <?php require_once("../inc/connection.php"); if (isset($_REQUEST['id'])) { $user_id = $_REQUEST['id']; } // Perform database query $result = mysql_query("SELECT id, first_name, last_name FROM vt_users", $connection); if (!$result) { die("Database query failed: " . mysql_error()); } // Use returned data $brukere = array(); while ($row = mysql_fetch_array($result)) { if($row['id'] == $user_id) { // Her er det snakk om brukeren vi redigerer nå, så la oss ta vare på informasjonen $u_id = $row['id']; $first_name = $row['first_name']; $last_name = $row['last_name']; // Om du skal ha med denne brukeren i arrayet/listen under må du uncommente denne linjen #$brukere[$row['id']] = $row['first_name']; } else { // Legg alle andre brukere i et array $brukere[$row['id']] = $row['first_name']; } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Rediger bruker</title> </head> <body> <form name="edit_frm" method="post" action="commit.php?action=edit"> <p><label for="first_name_fld">Fornavn</label> <input name="first_name_fld" type="text" value="<?php echo $first_name; ?>" /></p> <p><label for="last_name_fld">Etternavn</label> <input name="last_name_fld" type="text" value="<?php echo $last_name; ?>" /></p> <select name="list"> <?php foreach($brukere as $id => $f_name) { echo "<option value='$id'>$f_name</option>"; } ?> </select> <p><input name="edit_btn" type="submit" value="Oppdater" /></p> </form> </body> </html> 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å