24. juni 2008 - 21:02
Der er
7 kommentarer og 1 løsning
Rette i flere MySql poster via Submit
Hej alle. Jeg ønsker at lave et udtræk af flere poster fra MySQL, hvor der skal være mulighed for at rette i flere poster på én gang. Jeg lister posterne med følgende kode, men kan ikke finde ud af, hvordan jeg opdaterer MySQL ved tryk på Submit. if(isset($_POST['context']) && $_POST['context']=='update') { .......noget array-halløj måske........ $sql = "UPDATE `kundeliste` ..... WHERE .........; database($sql); echo "Kunderne er rettet."; } echo "<form action='".$_SERVER['PHP_SELF']."' method='post'>"; echo "<input type='hidden' name='context' value='update'>"; $sql = "SELECT `pasnr`, `tlfnr` FROM `kundeliste`"; $res = database($sql); echo "<table>"; while($row = mysql_fetch_assoc($res)) { echo " <tr> <td><input value='$row[tlfnr]' type=text name=tlf[] size=50></td> <td><input value='$row[pasnr]' type=text name=pas[] size=50></td> </tr>"; } echo "</table><input type='submit' value='Opdater'></form>";
Annonceindlæg fra Barco
Har du en primær nøgle i kundeliste? kundeid? Så skal du nok lave formen om: $sql = "SELECT `kundeid`, `pasnr`, `tlfnr` FROM `kundeliste`"; $res = database($sql); echo "<table>"; while($row = mysql_fetch_assoc($res)) { echo " <tr> <td><input value='$row[tlfnr]' type=text name=tlf[".$row['kundenr']."] size=50></td> <td><input value='$row[pasnr]' type=text name=pas[".$row['kundenr']."] size=50></td> </tr>"; } Så kan din POST se nogenlunde sådan ud: if(isset($_POST['context']) && $_POST['context']=='update') { foreach ( $_POST['tlf'] as $key => $val ) { $sql = sprintf(" UPDATE `kundeliste` SET tlfnr = '%s' pas = '%s' WHERE kundeid = %d " ,mysql_real_escape_string($val); ,mysql_real_escape_string($_POST['pasnr'][$key]); ,intval($key) ); database($sql); } echo "Kunderne er rettet."; }
Jeg er i fuld gang med at afprøve, og jeg har også en primær nøgle, "id". Jeg har derfor tilrettet koden - både i`SELECT og i INPUT. Men jeg får fejl: Parse error: syntax error, unexpected ';' in C:\.....ret_kunde_flere.php on line 31 Linje 31 = ,mysql_real_escape_string($val);
Ah ,mysql_real_escape_string($val); ,mysql_real_escape_string($_POST['pasnr'][$key]); skal naturligvis være ,mysql_real_escape_string($val) ,mysql_real_escape_string($_POST['pasnr'][$key])
UPDATE fejler, og skriver følgende: MySQL-sætningen var: UPDATE `rejser_kunder` SET tlf1 = '97149392' pasnr1 = '202730037' WHERE id = '1' Og jeg går ud fra at linjen: ,mysql_real_escape_string($_POST['pasnr'][$key]) skal være: ,mysql_real_escape_string($_POST['pas'][$key])
Jeg skriver lige hele koden, for der er nogle felt- og tabelnavne, som er lidt anderledes: if(isset($_POST['context']) && $_POST['context']=='update') { foreach ( $_POST['tlf'] as $key => $val ) { $sql = sprintf(" UPDATE `rejser_kunder` SET tlf1 = '%s' pasnr1 = '%s' WHERE id = '%d' " ,mysql_real_escape_string($val) ,mysql_real_escape_string($_POST['pas'][$key]) ,intval($key) ); database($sql); } echo "Kunderne er rettet."; } echo "<form action='".$_SERVER['PHP_SELF']."' method='post'>"; echo "<input type='hidden' name='context' value='update'>"; $sql = "SELECT `id`, `pasnr1`, `tlf1` FROM `rejser_kunder`"; $res = database($sql); echo "<table>"; while($row = mysql_fetch_assoc($res)) { echo " <tr> <td>Tlfnr.<input value='$row[tlf1]' type=text name=tlf[".$row['id']."] size=50></td> <td>Pasnr.<input value='$row[pasnr1]' type=text name=pas[".$row['id']."] size=50></td> </tr>"; } echo "</table><input type='submit' value='Opdater'> </form>";
der mangler et komma: $sql = sprintf(" UPDATE `rejser_kunder` SET tlf1 = '%s' ,pasnr1 = '%s' WHERE id = '%d' " ,mysql_real_escape_string($val) ,mysql_real_escape_string($_POST['pas'][$key]) ,intval($key) );
Så fungerer det - tusind tak for hjælpen. Send venligst et svar.
Vi tilbyder markedets bedste kurser inden for webudvikling