Dynamisches Formular mit Arrays und Mysql

ASchwiedy

Mitglied
Hallo und guten Morgen,

ich stehe vor folgendem Problem.
Es existiert ein Formular mit mehreren Eingabefeldern. Die Anzahl ist hierbei dynamisch und abhängig von Mysql-Einträgen. Existieren z.B. 4 Einträge in der DB, so erscheinen auch 4 Eingabefelder.

Die Mysql-Tabelle sieht so aus:

usernamedomainurlipns

HTML:
<?php
$warenkorb=@mysql_query("SELECT * FROM kundenwarenkorb WHERE username='".$_SESSION['user']."'");

while ($warenkorbdaten=@mysql_fetch_array($warenkorb)) {
	
?>

Domain: <?php echo $warenkorbdaten['domain']; ?>
<div>
<input name="url[]" type="text" id="feld" maxlength="255" />
</div>

<br />


<div>
<input name="ip[]" type="text" id="feld" maxlength="255" />
</div>

<br />

<div>
<input name="ns[]" type="text" id="feld" maxlength="255" />
</div>


<?php
} 
?>

Wie man sieht, würde es dann bei 4 DB-Einträgen viermal jeweils zuerst den in der DB eingetragenen Domainnamen ausgeben, jeweils gefolgt von den Feldern url, ip und ns.

Der Benutzer ist auf der Homepage mit seinem Usernamen eingeloggt.
Jetzt zu meinem Problem. Wenn das Formular abgesendet wird, dann sollen die Werte aus url[], ip[] und ns[] jeweils beim richtigen User aber auch bei der richtigen Domain in die DB eingetragen werden. Ich habe es u.a. scho so versucht:

PHP:
<?php
$warenkorb = ("SELECT * FROM kundenwarenkorb WHERE username='".$_SESSION['user']."'");

$eingaben = $_POST['url'];

while ($warenkorbdaten=@mysql_fetch_array($warenkorb)) {
 
foreach ($eingaben as $value) {
	$aendern=@mysql_query("UPDATE kundenwarenkorb SET url='$value' WHERE domain='".$warenkorbdaten['domain']."'");
}

}
?>

leider hab ich es nicht geschafft zu lösen :(

Viele Grüße
ASchwiedy
 
Gib bei deinen Namensbezewichnungen wo du ja schon Arrays verwendest die ID des jeweiligen Datensatzes mit:

PHP:
<?php
// while schleife
?>
<input name="url[{$warenkorbdaten['id']}]" type="text" id="feld" maxlength="255" />

.......

Dann hast du in deinem Post-Array für die Id des Datensatzes als Key im Array.
 
Mensch danke für Deine Antwort. Hatte schon die Hoffnung verloren.

Aber wie sollte in diesem Fall im nächsten Schritt die Abfrage für das INSERT in die DB aussehen?
 
Du hast im ersten Schritt dein Post-Array:

PHP:
if(array_key_exists('url', $_POST) && is_array($_POST['url'])) {
    $aUrls = $_POST['url'];
    foreach ($aUrls as $iUrlId => $sValue) {
        // update table set field = value where id = $iUrlId
    }
}
 
:D

ja ist denn heut scho Weihnachten
hab Deinen Vorschlag umgesetzt

so:

PHP:
if(array_key_exists('url', $_POST) && is_array($_POST['url'])) {
    $aUrls = $_POST['url'];
    foreach ($aUrls as $iUrlId => $sValue) {
        // update table set field = value where id = $iUrlId
		 $aendern=@mysql_query("UPDATE warenkorb SET url='$sValue' WHERE id='".$iUrlId."'"); 

    }
}

hat auf Anhieb funktioniert******!! :eek:

Vielen vielen Dank******

:D
 
und das ganze jetzt noch mal in schön:

PHP:
if(array_key_exists('url', $_POST) && is_array($_POST['url'])) {
    $aUrls = $_POST['url'];

    foreach ($aUrls as $iUrlId => $sValue) {
        // update table set field = value where id = $iUrlId
        
       mysql_query("UPDATE warenkorb SET url='{$sValue}' WHERE id= {$iUrlId}"); 

    }
}

und das selbe musst halt dann auch bei den anderen felder machen
mit dem @-Zeichen vor einem Funktionsaufruf unterdrückst du die Fehlerausgabe. Sollte man nicht verwenden!
Und bitte nicht nur Copy & Paste, sondern auch selber versuchen zu verstehen und daraus lernen ;-)
 
Zurück