Markierte Nachrichten löschen

hmmm also bin mir sicher dass das Post einen Wert beinhaltet.
hab den nämlich an einer variable übergeben und mit echo ausgegben.
Dann wurde die Nachrichten id ausgeben.

Müsste also an was anderes liegen oder?
 
Was sagt denn der var_dump vom Post?
Kommt ein Array an oder ein einfacher String?
Wie hast du das "echo" durchgeführt?

Die Fehlermeldung, zeigt indirekt dass es kein Array ist oder leer.
Vielleicht ist es auch nur ein String wenn nur eins angeklickt wird. Dann musst du vorher Prüfen was es ist und demnach implode nutzen für Arrays oder ohne implode den einfachen Vergleich (WHERE) den du vorhin hattest.
 
also es ist so, wenn ich die eckigen klammern lasse:

PHP:
<input type="checkbox" name="msg_del[]" value="<? echo $nachricht_id ?>" />

 $name = $_POST["msg_del[]"];
var_dump  ($name);

wird hier NULL angezeigt,


so jedoch, sprich wenn ich die eckigen Klammern weg lasse:

PHP:
<input type="checkbox" name="msg_del" value="<? echo $nachricht_id ?>" />

 $name = $_POST["msg_del"];
var_dump  ($name);

wird die Nachricht id angezeigt. Dann handelt es sich jedoch um keinen array.


Muss ich vielleicht auch das msg_del[] als array irgendwie deklarieren? oder woran liegts nun?


lg thehasso
 
Lass dir einfach mal ausgeben, was bei Verwendung der eckigen Klammern übergeben wird.
PHP:
var_dump( $_POST );
Dort wirst du sehen, dass dein Feld nicht mit dem Namen msg_del[] erscheinen wird, sondern noch immer nur als msg_del.
Dafür ist es kein String mehr, sondern ein Array.
 
hmm langsam weiß ich nicht mehr weiter...es wird NULL angezeigt. Was möchtest du mir denn vermitteln, versteh dich nicht so ganz.
 
Dann tust du nicht das, was ich gesagt habe.

Denn selbst wenn keine Post-Daten vorhanden sind, ist $_POST ein Array - nur eben leer. Es wird niemals NULL ausgegeben werden, ausser man hilft manuell nach, indem man die Variable überschreibt.
 
hallo deluxe,

du hast recht, sorry, es erscheint doch etwas:

PHP:
array(5) { ["betreff"]=>  string(0) "" ["empfaenger"]=>  string(12) "yuppi rezek " ["empfaenger_id"]=>  string(1) "2" ["msg_del"]=>  array(1) { [0]=>  string(3) "290" } ["loeschen"]=>  string(27) "Makierte Nachricht löschen" }

die nachrichten id ist in dem Fall die 290.....
 
Und daran sehen alle nun, dass $_POST["msg_del"] ein Array ist und implode() hierdrauf sicherlich funktioniert.

Von daher kann es diese Fehlermeldung garnicht geben mit dem von dir angegebenen Code, außer du hast nichts zum löschen ausgewählt und führst diese Zeilen mit jedem Aufruf der Seite aus.

Fehlermeldung:
UPDATE nachrichten SET empfaengergeloescht = '0' WHERE `nachricht_id` IN ()
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1

PHP:
	$SQL = "UPDATE nachrichten SET " ;
	$SQL = $SQL . " empfaengergeloescht = '" . $empfaenger_remove . "'";
	$SQL = $SQL . " WHERE `nachricht_id` IN (" . implode(",", $_POST["msg_del"]) . ")"; 
	
	
	mysql_query($SQL) or die('<pre>'.htmlspecialchars($SQL."\n".mysql_error()).'</pre>');

Zu Not lass dir einfach nur implode(",", $_POST["msg_id"]) ausgeben.
 
hier könnt ihr euch auch mal die Fehlmerldung ansehen:

Bild Hosted bei ImagesUp.de


Ich setzte die Nachrichten im Nachrichteneingang ein häckchen das ich auf Null updaten möchte, daraufhin klick ich auch Makierte Nachrichten löschen und es folgt die weiterleitung auf loesch_box wo die Fehlmerldung ausgebeben wird.

PHP:
	$SQL = "UPDATE nachrichten SET " ;
	$SQL = $SQL . " empfaengergeloescht = '" . $empfaenger_remove . "'";
	$SQL = $SQL . " WHERE nachricht_id  IN (" . implode(",", $_POST["msg_del[]"]) . ")"; 
	
	
	mysql_query($SQL) or die('<pre>'.htmlspecialchars($SQL."\n".mysql_error()).'</pre>');

das ist der code in der Datei loesch_box.... indem $_POST["msg_del[]"]) steht in den runden Klammern der name des Feldes den ich unter
PHP:
<input type="checkbox" name="msg_del[]" value="<? echo $nachricht_id ?>" />
name in der checkbox verpasst habe. Also ich seh da kein Fehler meiner seits.

gruß
 
PHP:
    $SQL = "UPDATE nachrichten SET " ;
    $SQL = $SQL . " empfaengergeloescht = '" . $empfaenger_remove . "'";
    $SQL = $SQL . " WHERE nachricht_id  IN (" . implode(",", $_POST["msg_del"]) . ")"; 
    
    
    mysql_query($SQL) or die('<pre>'.htmlspecialchars($SQL."\n".mysql_error()).'</pre>');

Du hast auf den Array falsch zugegriffen.

Es heißt:
PHP:
$_POST['msg_del']

Im übrigen, hat es Zodiac auch so geschrieben.
 
Zurück