problema con cancellazione multipla

prinzart

Utente Attivo
26 Feb 2007
40
0
0
ciao a tutti,
ho un motore di ricerca dove escono fuori dei record di una anagrafica a fianco di ogni record c'è il pulsante elimina record, la cancellazione funziona però solo se ne seleziono uno, se ne seleziono più di uno continua a cancellarmene solo uno, gli altri li ignora. Dove sbaglio?


PHP:
<?php	
while($row2=mysql_fetch_array($result2)){
?>
<form enctype="multipart/form-data" name="formcancella" action="<?=$PHP_SELF?>" method="post">


  <table width="950" height="20" border="0" align="center" cellpadding="0" cellspacing="0">
                  <tr>
                    <td height="8" bgcolor="<?php echo $colore_sfondo; ?>"></td>
                  </tr>
                   <tr>
                    <td height="20" align="right" bgcolor="<?php echo $colore_sfondo; ?>">
                    
                    
                    
                    
                    <table width="950" height="20"  border="0" cellpadding="0" cellspacing="0">
                      <tr>
                        <td width="250">
                        
<img src="../images/icona_elenco_triangolo_grigio.gif" width="10" height="10" border="0"> 
<?=$row2['ragione_sociale']?>

</td>
                        <td width="450">
                        
        
<?php if ($row2['indirizzo']!=""){ ?><?=$row2['indirizzo']?><?php }?>

<?php if ($row2['cap']!=""){ ?> - <?=$row2['cap']?><?php }?>

<?php if ($row2['provincia']==""){ ?> - <?=$row2['citta']?><?php }?>

<?php if ($row2['comune']!=""){ ?> - <?=$row2['comune']?><?php }?>
<?php if ($row2['provincia']!=""){ ?> - (<?=$row2['provincia']?>)<?php }?>


</td>
                      <td width="100">
                      
                    
<a href="admin_ins_anagrafica2.php?id=<?=$row2[id_login2]?>&pagina=6" class="tre">segue</a>
                              
                        </td>
                                   <td width="150">
                      
     
           


<?php
$id = $row2[id_anagrafica];
?>
                            
<table width="230" height="20" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td width="230" align="left"><input type="checkbox" name="delete[]" value="<?php echo($id); ?>"> <span class="testo_rosso_bold3">Elimina <?=$id?></span></td>
      </tr>
    </table> 
                     
                                     
       
           
                 
               
           
                             
</td>
</tr>
</table>
                  
                  
                  
                  
                  
                  
                  </td>
          </tr> 

<tr>
                    <td height="8" bgcolor="<?php echo $colore_sfondo; ?>"></td>
  </tr>
                  <tr>
                    <td height="1" bgcolor="#999999"></td>
                  </tr>
   </table>
   
   
   
   
    <table width="950" height="20" border="0" align="center" cellpadding="0" cellspacing="0">
 <tr>
                    <td height="8"></td>
                  </tr>
                  <tr>
                    <td height="1" bgcolor="cccccc"></td>
                  </tr>
                  <tr>
                    <td height="8"></td>
                  </tr>
<tr>
 <td height="30" align="center">
<input type="hidden" name="cancella" value="1">

&nbsp;<input name="submit" type="submit" class="pulsante" value="cancella">
&nbsp;</td>
</tr>
<tr>
                    <td height="8"></td>
                  </tr>
                  <tr>
                    <td height="1" bgcolor="cccccc"></td>
                  </tr>
                  <tr>
                    <td height="8"></td>
                  </tr>
</table>


</form> 
<?php
}
?> 






<?
if ($cancella==1){

$comma_separated = implode(",", $_POST['delete']);

$sql = "DELETE a_anagrafica, a_login, a_ana_preferenze
 
FROM a_anagrafica 

INNER JOIN a_login 
ON a_anagrafica.id_anagrafica = a_login.id_anagrafica

INNER JOIN a_ana_preferenze 
ON a_login.id_login = a_ana_preferenze.id_login

WHERE a_anagrafica.id_anagrafica = $comma_separated";

$query=mysql_query($sql); 

}
?>
 
Modifica così la query:
PHP:
$sql = "DELETE a_anagrafica, a_login, a_ana_preferenze 
  
FROM a_anagrafica  

INNER JOIN a_login  
ON a_anagrafica.id_anagrafica = a_login.id_anagrafica 

INNER JOIN a_ana_preferenze  
ON a_login.id_login = a_ana_preferenze.id_login 

WHERE a_anagrafica.id_anagrafica IN($comma_separated)";
 
ciao
prova con il ciclo foreach
PHP:
<?php
if ($cancella==1){
	foreach($_POST['delete'] AS $ch => $val){
		$sql = "DELETE a_anagrafica, a_login, a_ana_preferenze
				FROM a_anagrafica 
				INNER JOIN a_login 
				ON a_anagrafica.id_anagrafica = a_login.id_anagrafica
				INNER JOIN a_ana_preferenze 
				ON a_login.id_login = a_ana_preferenze.id_login
				WHERE a_anagrafica.id_anagrafica = $val";
		$query=mysql_query($sql);
	}
}
?>

p.s.
non usare lo shorttag <? ma <?php
 
Ma sei un grandeee!!! Hai trovato subito la soluzione! Ora funziona benissimo grazie!!:) :byebye:
 
Ce l'ho con alessandro :)

scusa borgo italia il tuo non l'ho provato visto che avevo risolto grazie comunque dell'aiuto
 

Discussioni simili