Hi,
sorry hatte erst jetzt zeit mich wieder damit zu beschäftigen.
funktioniert lieder nicht ganz.
Wenn ich im Formular den Array-Key selbst mit $i=0 und $i++ hochzählen lasse, laufen bei der Auswertung alle Daten in die (!isset)-Verzweigung.
Ich denke, dieses hochzählen ist auch nicht nötig da PHP von sich aus von 0-x den Array-Key setzt, denn ohne eigenes zutun funktioniert es.
=> ich weiß, Du wolltest ein druchgängiges Array über alle Checkboxen erzeugen in dem die nicht ausgewählten einfach fehlen, aber wie gesagt, wenn ich dass so mache landen alle Daten beim löschen so hab ich es weggelassen. PHP erzeugt das Array erst beim Absenden, heißt bei 3 ausgewählten Checkboxen hat mein Array die Keys [0][1][2].
Bei der Auswertung bzw. bei 'DELETE WHERE -> $_POST["f"][$x]' wird jetzt ein logischerweise nicht existierender Wert eingesetzt, da dieser nicht übergeben wird.
Heißt ich hab keine Channel_id die ich löschen könnte.
Ich hab diesen Part der process.php ausgegliedert und als test.php umbenannt.
Ich lasse mal die übergebenen Daten anzeigen (sieht z.B. so aus wenn 4 u. 6 abgewählt wurde):
-Anzeige test.php -----------------------------------
Anzahl der gefundenen Datensätze: 6
unverändert oder eintragen: 0- Channel-ID: 1
unverändert oder eintragen: 1- Channel-ID: 2
unverändert oder eintragen: 2- Channel-ID: 3
unverändert oder eintragen: 3- Channel-ID: 5
zu löschen: Array_key: 4 => Channel-ID:
zu löschen: Array_key: 5 => Channel-ID:
---------------------------------------------------------
hier die test.php
PHP-Code:
<?php
// neuen News-Channel eintragen/austragen
if ($_POST['channel'] == 'abonieren'){
include('./db_connect/connect_sql.php');
$result = mysql_query("SELECT COUNT(channel_id) AS anzahl FROM news_channel_pos WHERE user_id = ". $_POST['user_id'] ." ", $db);
if(!$result){echo mysql_error($db);}
$zahl = mysql_fetch_assoc($result);
$ds = $zahl['anzahl'];
echo "Anzahl der gefundenen Datensätze: ". $ds ."<br><br>";
reset ($_POST['channel_id']);
$channel_id = $_POST['channel_id'];
//auswertung der Checkboxen
for($i=0;$i<$ds;$i++)
{
if(!isset($channel_id[$i]))
{
// hier wird gelöscht
echo "zu löschen: Array_key: $i => Channel-ID: ". $channel_id[$i] ."<br>";
} else {
echo "unverändert oder eintragen: ". $i ."- Channel-ID: ". $channel_id[$i] ."<br>";
}
}
// header("Location: control_center.php?auswahl=5");
header("Cache-Control: no-store, no-cache");
}
?>
Hab beim Gast-Zugang wieder ein paar Channels eingetragen, da kannst Du Dir das Verhalten direkt ansehen.
Gruß
Alex