#1 25. Dezember 2009 MySQL Update nur einen Wert Hallo, ich mach grad was das mir die Arbeit erleichtern soll. Das is eigentlich was ganz simples es soll nur Werte aus der DB ausgeben und auf Knopfdruck updaten ( is ja eigentlich nicht schwer, hab das auch schon gemacht). Allerdings steh ich grad voll auf der Leitung (was auch daran liegen kann dass ich gestern etwas viel getrunken hab. Wäre cool wenn mir jmd. helfen könnte. Hier die Dateien: index.php PHP: <? error_reporting ( 0 ); ob_start ( "ob_gzhandler" ); require_once( "config.php" ); include( "func.php" ); $out = "SELECT * FROM tour_1" ; $output = mysql_query ( $out ); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link href="style.css" rel="stylesheet" type="text/css" /> <title>Tourenliste</title> </head> <body> <h1>Tourenliste</h1> <form action="index2.php" method="post"> <table border="0" cellpadding="0" cellspacing="0" class="tableLine"> <tr> <td width="130px" class="row_<? echo $i % 2 ; ?>"><strong>Ort</strong></td> <td width="130px" class="row_<? echo $i % 2 ; ?>"><strong>Straße</strong></td> <td width="130px" class="row_<? echo $i % 2 ; ?>"><strong>Stelle</strong></td> <td width="20px"class="row_<? echo $i % 2 ; ?>"><strong>Anzahl</strong></td> </tr> <? if ( mysql_num_rows ( $output ) > 0 ) { $i = 0 ; while( $row = mysql_fetch_object ( $output )){ ?> <tr> <td width="130px" class="row_<? echo $i % 2 ; ?>"><? echo " $row -> ort " ; ?></td> <td width="130px" class="row_<? echo $i % 2 ; ?>"><? echo " $row -> strasse " ; ?></td> <td width="130px" class="row_<? echo $i % 2 ; ?>"><? echo " $row -> stelle " ; ?></td> <td width="20px"class="row_<? echo $i % 2 ; ?>"><input name="anzahl" type="text" value="<? echo " $row -> anzahl " ; ?>" size="5" maxlength="5" /><input type="hidden" name="hidden" value="<? echo " $row -> id " ; ?>" /></td> <td width="130px" class="row_<? echo $i % 2 ; ?>"><input type="submit" value="Update" name="Submit" /></td> </tr></form><? update (); ?> <? $i ++; } } else { echo "Es wurden keine Eintäge gefunden!" ; } ?> </table> </body> </html> und hier die func.php PHP: <? function update () { if ( $_SERVER [ 'REQUEST_METHOD' ]== "POST" ) { session_start (); { $anzahl = $_POST [ 'anzahl' ]; $id = $_POST [ 'hidden' ]; $update = "UPDATE tour_1 SET anzahl = ' $anzahl ' WHERE id = ' $id '" ; mysql_query ( $update ); header ( "location:index.php" ); } } } ?> Für jede Hilfe gibts natürlich BWs!!! + Multi-Zitat Zitieren
#3 25. Dezember 2009 AW: Problem mit MySQL Ah ja^^ vergessen... Also wenn ich auf Updaten will, updatet er mir nur den letzten Wert, den er aus der Tabelle ausliest. Die anderen Werte (also anzahl) werden nicht geupdatet! + Multi-Zitat Zitieren
#4 25. Dezember 2009 AW: Problem mit MySQL PHP: $update = "UPDATE tour_1 SET anzahl = ' $anzahl ' WHERE id = ' $id '" ; Du klickst einmal auf update und der befehl oben macht es nur einmal. Du musst eine schleife einbauen oder meinst du mit andere werte ort, strasse, stelle .... Dann musst hinter anzahl='$anzahl', strasse='$strasse' usw... Ich weiss aber leider nicht was du genau möchtest. + Multi-Zitat Zitieren
#5 25. Dezember 2009 AW: Problem mit MySQL Ja höh? Der code macht ja auch so überhaupt keinen Sinn... Also wenn du das Formular absendest kann PHP nicht mehr unterscheiden was du denn genau updaten willst weil deine Felder alle gleich heißen... <input name="anzahl" ... /> Probiers mal mit <input name="anzahl[]" ... /> Außerdem, was willst du mit dem Aufruf der "update();" funktion für jeden Eintrag in der Tabelle erreichen? Damit updatest du EINEN Eintrag, sooft wie du Einträge in der Tabelle hast?!!? Sowieso, das ganze in eine Funktion auszulagern macht keinen Sinn.. Am besten postfixt du alle Felder mit der ID und kannst dann im PHP genau unterscheiden.. Also: <input name="anzahl[$row->id]" ... /> Dann hast du ein array in PHP das du weiterverwenden kannst + Multi-Zitat Zitieren
#6 25. Dezember 2009 AW: Problem mit MySQL mach mehrere formulare wenn du bei jedem schleifendurchgang nen eigenen submit-button+id hast. PHP: <? php if( mysql_num_rows ( $output ) > 0 ): $i = 0 ; while( $row = mysql_fetch_object ( $output )): ?> <tr> <?php $o = $i % 2 ; ?> <td width="130px" class="row_<?php print $o ; ?>"><?php print $row -> ort ; ?></td> <td width="130px" class="row_<?php print $o ; ?>"><?php print $row -> strasse ; ?></td> <td width="130px" class="row_<?php print $o ; ?>"><?php print $row -> stelle ; ?></td> <td class="row_<?php print $o ; ?>" colspan="2"> <form action="index2.php" method="post"> <input name="anzahl" type="text" value="<?php print $row -> anzahl ; ?>" size="5" maxlength="5" /> <input type="hidden" name="hidden" value="<?php print $row -> id ; ?>" /> <input type="submit" name="Submit" value="Submit" /> </form> </td> </tr> <?php ++ $i ; endwhile; endif; ?> alternativ funktioniert der code von Coksnuss auch zu 100% wenn man die variablen in der funktion richtig verarbeitet. + Multi-Zitat Zitieren
#7 26. Dezember 2009 AW: Problem mit MySQL Hmmm....das funktioniert schon mal... Steh aber i-wie immer noch auf der Leitung, ich versteh das Problem schon aber ich blick grad überhaupt nicht durch. Was mach ich denn dann wenn ich nur einen Submit Button für alles will? Sorry für die dummen Fragen aber ich hab in sachen PHP grad voll den Durchhänger (weil das eigentlich echt simpel ist)... BWs sind raus! + Multi-Zitat Zitieren
#8 26. Dezember 2009 AW: Problem mit MySQL Das machen was ich gesagt habe ^^... Schreib einfach mal print_r($_POST); in deinen Quelltext rein wenn du das Formular abgesendet hast.. Da befinden sich dann alle Daten drin die du brauchst.. + Multi-Zitat Zitieren
#9 26. Dezember 2009 AW: MySQL Update nur einen Wert Ja ich hab dann Arrays von 1 bis unendlich...aber wie bekomm ich die auf der index2.php dann wieder rausgelesen? Weil z.B. $_POST['anzahl.$row->id']; das geht nicht...dann müsst ich ja alle ids einzeln hinschreiben... + Multi-Zitat Zitieren
#10 26. Dezember 2009 AW: MySQL Update nur einen Wert hier ein kleines beispiel. probiere es mal aus PHP: <? php if(isset( $_POST [ 'anzahl' ])){ foreach( $_POST [ 'anzahl' ] as $feld => $value ) { echo $feld . " = " . $value . "<br />" ; }} ?> <form action="" method="post"> <input type="text" name="anzahl[1]" value="3" /> <input type="text" name="anzahl[3]" value="1" /> <input type="text" name="anzahl[5]" value="56" /> <input type="submit" value="GO" /></form> + Multi-Zitat Zitieren