Mehrere Datensätze mit verschiedenen ID´s teils gleichem Inhalt aktualisieren

benjaminbih

Mitglied
Habe folgendes Problem und ich hoffe mir kann geholfen werden.

Mein Code sieht folgender massen aus:
Code:
print("<table width=80% border=1 cellspacing=0 cellpadding=2><tr><td align=center colspan=3>All phrases in $language language</td></tr>\n");
$res1 = mysql_query("SELECT * FROM ".TABLE_LANGUAGEVARS." WHERE `varname` = '".$varname."'")or sqlerr(__FILE__, __LINE__);
$arr1 = mysql_fetch_array($res1);
echo("<form name='form1' method='post' action='" . $_SERVER['PHP_SELF'] . "'><input type='hidden' name='action' value='submitedit'>");
echo("<tr><td colspan=2 class=\"colhead\">Varname</td><td align=\"left\"><input type=varname name=varname size=40 value=\"".$arr1["varname"]."\"></td></tr>");
$res = mysql_query("SELECT * FROM ".TABLE_LANGUAGEVARS." WHERE `varname` = '".$varname."'")or sqlerr(__FILE__, __LINE__);
while($arr = mysql_fetch_array($res)){
echo("<tr><td align=\"left\">Text in </td><td>".$arr["language"]."<br>ID: ".$arr["id"]."</td><td align=\"left\"><input type='hidden' name='id' value='".$arr["id"]."'><textarea cols=100 rows=5 name=text>".$arr["text"]."</textarea></td></tr>");
}
echo("<tr><td colspan=2 align=\"left\">Section</td><td align=\"left\"><input type=section name=section size=40 value=\"".$arr1["section"]."\"></td></tr>");
echo("<tr><td colspan=2 align=\"left\">Action</td><td><input type='Submit' value='".$category_lang['edit']."'></td></tr>");
echo("</form>");

echo("</table>");

Die Ausgabe sieht zum Beispiel so aus:

Varname: recent_news
Text in: english
ID: 10: Recent News
Text in: deutsch
ID: 11: Letzte Meldungen
Section: Index

Der code zum Mysql Update sieht so aus:
Code:
$action = $_POST['action'];
$id = $_POST['id'];
$language = $_POST['language'];
$varname = $_POST['varname'];
$text = $_POST['text'];
$section = $_POST['section'];
if($action == 'submitedit'){
mysql_query("UPDATE ".TABLE_LANGUAGEVARS." SET `varname` = ".$varnameValue."', `text` = '".$text."', `section` = '".$section."' WHERE `id` = ".$idValue."")or sqlerr(__FILE__, __LINE__);


//header("Location: /lang_admin.php?action=edititphrase&varname=$varname");
}

Der in Rot ausgegebene Text kann auf meiner Seite mittel <textarea> bearbeitet werden.
Wie man schon sieht "Varname" ist für beide Ausgaben "recent_news", sowie für beide Ausgaben die Section "index" ist. Die ID´s in der DB sind aber verschieden.
Ich möchte jetzt dass bei benutzung des Submit Buttons beide Text Einträge in der Datenbank mit neuen Text ersetzt werden.
Dies geschieht aber nicht.
Es wird nur die ID 11 in diesem Fall aktualisiert.

Ich bin für jede hilfe dankbar!
 
Bin mir gerade nicht sicher, ob PHP mehrere Variablen mit dem selben Namen verarbeiten kann. Deswegen mach mal plz ein
PHP:
print_r($_POST);
in der Update Funktion.
Wenn dann nicht beide ids drinnen stehen müsstest den jeweils einen Namen geben, bzw den Namen fortlaufend selbst generieren.

Bei der update funktion musst du jedenfalls für jede id jeweils ein mysql_update aufrufen.
 
Hi,

das liegt an den gleichen Namen. Da werden natürlich nur die letzten Werte übertragen. Benenne Deine Felder z.B. so:

HTML:
<input name="feldname[10]"/>
<input name="feldname[11]"/>

dann kannst Du folgendermaßen in Deinem Script darauf zugreifen:

PHP:
echo $_POST['feldname'][10];
echo $_POST['feldname'][11];

Und poste das nächste Mal bitte den HTML-Quelltext, nicht den PHP-Code, der ihn generiert und setze HTML und PHP in die dafür vorgesehenen Tags. Das erhöht die Chancen, dass sich jemand die Mühe macht , das zu lesen. ;)

LG
 
Danke euch zweien für die hilfe!
Hat soweit geholfen das ich folgendes mit dieser Form übergeben kann:

PHP:
Array ( 
[action] => submitedit 
[varname] => poll_create_new 
[id] => Array ([0] => 18 [1] => 19 )
[text] => Array ( [0] => Create a new poll [1] => Erstelle einen neue Umfrag ) 
[section] => poll )

Nun kommt die Update funkion nicht mehr klar. Und wirft fehler aus. z.B.:
PHP:
The response from the server MySQL: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'poll' WHERE `id` =' at line 1

Wie muss der SQL befehls aufruf nun aussehen
 
Zuletzt bearbeitet:
Also die Ausgabe mit

PHP:
print_r($_POST);

sieht so aus

PHP:
Array (  
[action] => submitedit  
[varname] => poll_create_new  
[id] => Array ([0] => 18 [1] => 19 ) 
[text] => Array ( [0] => Create a new poll [1] => Erstelle einen neue Umfrage )  
[section] => poll )

Der part der die Abfrage bearbeitet sieht so aus:
PHP:
$action = $_POST['action'];
$id = $_POST['id'][''];
$language = $_POST['language'];
$varname = $_POST['varname'];
$text = $_POST['text'][''];
$section = $_POST['section'];
if($action == 'submitedit'){

mysql_query("UPDATE ".TABLE_LANGUAGEVARS." SET `varname` = ".$varnameValue."', `text` = '".$text."', `section` = '".$section."' WHERE `id` = ".$id."")or sqlerr(__FILE__, __LINE__);

print_r($_POST);

//header("Location: /lang_admin.php?action=edititphrase&varname=$varname");
}

Jetzt muß da noch ein foreach funktion oder was ähnliches rein oder nicht?
Und wie sollte die aussehen, da ja $_POST[id] und $_POST[text] forltaufend und restlichen $_POST[X] nur einmal vorkommen.
 
Hi,

ich habe Dir doch schon beschrieben, wie Du auf die Array-Felder zugreifen kannst.

PHP:
foreach($_POST['id'] as $id) {
   echo $_POST['text'][$id];
}

LG
 
So hat alles geklappt, ist hald manchmal bisserl schwierig für so nenn hobbyphpcodeschreiber wie mich :D

@kuddeldaddeldu und Dark_Ranger, danke für eure hilfe!
 
Zuletzt bearbeitet:
Zurück