Newsgroup: it.comp.www.php
Titolo: cancellazioni multiple

ola!
Come faccio a cancellare piů record selezionati tramite
check-box(sostanzialmente come l'e-mail di libero)?In pratica dovrei contare il
numero di check selezionate, portarmi questo numero nella pagina dove effettuo
la delete e fare un ciclo, ma non ho idea di come fare.-Grazie per la
collaborazione.
-- 
Posted from  [80.16.165.106] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Come faccio a cancellare più record selezionati tramite

Potresti al submit del form (per l'eliminazione) chiamare una funzione
Javascript che ti controlla tutti gli elementi presenti nel suddetto form
che hanno nome CHECK_{numero mail}, naturalmente il ciclo ti prende gli
elementi con nome che inizia con CHECH_*,  * è un numero che decidi tu
quando ti carichi la pagina ( una sorta di id della mail ), in un campo
hidden ti costruisci lista delle mail da cancellare esempio 4,5,7,9 ecc....
(sempre la funz Javascript), nella pagina action scorri questa variabile che
ti ritrovi $mail_to_delete ( è lo stesso nome del campo hidden nella pagina,
lo sai, vero?) e cancelli quello che devi cancellare.
Potrebbe andare bene?

 fare.-Grazie per la collaborazione.
avevo già risposto + di una volta alla stessa domanda...
lasciando stare JS, VBS e compagnia bella ma usando il solito HTML 
statico...
se tu hai 5 records con id da 1 a 5 (supponiamo l'id come primo campo della 
select)
while ($row=db_fetch_row($result))
    	{
    	print "<input type='checkbox' name='pippo".$row[0]."' value='Y'>\n";
    	}
in questo modo, al load dello script successivo, avrai, solo per i check 
selezionati:
$pippo1='Y'
$pippo2='Y'
$pippo5='Y'
quindi ti basterà fare un list dei parametri passati che iniziano con 
'pippo' e ciclando potrai fare le delete.
se non ti è chiaro dimmelo che provo a spiegarmi meglio.
ciao


Dai ai checkbox del form il nome di un array in modo che nella pagina php ti
ritrovi con un array che contiene, per esempio, tutti gli id...
<input type="checkbox" name="array[]" value="1">
Qui per esempio questo checkbox ha valore 1, che è l'id del record nel DB..
dopo di che con un foreach() fai le query sul db...
<?
foreach($array as $id) {
    mysql_query(" DELETE FROM tabella WHERE id='$id' ");
}
?>
Ciao
Alex

 wrote in message
news:Xns9175731C26...@10.16.96.46...

Allora, io mi carico la pagina contenete la lista di tutte le mail, ogni
elemento si chiamerà
mio_elemento_{ID} con value fisso a 'Y', seleziono quelle che vorro'
cancellare e nella pagina action scorro le variabili: mio_elemento_{ID} che
hanno value Y (tutte) se cecco una determinata checkbox non modifico il
value dell'elemeto, io come faccio a riconoscere dalla mia var
$mio_elemento_{ID} se questa è ceccata, non tramite il VALUE ?

 wrote in
news:9v7cms$ddqik$
1...@ID-106340.news.dfncis.de
: 

no... se non era checkata non ti trovi la variabile relativa.
proprio (!isset()) !
quindi vedrai SOLO le variabili relative ai values checkati.

 wrote in message
news:Xns91757CA366...@10.16.96.46...

Capito :)

>Questa parte non  mi è chiara:come faccio questa list?


Questa parte non  mi è chiara:come faccio questa list?
occhio a non fare casini con i quote!
ecco il listato:
while (list ($key, $val) = each ($HTTP_POST_VARS))
		{
		if(substr($key,0,5)=="pippo") //se la key inizia con pippo
			{
			$trans=array("pippo" => "");
			$sql = "delete from tabella where id = '".strtr($key, 
$trans)."'";
    	    	    	//nei 2 step passati, ricava il numero dopo pippo 
dentro le chiavi (l'id).
    	    	    	}
    	    	}
ciao

>questa è la pagina dove si fa il delete dei file...con le prove che ho fatto
<HTML>
<HEAD>
  <TITLE>cancella</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<? 
 
//	$sqlinterr.="id='$id' limit $id";  
 
        $db=mysql_connect(localhost);    
 
        while (list ($key, $val) = each ($HTTP_POST_VARS))
		{
		if(substr($key,0,)=="selezione") //se la key inizia con pippo
			{
			$trans=array("selezione" => "");
			$sql = "delete from dati where id = '".strtr($key, 
$trans)."'";
    	    	    	//nei 2 step passati, ricava il numero dopo pippo 
//dentro le chiavi (l'id).
    	    	    	}
    	    	}
/*if($selezione!="") 
{     
 
//foreach($selezione as $id) {
//     mysql_query(" DELETE FROM dati WHERE id='$selezione' ");
 //}
 
 
        $sqlinterr="delete from dati where id='$selezione.$row[id]';";    
        mysql_db_query("agenda1",$sqlinterr);  
       	echo "il record è stato cancellato <p>";
       	}
else    {
	echo "il record non è stato cancellato <p>";   
 	}  */
mysql_close($db);
 
 
 ?>
 
</BODY>
</HTML>
scusa ma non riesco a farlo funzionare!!
dove sbaglio?
grazie mille!


 dove sbaglio?
un po' dappertutto!!
non voglio spianarti la strada dandoti la soluzione completa...
o domani sarai ancora qui per altri motivi.
DEVI provare con un minuscolo pezzettino per volta.
e DEVI farlo perché penso che tu abbia le idee un po' confuse sul
funzionamento generale della faccenda (HTML, PHP, programmazione...) 
inizia prima col creare un BUON codice HTML... poi prova con una sola
checkbox e fai qualche print per vedere come sono i valori passati. poi
cerca di dare un flusso più regolare che non sia quell'orrendo for... la
mysql_fetch_row ti avanza il puntatore nel record (fetch, appunto) quindi
un while è proprio quello che bisogna mettere! 
coraggio, tieni duro e il mio consiglio è:
più sbatti la testa contro il muro, più ti torna utile nel futuro...
ciao

ho un problema con le cancellazioni multiple	
questa è la pagina dove vengono visualizzati i record
<?php  
 
 $db=mysql_connect(localhost);
 $res=mysql_db_query("agenda1","select * from dati");
 $num=mysql_num_rows($res);
 echo "<font size=1 face=verdana><p align=center>$num record
 trovati</p></font><br>"; 
 
 //inizio tabella
 echo "<table border=1 align=center>";
 
 //titolo
 echo   "<tr>
      <td><font size=2 face=verdana><b>selezione</b></font></td>
      <td><font size=2 face=verdana><b>nome</b></font></td>
      <td><font size=2 face=verdana><b>cognome</b></font></td>
      <td><font size=2 face=verdana><b>telefono</b></font></td>
      <td><font size=2 face=verdana><b>id</b></font></td></tr>";
 
 
while($row=mysql_fetch_array($res)) 
 {
  echo "<tr><td><input type='checkbox' name='selezione$row[id]'
value='$row[id]'></td>
  	<td>$row[nome]</td>  
  	<td>$row[cognome]</td>
  	<td>$row[telefono]</td>
  	<td>$row[id]</td></tr>";   
 
 
 }
  echo "</table>";
 
 
 
 mysql_close($db); 
 
?>     
 <input type="submit" value="cancella">   
 </form>
------------------------
questa è la pagina di cancellazione
<? 
 
        $db=mysql_connect(localhost);
        $res=mysql_db_query("agenda1","select * from dati");
 
	 while (list ($key, $val) = each ($HTTP_POST_VARS))  
	   {
            if(substr($key,0,9)=="selezione$row[id]") 
             {
              $sql="delete from dati where
id='".ereg_replace("selezione$row[id]","",$key")."';
 
             }
           }
 
mysql_close($db);
 
 
?>
mi da un errore sulla riga $sql
e non riesco a capire
dove sbaglio?
grazie


 wrote in message
news:ef7f6ec208b8edba951...@mygate.mailgate.org...


Ammesso che vada il resto dello script la var $sql corretta dovrebbe essere:
Se id non è numerico, penso di no, se ci metti '


 wrote in
news:9va19i$e0d3u$
1...@ID-106340.news.dfncis.de
: 

a dire il vero lo stesso problema è postato un po' troppe volte...
la svista iniziale è stata mia e me ne scuso.
xò un po' di analisi da parte dell'esecutore dello script ci andrebbe... e 
anche vedere se qualcuno ha risposto al post APPENA sotto!

 Ammesso che vada il resto dello script
...beh, cosě mi offendi! l'ho scritto io e giuro che funziona piů che a 
dovere!
ciao

 wrote in message
news:Xns91768955EA...@10.16.96.46...

Non era mia intenzione offendere, scusa mi sono espresso male, lo script
l'ho copiato anch'io in casi simili usero' il tuo.
Io intendevo, che non avevo guardato il resto dello script, magari (invece
no), potevano esserci apici in meno che non erano stati segnalati da Marco.
La prossima volta, prima di scrivere bagianate, guardero' tutto lo script.
Ciao.

 wrote in news:9va8lb$drtoq$1@ID-
106340.news.dfncis.de
:
ohhh... non importa!!!
dicevo che mi offendevo per ridere!!
:-)
ciao