atlantyz
Erfahrenes Mitglied
Hallo zusammen,
ich hänge mal wieder an einem Problem fest und weiß grad nicht, wie ich es angehen soll, denke ich hab mal wieder einen Denkfehler:
Also ich hab zwei Arrays. In dem einen stehen Werte aus einem Formular, die per POST geschickt wurden, in dem anderen stehen die Spaltenüberschriften meine SQL- Tabelle.
Nun habe ich folgendes Problem: in dem Formular gibt es Checkboxen (ca. 30 Stück). Wenn sie deaktiviert werden, soll eine "0" in die Datenbank geschrieben werden, bei Aktivierung eine "1". Bei Aktivierung ist das kein Problem, da ich ja in mein Array ein "on" geschrieben bekomme. Wenn die Checkbox deaktiviert ist, bekomme ich den Checkbox- Namen ja erst gar nicht übermittelt.
Da es so viele sind und ich nicht alle prüfen will ob es sie gibt oder nicht, war die Idee die vorhandenen Spaltenüberschriften meiner Tabelle auszulesen (bis auf 3 Felder sind die identisch mit den Formularfeldnamen) und dann zu prüfen, ob es das Feld eig. geben sollte oder nicht.
Und da hänge ich einfach fest.
Ich hab mal folgendes gebastelt:
Ich hab jetzt schonmal alle Werte, die sowohl übermittelt (POST) als auch in der Tabelle vorhanden sind. Aber wie bekomme ich jetzt noch die heraus, die nur in der Tabelle sind und eben nicht übermittelt wurden (also praktisch den ELSE- Zweig der unteren Foreach- Schleife)? Oder gehe ich das ganze schon falsch an?
Ich bitte um Hilfe.
ich hänge mal wieder an einem Problem fest und weiß grad nicht, wie ich es angehen soll, denke ich hab mal wieder einen Denkfehler:
Also ich hab zwei Arrays. In dem einen stehen Werte aus einem Formular, die per POST geschickt wurden, in dem anderen stehen die Spaltenüberschriften meine SQL- Tabelle.
Nun habe ich folgendes Problem: in dem Formular gibt es Checkboxen (ca. 30 Stück). Wenn sie deaktiviert werden, soll eine "0" in die Datenbank geschrieben werden, bei Aktivierung eine "1". Bei Aktivierung ist das kein Problem, da ich ja in mein Array ein "on" geschrieben bekomme. Wenn die Checkbox deaktiviert ist, bekomme ich den Checkbox- Namen ja erst gar nicht übermittelt.
Da es so viele sind und ich nicht alle prüfen will ob es sie gibt oder nicht, war die Idee die vorhandenen Spaltenüberschriften meiner Tabelle auszulesen (bis auf 3 Felder sind die identisch mit den Formularfeldnamen) und dann zu prüfen, ob es das Feld eig. geben sollte oder nicht.
Und da hänge ich einfach fest.
Ich hab mal folgendes gebastelt:
PHP:
$spalten = array();
db_connect();
$sqlab = "Describe mod_stamm_anb";
$ergab = mysql_query($sqlab);
mysql_close();
while ($spalte = mysql_fetch_assoc($ergab)) {
$spalten[$spalte["Field"]] = "";
}
$werte = array();
$i = 0;
foreach($_POST as $variable) {
$name = array_keys($_POST);
if (array_key_exists($name[$i], $spalten)) {
if(strpos($name[$i], "check") || strpos($name[$i], "speichern")) {
$i=$i+1;
continue;
}
if ($variable == "on") {
$variable = "1";
} else {
$variable = htmlentities($variable, ENT_QUOTES, 'UTF-8');
}
$werte[$name[$i]] = $name[$i]. "= '".$variable."'";
}
$i=$i+1;
}
$timestamp = time();
$sql = "UPDATE mod_stamm_anb SET ".implode(', ',$werte)." WHERE id = '".$_POST["id_speichern"]."'";
Ich hab jetzt schonmal alle Werte, die sowohl übermittelt (POST) als auch in der Tabelle vorhanden sind. Aber wie bekomme ich jetzt noch die heraus, die nur in der Tabelle sind und eben nicht übermittelt wurden (also praktisch den ELSE- Zweig der unteren Foreach- Schleife)? Oder gehe ich das ganze schon falsch an?
Ich bitte um Hilfe.