mehrere input felder updaten

nautiLus`

Erfahrenes Mitglied
hi, ich hoffe es kann mir wer helfen:

habe ein script, bei dem es fragen und antworten gibt die untereinander in input feldern stehen:

so:
__________
|__________| <frage1
__________
|__________| <antwort1


__________
|__________| <frage2
__________
|__________| <antwort2

__________
|__________| <frage3
__________
|__________| <antwort3

usw...


in php hab ich das so:

PHP:
echo "<table style=\"width:100%; font-size:12; font-family:verdana;\">\n";
echo "  <tr>\n";
echo "    <td style=\"width:6%; text-align:center;\">delete</td>\n";
echo "    <td><input type=\"hidden\" name=\"questionform\" value=\"$question\"><input type=\"text\" size=\"60\" name=\"updatequestion[]\" value=\"$question\"></td>\n";
echo "  </tr>\n";
echo "  <tr>\n";
echo "    <td><input type=\"hidden\" name=\"answerform\" value=\"$answer\"><input type=\"text\" size=\"60\" name=\"updateanswer[]\" value=\"$answer\"></td>\n";
echo "  </tr>\n";
echo "</table>\n";
echo "<hr>\n";

nun soll man das natürlich updaten können über mysql queries.
dabei kanns natürlich vorkommen, dass man eine frage von einer id ändern will und die antwort aber nicht und wieder die frage einer anderen und die antwort dergleichen...

mein update in sql hab ich im moment so:

PHP:
if(isset($questionform)) {
		 	 if(count($updatequestion) > 0) {
			 	for($i=0; $i < count($updatequestion); $i++) {
				  	$sql = "UPDATE
								$faq_table 
						    SET 
								question = '$updatequestion[$i]' where id = '$id';";		
					mysql_query($sql) OR die(mysql_error());
				}
			 }
		  }
		  if(isset($answerform)) {
		 	 if(count($updateanswer) > 0) {
			 	for($i=0; $i < count($updateanswer); $i++) {
				  	$sql = "UPDATE
								$faq_table 
						    SET 
								answer = '$updateanswer[$i]' where id = '$id';";		
					mysql_query($sql) OR die(mysql_error());
				}
			 }
		  }

leider wird immer nur bei der letzten frage und aw upgedated.

ich hab es schon etwas anders versucht aber da gabs auch immer probleme.
kann wer einen tip geben damit das andlich passt, weil das wäre dann das letzte problem was gelöst wäre :D

danke ciao

nauti
 
is wahrscheinlich eh viel zu komplizert gemacht, ich hab es auch schon versucht, dass ich die queries in ein array speichere, und dann mit foreach die updates durchgehe, hat auch nicht wirklich so funktioniert wie ich wollte.

cu
 
WIeso hast du da name=\"updatequestion[]\"? das geht nicht...

Du bist im HTML-Form. Da gibt es keine Arrays...

d.h. du musst erst einmal indizierte Name vergeben

PHP:
for ($i = 0; $i < anzahl; $i++)
{
  echo "<input type='text' name='updatequestion_$i'>";
}

Dann z.B. bei POST

PHP:
$keys = array_keys ($_POST);
foreach ($keys as $key)
{
  if (substr_count ($key, "updatequestion_") == 1)
  {
    $updates[str_replace ("updatequestion_", "", $key)] = $_POST[$key];
  }
}
Dann erhältst du ein Array $updates indiziert wie im Formular mit allen Werten. Dies ist nur eine Möglichkeit.
 
Zuletzt bearbeitet:
Warum so kompliziert?

Wenn Du alle Felder per "value" mit den Werten aus der DB füllst, kannst Du doch einfach einen Update aller Felder machen. Denn dann werden die nicht veränderten Felder mit dem Original überschrieben --> es ändert sich nichts.
Und die verändeten Werte werden upgedatet.

MfG
cyber
 
ok, das werd ich nochmal machen, hab ich zwar schon versucht, aber frag mich jetzt nicht an was es gescheitert ist, weil ich hab schon so viel gemacht, dass ich nix mehr weiß lol

bis dann
 
mein update verläuft so:
PHP:
$updatefaq = array("UPDATE $faq_table SET question = '$updatequestion' WHERE id = '$id';", "UPDATE $faq_table SET answer = '$updateanswer' WHERE id = '$id';");

foreach($updatefaq as $faqupdate) {
mysql_query($faqupdate) OR die(mysql_error());
}

das passt eh, nur wird wieder mal die letzten beiden felder (frage und aw) einer id upgedated, wenn ich auch diese editiere.
wenn ich nun andere ändere tut sich gar nichts.

und hier mein code, der in einer while schleife steht und alle fragen und aws ausliest:

PHP:
while($row = mysql_fetch_assoc($result1)) {
            $question = $row['question'];
            $answer= $row['answer'];
            $id = $row['id'];
            $catid = $row['catid'];
			
	  $checkboxform = $HTTP_POST_VARS['checkboxform'];
	  $deleteid = $HTTP_POST_VARS['deleteid'];
	  	             
	   echo "<table style=\"width:100%; font-size:12; font-family:verdana;\">\n";
	   echo "  <tr>\n";
	   echo "    <td style=\"width:6%; text-align:center;\">delete</td>\n";
	   echo "    <td><input type=\"hidden\" name=\"updatequestion\" value=\"$question\"><input type=\"text\" size=\"60\" name=\"updatequestion\" value=\"$question\"></td>\n";
	   echo "  </tr>\n";
	   echo "  <tr>\n";
	   echo "    <input type=\"hidden\" name=\"checkboxform\" value=\"true\">\n";
	   echo "    <td style=\"width:6%; text-align:center;\"><input type=\"checkbox\" name=\"deleteid[]\" value=\"$id\"></td>\n";
	   echo "    <td><input type=\"hidden\" name=\"updateanswer\" value=\"$answer\"><input type=\"text\" size=\"60\" name=\"updateanswer\" value=\"$answer\"></td>\n";
	   echo "  </tr>\n";
	   echo "</table>\n";
	   echo "<hr>\n";
	  }

danke cu
 
Bist du sicher, dass alle FOrmulardaten korrekt übermittelt werden?Gib dir mal alle Daten mit echo aus bevor du die Querys erstellst.

Außerdem hast du das Hidden-Feld (was wahrscheinlich deine alten Daten sind) genauso benannt wie das Input-Feld (Text). Macht keinen Sinn...
 
Zurück