Unterschiedliche Werte gleichzeitig in MySQL-Tabelle schreiben

qsrs

Erfahrenes Mitglied
Hallo,

hole Datensätze aus einer DB. Jeder Datensatz bekommt eine Checkbox mit der ID mit. Aktiviert soll true, und nicht aktiviert false in den jeweiligen Datensatz über ein Formular schreiben. Mein Problem ist nun, dass wenn einige schon aktiviert sind, diese den Wert true nicht ändern sollen und die, die nicht aktiviert sind wiederum false in der Tabelle behalten sollen. Die Checkboxen werden mir, wenn die Datensätze angezeigt werden, schon aktiviert bzw. wenn der Wert in der Tabelle false hat, nicht aktiviert ausgegeben.

Es kann also einige aktivierte, und einige nicht aktivierte Checkboxen geben. Nun möchte ich quasi in einer Abfrage überprüfen welche aktiviert sind, und welche nicht. Habe folgenden Versuch gestartet:
PHP:
 for ($i = 0; $i < count ($select2); $i++) {
$sql3 = "UPDATE `$dbtable6` SET `filetype_locked` = 'true' WHERE `id` = '".$select2[$i]."'"; 
mysql_query ($sql3, $dbconnect);
$sql5 = "SELECT * FROM `$dbtable6` WHERE `id` != '".$select2[$i]."'"; 
$query5 = mysql_query ($sql5, $dbconnect);
$array5 = mysql_fetch_array ($query5);
$sql6 = "UPDATE `$dbtable6` SET `filetype_locked` = 'false' WHERE `id` = '".$array5[id]."'"; 
mysql_query ($sql6, $dbconnect);
}
 
Du lisst Datensätze aus. z.B. 3 sind aktiviert, 5 sind nicht aktiviert. Das wird dann mit checkboxen angezeigt. Jetzt wenn der User eine ändert möchtest du das in der DB updaten oder?

Wenn die anderen aber den gleichen Status sowieso behalten, kannst ja einfach eine Schlaufe über alle machen, und abfragen ob der aktuelle Wert, derselbe ist wie in der DB. Wenn ja, lass es so, wenn nein. UPDATE ausführen.
Dann kannst du aber genausogut einfach eine Schlaufe machen und für alle beiträge einen UPDATE ausführen. Auch für diejenigen, die nicht geändert wurde. Macht das ganze sogar noch schneller.

Oder habe ich was falsch verstanden?

MFG
redX
 
Hallo,

danke für die Antwort. Nein, Du hast alles richtig verstanden, so möchte ich es umsetzen. Allerdings habe ich keine Ahnung, wie ich deinen Vorschlag umsetzen soll. Bei den aktivierten Checkboxen ist es, denke ich, kein Problem, das funktioniert auch. Was nicht funktioniert, sind die nicht aktivierten Checkboxen, die liefern ja keinen Wert. Also frage ich zuerst alle Datensätze ab, die nicht mit den ausgewählten Ids übereinstimmen ($sql5 = "SELECT * FROM `$dbtable6` WHERE `id` != '".$select2[$i]."'"; ). Und genau das funktioniert nicht. Was mache ich falsch? Wie sollte ich vorgehen? Danke für Antworten.
 
Hallo,

habe noch einen zweiten Versuch gestartet, welcher ebenfalls nicht funktioniert hat.
PHP:
 for ($i = 0; $i < count ($select2); $i++) {
$sql3 = "UPDATE `$dbtable6` SET `filetype_locked` = 'true' WHERE `id` = '".$select2[$i]."'"; 
mysql_query ($sql3, $dbconnect);
$sql6 = "UPDATE `$dbtable6` SET `filetype_locked` = 'false' WHERE `id` != '".$select2[$i]."'"; 
mysql_query ($sql6, $dbconnect);
}
Das müsste doch eigentlich funktionieren. Erst frage ich alle aktivierten ab, also die mit Wert, und dann alle restlichen, welche nicht mit $select2[$i] übereinstimmen. Verstehe ich nicht. Kann mir jemand helfen?

Vielen Dank.
 
Hmpf, verstehe dein Code nicht genau.. Habe da mal was kleines geschrieben:

PHP:
<?php
if (!isset($send)) {
?>
<html>
<body>
<form action="test.php" method="post">
<input type="checkbox" name="meinFeld1" value="1">Mein Text<br>
<input type="checkbox" name="meinFeld2" value="1">Mein Zweiter Text<br>
<input type="checkbox" name="meinFeld3" value="1">Mein Dritter Text<br>
<input type="submit" name="send" value="3">
</form>
</body>
</html>
<?php 
}
else {
	for ($counter = 1; $counter < $_POST['send']+1; $counter++) {
		if (isset($_POST['meinFeld'.$counter]))
			echo "meinFeld" . $counter . " = 1<br>";
		else
			echo "meinFeld" . $counter . " = 0<br>";
	}
}
?>

Das funktioniert wenn das Value vom senden Button die Anzahl der Checkboxen sind und die Namen der Checkboxen durchnummeriert sind...

MFG
redX
 
Hallo redX,

vielen Dank für deine bisherige Hilfe. Leider kann ich meine Checkboxen nicht durchnummerieren, da ich u.a. über ein Javascript alle gleichzeitig auswählen möchte. Die Checkboxen sehen so aus:

PHP:
<input name=\"select2[]\" type=\"checkbox\" id=\"select2[]\" value=\"".$array[$i][id]."\">
In Value steht dann die Id.

Des Weiteren habe ich dann immer noch das Problem, dass nicht aktivierte Checkboxen wieder keinen Wert liefern. Schließlich sollen bereits aktivierte Checkboxen auch wieder deaktiviert werden, und dies in der Tabelle mit dem Wert false aktualisiert werden. Gleichzeitig sollen nicht aktivierte Checkboxen aktiviert werden, und dies in der Tabelle mit true aktualisiert werden. Und genau darin besteht mein Problem. In den nicht aktivierten Checkboxen, die keinen Wert liefern.

Hoffe Du kannst mir noch einmal helfen.

Vielen Dank.
 
Zurück