for Schleife beenden

campari

Erfahrenes Mitglied
Moin,

warum wird die for-Schleife nicht beendet und nach header geleitet?
Er löscht zwar die entsprechenden Einträge, aber trotzdem würd ich gern, dass man bei Falscheingabe zusätzlich aus dem Login fliegt:

PHP:
$delcheck = $_POST['delmsg'];
if (intval($delcheck)) {
	foreach ($delcheck as $delid) {
	$sqldelmsg = "DELETE FROM message WHERE empfaenger='$id' AND ID='$delid'";
		if (!mysql_query($sqldelmsg)) {
		setcookie('Benutzer', '');
		setcookie('Session', '');
		header("Location: $url/index.php");
		}
	}
}
 
foreach, klar.

Ja, ist ein Array:

PHP:
while($sqlb = mysql_fetch_array($sql)) {
	echo "<input type='checkbox' name='delmsg[]' value='".$sqlb['ID']."'>";
}
 
Die if-Anweisung wird bei dir nur ausgeführt, wenn [phpf]mysql_query[/phpf] false liefert... Folgendes sollte funktionieren... Außerdem Usereingaben nie ungeprüft an die Datenbank schicken... Siehe SQL-Injektion... ID wird eine Zahl sein, nehme ich an, also bietet sich [phpf]intval[/phpf] an, bei Strings [phpf]mysql_real_escape_string[/phpf].
PHP:
<?php
$delcheck = $_POST['delmsg'];
if (intval($delcheck)) {
    foreach ($delcheck as $delid) {
    $sqldelmsg = "DELETE FROM message WHERE empfaenger='$id' AND ID='".intval($delid)."'";
        if (mysql_query($sqldelmsg)) {
        setcookie('Benutzer', '');
        setcookie('Session', '');
        header("Location: $url/index.php");
        }
    }
}  
?>
 
Zuletzt bearbeitet:
Die if-Anweisung wird bei dir nur ausgeführt, wenn [phpf]mysql_query[/phpf] false liefert
Ja, das soll sie auch. Wenn versucht wird, einen Datensatz zu löschen, der nicht dem User gehört, gibts nen gepflegten Rausschmiss.
Aber das funktioniert eben nicht.

ID wird eine Zahl sein, nehme ich an, also bietet sich [phpf]intval[/phpf] an
Das dachte ich durch die Abfrage 'if (intval($delcheck)) {' getan zu haben. Warum dann nochmal im query intval vorsetzen, wo alle nicht-intval gar nicht erst zur Ausführung gelangen. Hab ich da ein Gehirnfehler?
 
Lässt sich intval() überhaupt auf Arrays anwenden? Ich bin mir da nicht ganz sicher, aber ich denke mal nicht. Versuch mal das:

PHP:
<?php
  $delcheck = $_POST['delmsg'];

  foreach ($delcheck as $delid) {
    if (intval($delid)) {
      $sqldelmsg = "DELETE FROM message WHERE empfaenger='$id' AND ID='$delid'";
      if (mysql_query($sqldelmsg)) {
        setcookie('Benutzer', '');
        setcookie('Session', '');
        header("Location: $url/index.php");
      }
    }
  } 
?>
 
Zuletzt bearbeitet:
Hm? Wo ist da der Unterschied zu mAus Version?

Der if-Inhalt gelangt zum Ausdruck, wenn mysql_query erfolreich ist.
Ich suche aber das genaue Gegenteil.
Die Session soll ungültig sein, wenn kein entsprechender Datensatz gefunden wurde. oO
 
Dann probier mal das:

PHP:
<
?php
  $delcheck = $_POST['delmsg'];

  foreach ($delcheck as $delid) {
    if (intval($delid)) {
      mysql_query("DELETE FROM message WHERE empfaenger='$id' AND ID='$delid'");      
      if(mysql_affected_rows() == 0){
        setcookie('Benutzer', '');
        setcookie('Session', '');
        header("Location: $url/index.php");
      }
    }
  } 
?>
 
Ändert nichts.

Es werden die richitgen Datensätze gelöscht, aber die if-Anweisung zusätzlich greift nicht...
 
Zuletzt bearbeitet:
Was willst du denn nun bitte?

Der if-Inhalt gelangt zum Ausdruck, wenn mysql_query erfolreich ist.
Ich suche aber das genaue Gegenteil.
Die Session soll ungültig sein, wenn kein entsprechender Datensatz gefunden wurde. oO

Das ist das genaue Gegenteil, wenn 0 Datensätze gelöscht wurden wird die if-Anweisung ausgeführt.
 
Zurück