Schleifen Problem

kbit

Erfahrenes Mitglied
Hi ich gebe Datensätze aus einer DB aus und wenn man die checkbox auswählt und dann auf den submit Button löschen klickt, wird überprüft ob der Datensatz gelöscht werden darf oder nicht.

PHP:
echo'<input type="checkbox" name="check[]" value="'.$row['Bi_ID'].'">';

PHP:
if (isset($_POST['submit'])){

	foreach($_REQUEST["check"] as $check)
	{
$del="Select * From strassen  Where Bi_ID=$check";
$res = mysql_query($del)or die(mysql_error());
	if(mysql_num_rows($res) == 0){
		$del = "DELETE From bilder Where Bi_ID=$check";
		$res = mysql_query($del)or die(mysql_error()); 	
	}else{
		echo"Datensatz darf nicht gelöscht werden!";
	}

Das Problem was ich nun habe wenn ich mehr als einen Datensatz auswähle und der Datensatz darf nicht gelöscht werden, dann kommt natürlich die Fehlermeldung auch mehr als einmal was ja unschön ist. Möchte halt das die Fehlermeldung nur einmal ausgeben wird.
Irgendwie habe ich gerade einen denkfehler und komme nicht drauf wie man das ändern könnte.
 
PHP:
<?php

if (isset($_POST['submit'])) {

	foreach($_REQUEST["check"] as $check)
	{
		$del="Select * From strassen  Where Bi_ID=$check";
		$res = mysql_query($del)or die(mysql_error());
		if(mysql_num_rows($res) == 0)
		{
			$del = "DELETE From bilder Where Bi_ID=$check";
			$res = mysql_query($del)or die(mysql_error());     
		}
		else
		{
			if(!isset($error)
			{
			  $error = "Datensatz darf nicht gelöscht werden!";
			}
		}
	}
echo $error;
}
?>
So sollte es funktionieren.
 
Hi ich gebe Datensätze aus einer DB aus und wenn man die checkbox auswählt und dann auf den submit Button löschen klickt, wird überprüft ob der Datensatz gelöscht werden darf oder nicht.

PHP:
echo'<input type="checkbox" name="check[]" value="'.$row['Bi_ID'].'">';

PHP:
if (isset($_POST['submit'])){

	foreach($_REQUEST["check"] as $check)
	{
$del="Select * From strassen  Where Bi_ID=$check";
$res = mysql_query($del)or die(mysql_error());
	if(mysql_num_rows($res) == 0){
		$del = "DELETE From bilder Where Bi_ID=$check";
		$res = mysql_query($del)or die(mysql_error()); 	
	}else{
		echo"Datensatz darf nicht gelöscht werden!";
	}

Das Problem was ich nun habe wenn ich mehr als einen Datensatz auswähle und der Datensatz darf nicht gelöscht werden, dann kommt natürlich die Fehlermeldung auch mehr als einmal was ja unschön ist. Möchte halt das die Fehlermeldung nur einmal ausgeben wird.
Irgendwie habe ich gerade einen denkfehler und komme nicht drauf wie man das ändern könnte.

checkbox auswählt und dann auf den submit Button löschen klickt, wird überprüft ob der Datensatz gelöscht werden darf oder nicht.



PHP:
if (isset($_POST['submit'])){
   $error = false;
   foreach($_REQUEST["check"] as $check)
   {
      $del="Select * From strassen  Where Bi_ID=$check";
      $res = mysql_query($del)or die(mysql_error());
      if(mysql_num_rows($res) == 0){
         $del = "DELETE From bilder Where Bi_ID=$check";
	 $res = mysql_query($del)or die(mysql_error()); 	
      }else{
         $error = true;	
      }
   }
   if($error){
     echo"Datensatz darf nicht gelöscht werden!";
   }
}
 
Danke das war ja mal eine schnelle Anwort.

Hab noch eine Frage dazu und zwar möchte ich das wenn die Schleife mit dem löschen die Datensätze gelöscht hat, das eine andere Seite aufgerufen wird.


PHP:
if(mysql_num_rows($res) == 0)
        {
            $del = "DELETE From bilder Where Bi_ID=$check";
            $res = mysql_query($del)or die(mysql_error());   
            header('Location: pearauth.php?Name=bilder');
	   exit;  
        }

Ich hatte es mit header versucht, das Problem ist wenn ich mehr als eine checkbox auswähle nur ein Datensatz gelöscht wird weil dann header eintritt. Ich möchte aber das erst nachdem alle ausgewählten Datensätze bearbeitet wurden die andere Seite aurgerufen wird ?
 
PHP:
if (isset($_POST['submit'])){
   $error = false;
   foreach($_REQUEST["check"] as $check)
   {
      $del="Select * From strassen  Where Bi_ID=$check";
      $res = mysql_query($del)or die(mysql_error());
      if(mysql_num_rows($res) == 0){
         $del = "DELETE From bilder Where Bi_ID=$check";
     $res = mysql_query($del)or die(mysql_error());     
      }else{
         $error = true;    
      }
   }
   if($error){
       echo"Datensatz darf nicht gelöscht werden!";
   }else{
       header('Location: pearauth.php?Name=bilder');  
   }
}

@Felix Jacobi

Wie kann man doppelte Posts verhindern. Wäre doch ein schönes Feature, z.B. per Layer user xy antwortet gerade.

Gruss
 
Ich hab noch ein Problem beim Ändern und zwar wenn ich so wie in dem Bsp auf ändern klicke bekomme ich alle mit der checkbox ausgewählten Datensäzte angezeigt.

PHP:
foreach($_REQUEST["check"] as $check){

$sql = "SELECT U_ID,U_Name,U_Vorname
           FROM user
           Where U_ID=$check";

$result = mysql_query($sql) OR die(mysql_error());
    $row = mysql_fetch_assoc($result);
echo "   <table>";
    echo "        <tr>";
    echo "           <td><label for=\"name\"><B>Name:</B></label>\n";
    echo "            <input type=\"hidden\" name=\"check[]\" id=\"name\" value=\"".$row['U_ID']."\"/>\n";
    echo "            <td><input type=\"text\" name=\"name\" size=\"30\"id=\"name\" value=\"".$row['U_Name']."\"/>\n";
    echo "        </tr>";
	echo "        <tr>";
	echo "            <td><label for=\"vorname\"><B>Vorname:</B></label>\n";
    echo "            <td><input type=\"text\" name=\"vorname\" size=\"30\" id=\"vorname\" value=\"".$row['U_Vorname']."\"/>\n";
	echo "        </tr>";

}

Wenn ich auf speichern klicke sollen diese Datensätze geändert werden.

PHP:
if(isset($_POST['sub']))  {

foreach($_REQUEST["check"] as $check){
$sql = "UPDATE
            user
             SET
             U_Name='".$_POST['name']."',
	     U_Vorname='".$_POST['vorname']."'
             Where U_ID=$check";
mysql_query($sql) OR die(mysql_error());
}
}

Das funktioniert aber nicht und zwar ändert er mir dann alle ausgewählten datensätze also ich ändere am datensatz 1 etwas und er übernimmt das für alle weiteren ausgewählten Datensätze ?
 
Was steht denn in $row['Bi_ID'] drin? Ich meine damit ist der Wert eindeutig?
 
Zuletzt bearbeitet von einem Moderator:
@Felix Jacobi

Wie kann man doppelte Posts verhindern.
Indem du einfach den "Ändern"-Button deines Beitrags anklickst, um die "zweite" Antwort nachzureichen. Sollte eigentlich nicht so schwer sein.

Ansonsten haben wir Moderatoren die Möglichkeit, solche Beiträge, die im Minutentakt gepostet werden, zusammenzuführen, wie bei dir in den vergangenen Tagen mehrfach geschehen.
 
Indem du einfach den "Ändern"-Button deines Beitrags anklickst, um die "zweite" Antwort nachzureichen. Sollte eigentlich nicht so schwer sein.

Schon klar, meinte eine Info beim schreiben, wäre nicht schlecht. siehe #2, #3
 
Zuletzt bearbeitet von einem Moderator:
Zurück