2010-12-08 23 views
0

J'ai le code ci-dessous qui boucle à travers des cases à cocher sélectionnées et exécute une instruction sql.PHP pour l'erreur de boucle Offset non défini

if (isset($_POST['delete'])) 
{ 
    for($i=0;$i<$recordcount;$i++)      
    {       
     $deleteid = isset($_POST['checkbox'][$i]); 
     echo "ID = ".$deleteid."<br />"; //Error checking 
     $sqldelete = "DELETE FROM customer WHERE cus_ID = ".$deleteid.""; 
     echo $sqldelete."<br />"; //Error checking 
     $deleters = $conn->Execute($sqldelete);     
    } 
} 

Cette exécute la requête SQL, mais il essaie courir une fois de plus que nécessaire, i.e. je vérifie deux cases à cocher, SQL exécute 3fois. Cela génère donc une erreur car l'ID est vide. J'obtiens également un décalage non défini 1.

Un conseil? Merci.

+0

quel est le recordcount de $? –

+0

$ recordcount est la quantité de lignes renvoyées par l'instruction de sélection SQL. – Elliott

+2

isset() retournera un booléen vrai ou faux dans $ deleteid, est-ce vraiment ce que vous voulez? –

Répondre

2
if (isset($_POST['delete'])) 
{ 
    for($i=0;$i<$recordcount;$i++)      
    {       
     $deleteid = isset($_POST['checkbox'][$i]); 
     if ($deleteid) { 
      $sqldelete = "DELETE FROM customer WHERE cus_ID = ".$_POST['checkbox'][$i]; 
      echo $sqldelete."<br />"; //Error checking 
      $deleters = $conn->Execute($sqldelete);     
     } 
    } 
} 

et échapper à votre entrée pour la sécurité

+0

Parfait, merci :) – Elliott

3

Cette ligne est certainement faux: Peut-être que vous vouliez dire comme

$deleteid = isset($_POST['checkbox'][$i]); 

cela?

$deleteid = isset($_POST['checkbox'][$i]) 
    ? intval($_POST['checkbox'][$i]) : false; 
if ($deleteid === false) { 
    continue; 
} 

// rest of the code follows 

En outre, vous pouvez probablement vous débarrasser de $recordcount et faire un foreach sur $_POST['checkbox'].

+0

+1 pour intVal() –

0

essayer cette

if(isset($_POST['delete'])) 
    { 
     $i=0; 
     foreach($_POST['checkbox'] as $user) 
     { 
      $sqldelete = "DELETE FROM customer WHERE cus_ID = ".$user.""; 
      echo $sqldelete."<br />"; //Error checking 
     $deleters = $conn->Execute($sqldelete); 
      $i++; 
     } 

    }