Aaahh, ja. Das klappt so. Sehr schön. Danke.
Allerdings gibt es einen kleinen Denkfehler im Aufbau (auf meiner Seite versteht sich). Derzeit werden die Daten abgerufen. Wenn Feld 'aktiv' 'ja' ist, dann wird ein input mit checked ausgegeben. Wenn Feld 'aktiv' 'no' ist, dann input ohne checked. Da diese Daten dann nicht mitgeliefert werden, bekommt jedes 'no'-input-Feld noch ein hidden mit auf den Weg geschickt (s.o.). Was allerdings nicht bedacht war: Wenn man eine Liste mit und ohne Häkchen hat und die Häkchen neu setzt, z.B. ein Häkchen entfernt, dann gibt es dafür kein hidden-Feld. Blöde.
Also bin ich anders vorgegangen:
PHP-Code:
if($status == 'ja'){
echo "\n\t\t<td><input type=\"checkbox\" name=\"auswahl[]\" value=\"".$ID."\" checked=\"checked\"></td>";
}else{
echo "\n\t\t<td><input type=\"checkbox\" name=\"auswahl[]\" value=\"".$ID."\"></td>";
}
Kein hidden-Feld mehr! Weil ich jetzt nämlich nach der Übergabe der Daten alle auf 'no' setze und erst dann alle die, die ein 'ja' haben mit Hilfe der übergebenen ID mit 'ja' update:
PHP-Code:
$sqlab1 = mysql_query("UPDATE tabelle SET aktiv = 'no'");
for($x=0;$x<count($auswahl);$x++) {
$sqlab = mysql_query("UPDATE tabelle SET aktiv = 'ja' WHERE ID = '$auswahl[$x]'");
}
So klappt's.
Kleiner Schönheitsfehler: Am Ende des Speicher-Skripts habe ich sonst immer noch eine Anweisung, die schaut, ob etwas verändert wurde oder nicht und entsprechend eine Rückmeldung gibt:
PHP-Code:
mysql_db_query($db_name, $sqlab);
$num = mysql_affected_rows();
if($num>0) {
echo "<p>Der Datensatz wurde erfolgreich geändert.</p>";
}else{
echo "<p>Es wurde kein Datensatz verändert oder es liegt ein Datenbankproblem vor.</p>";
}
Derzeit rutscht er - obwohl das oben mit dem Eintragen von 'no' und 'ja' richtig klappt - in die Fehler-Zeile. Er sagt, es wurde nichts verändert, obwohl etwas verändert wurde. Wieso?
Okay, hier einmal meine komplette Speicher-Datei, an die die Daten übergeben werden und die auch die DB-Aktualisierung macht - nur eben nicht die richtige Meldung ausspuckt. Vielleicht wird es dann einem da draußen besser ersichtlich...

:
PHP-Code:
include ('zugangsdaten.php');
$conn = mysql_connect($db_server,$db_user,$db_passwort) or die (mysql_error());
$link = mysql_select_db($db_name, $conn) or die (mysql_error());
if (isset($_POST['mode']) && $_POST['mode'] == "speichere_aktiv"){
$sqlab1 = mysql_query("UPDATE tabelle SET aktiv = 'no'");
for($x=0;$x<count($auswahl);$x++) {
$sqlab = mysql_query("UPDATE tabelle SET aktiv = 'ja' WHERE ID = '$auswahl[$x]'");
}
mysql_db_query($db_name, $sqlab);
$num = mysql_affected_rows();
if($num>0) {
echo "<p>Der Datensatz wurde erfolgreich geändert.</p>";
}else{
echo "<p>Es wurde kein Datensatz verändert oder es liegt ein Datenbankproblem vor.</p>";
}
mysql_close($conn);