Rematusen Skrevet 20. september 2008 Del Skrevet 20. september 2008 (endret) Først, hente ut koden: <form action="" method="post"> <h3>Endre byer.</h3> <hr /> <?php $sqql_g = "SELECT * FROM byer ORDER BY id_by DESC"; $sqqql_g = mysql_query($sqql_g); while ($stedf = mysql_fetch_array($sqqql_g)) { session_start(); $_SESSION['o_d_b'] = $stedf['sted'] . "_" . $stedf['id_by']; $_SESSION['o_d_b_2'] = $stedf['pris'] . "_" . $stedf['id_by']; echo "<h4>" . $stedf['sted'] . "</h4>"; echo "<input type=\"text\" name=\"$_SESSION[o_d_b]\" value=\"$stedf[sted]\"> "; echo "<input type=\"text\" name=\"$_SESSION[o_d_b_2]\" value=\"$stedf[pris]\"> kr"; } echo " <input type=\"submit\" name=\"_b_f\" value = \" Oppdater \"> "; ?> </form> Mening: Hente ut alle byer, så gi hver input en "name" som dere ser. Så skal jeg kunne oppdatere de.. --- Men hvordan kan jeg gjøre det? Er litt usikker, kan jo evt. legge hver input i hver sin form, men det blir for tungvindt.. Forslag? if(isset($_POST['_b_f'])) { $name_d = $_SESSION['o_d_b'] // name input $price_d = $_SESSION['o_d_b_2'] // pris input mysql_query("UPDATE byer"); } Endret 21. september 2008 av Rematusen Lenke til kommentar
JohndoeMAKT Skrevet 20. september 2008 Del Skrevet 20. september 2008 La meg se om jeg forstår hva som skal gjøres: -Les ut alle byer fra en database med id, navn og pris. -List ut navn og pris på alle byer i et form. -Når formet postest tilbake skal endringer skrives inn i databasen på rett by. Er dette et du prøver å få til? -- Ellers er ikke emnetittelen på denne tråden god nok. En mer beskrivende tekst er "hvordan lese innhold fra et variabelt antall input-elementer i et form". Lenke til kommentar
Rematusen Skrevet 20. september 2008 Forfatter Del Skrevet 20. september 2008 La meg se om jeg forstår hva som skal gjøres: -Les ut alle byer fra en database med id, navn og pris. -List ut navn og pris på alle byer i et form. -Når formet postest tilbake skal endringer skrives inn i databasen på rett by. Er dette et du prøver å få til? -- Jepp. Ellers er ikke emnetittelen på denne tråden god nok. En mer beskrivende tekst er "hvordan lese innhold fra et variabelt antall input-elementer i et form". Endret tittel nå Lenke til kommentar
JohndoeMAKT Skrevet 20. september 2008 Del Skrevet 20. september 2008 Det er nok et par uoptimale situasjoner som kan skje her, så du bør sikkert teste dataene litt før de smelles inn i databasen, men jeg tror dette skal virke. Det er skrevet i notepad uten webserver eller noe, så det er helt utestet. <?php $sql = "SELECT id, name, price FROM cities ORDER BY id ASC"; $cities = mysql_whatever( $sql ); ?><!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" lang="en" xml:lang="en"> <head> <title>XHTML 1.0: The Extensible HyperText Markup Language (Second Edition)</title> <style type="text/css"> /* Some stuff here just to make it non-IE compatible */ label:after { content: ":"; } </style> </head> <body> <div> <form action="noe.php" method="post"> <?php foreach( $cities as &$city ) { ?> <p> <label>Name<input type="text" id="<?= $city['id'] ?>-name" name="<?= $city['id'] ?>-name" value="<?= $city['name'] ?>" /></label> <label>Price<input type="text" id="<?= $city['id'] ?>-price" name="<?= $city['id'] ?>-price" value="<?= $city['price'] ?>" /></label> </p> <?php } ?> <input type="submit" value="save" /> </form> </div> </body> </html> <?php $sql = "SELECT id, name, price FROM cities;"; $cities = mysql_whatever( $sql ); foreach( $cities as &$city ) { if ( isset( $_REQUEST[$city['id'] . '-name'] ) && isset( $_REQUEST[$city['id'] . '-price'] ) ) { $sql = 'UPDATE cities SET name = ' . clean( $_REQUEST[$city['id'] . '-name'] ) . ', price = ' . clean( $_REQUEST[$city['id'] . '-price'] ) . " WHERE id = {$city['id']};"; mysql_whatever( $sql ); } } ?> Lenke til kommentar
Rematusen Skrevet 20. september 2008 Forfatter Del Skrevet 20. september 2008 <?php $sql = "SELECT id, name, price FROM cities ORDER BY id ASC"; $cities = mysql_whatever( $sql ); ?><!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" lang="en" xml:lang="en"> <head> <title>XHTML 1.0: The Extensible HyperText Markup Language (Second Edition)</title> <style type="text/css"> /* Some stuff here just to make it non-IE compatible */ label:after { content: ":"; } </style> </head> <body> <div> <form action="noe.php" method="post"> <?php foreach( $cities as &$city ) { ?> <p> <label>Name<input type="text" id="<?= $city['id'] ?>-name" name="<?= $city['id'] ?>-name" value="<?= $city['name'] ?>" /></label> <label>Price<input type="text" id="<?= $city['id'] ?>-price" name="<?= $city['id'] ?>-price" value="<?= $city['price'] ?>" /></label> </p> <?php } ?> <input type="submit" value="save" /> </form> </div> </body> </html> Ok, det fungerte ikke så bra! Slik ser tabellen i databasen ut: Og slik printet koden ut: Med dette i php koden: <?php $sql = mysql_query("SELECT id_by, sted, pris FROM byer ORDER BY id_by ASC"); $cities = mysql_fetch_array($sql); foreach( $cities as &$city ) { ?> <p> <label>Name<input type="text" id="<?= $city['id_by'] ?>-name" name="<?= $city['id_by'] ?>-name" value="<?= $city['sted'] ?>" /></label> <label>Price<input type="text" id="<?= $city['id_by'] ?>-price" name="<?= $city['id_by'] ?>-price" value="<?= $city['pris'] ?>" /></label> </p> <?php } ?> Hva er det som er feil ?? evt. andre måter? Lenke til kommentar
JohndoeMAKT Skrevet 20. september 2008 Del Skrevet 20. september 2008 (endret) Du bruker mysql_fetch_array og ikke mysql_fetch_assoc. http://no.php.net/manual/en/function.mysql-fetch-assoc.php Ta en: echo '<pre>'; print_r( $cities ); die(); for å se forskjellen. Endret 20. september 2008 av JohndoeMAKT Lenke til kommentar
Rematusen Skrevet 20. september 2008 Forfatter Del Skrevet 20. september 2008 (endret) Du bruker mysql_fetch_array og ikke mysql_fetch_assoc.http://no.php.net/manual/en/function.mysql-fetch-assoc.php Ta en: echo '<pre>'; print_r( $cities ); die(); for å se forskjellen. Vel, da har jeg gjort om på scriptene: <?php $sql = mysql_query("SELECT id_by, sted, pris FROM byer ORDER BY id_by ASC"); $cities = mysql_fetch_assoc($sql); session_start(); $_SESSION['sess_1'] = $cities['id_by'] . "-name"; $_SESSION['sess_2'] = $cities['id_by'] . "-price"; $_SESSION['sess_3'] = $cities['id_by']; ?> <p> Name <input type="text" name="<?= $_SESSION['sess_1']; ?>" value="<?= $cities['sted'] ?>" /><br /> Price <input type="text" name="<?= $_SESSION['sess_2']; ?>" value="<?= $cities['pris'] ?>" /> <input type="submit" name="_b_f" value="save" /> </form> <?php echo '<pre>'; print_r( $cities ); die(); ?> Og for å utføre formen: if(isset($_POST['_b_f'])) { session_start(); $name_d = $_SESSION['sess_1']; // name input $price_d = $_SESSION['sess_2']; // pris input $id_d = $_SESSION['sess_3']; $w2 = $_POST[$name_d]; $w3 = $_POST[$price_d]; mysql_query("UPDATE byer SET sted = '$w2' AND pris = '$w3' WHERE id_by = '$id_d'") or die (mysql_error()); unset($_SESSION['sess_1']); unset($_SESSION['sess_2']); unset($_SESSION['sess_3']); echo "endret.."; } Men et problem: sted får "valuen" 0 i databasen, uansett hva jeg skriver i input'en Hva er det som gjør det? Når jeg skriver ut query'en: UPDATE byer SET sted = '0' AND pris = '1002' WHERE id_by = '4' Endret 20. september 2008 av Rematusen Lenke til kommentar
JohndoeMAKT Skrevet 20. september 2008 Del Skrevet 20. september 2008 Hvorfor putter du så mye inn i $_SESSION egentlig? Ta en print_r dersom du lurer på hvilke data du jobber med. echo <pre> print_r( $_REQUEST ); die(); Lenke til kommentar
Rematusen Skrevet 21. september 2008 Forfatter Del Skrevet 21. september 2008 Gjorde om på koden, så nå fungerer 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å