Cancellare 2 o più record contemporaneamente

Ciao Gianni,

ho creato una pagina che mi visualizza su un unica riga i dati di 2 tabelle,

ed ho inserito un checkbox per selezionare i record da eliminare.

Perchè mi funziona se seleziono solo 1 record, mentre mi visualizza un mess di errore se ne spunto più di uno?

Mi sai dire dove sbaglio? Grazie in anticipo

<?php   

// richiamo il file di configurazione   

require 'config.php';   

// richiamo lo script responsabile della connessione a MySQL   

require 'connect.php';   

if($_POST)   

{   

    $ids = isset($_POST['id']) ? $_POST['id'] : array();   

    elimina_record($ids);   

}   

elseif(isset($_GET['id']))   

{   

    elimina_record(array($_GET['id']));   

}   

else 

    mostra_lista();   

function mostra_lista()   

{   

    // mostro un eventuale messaggio   

    if(isset($_GET['msg']))   

        echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';   

    // preparo la query   

    $query ="SELECT anagrafica.id,nome,costo,giorno,mese,anno

FROM tesseramento,anagrafica WHERE (tesseramento.id_tessera=anagrafica.id)";     

    // invio la query   

    $result = mysql_query($query);   

    // controllo l'esito   

    if (!$result) {   

        die("Errore nella query $query: " . mysql_error());   

    }   

   $giorno_arr = array('giorno','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31');

   $mese_arr = array('mese','gennaio','febbraio','marzo','aprile','maggio','giugno','luglio','agosto','settembre','ottobre','novembre','dicembre');

   $anno_arr = array('anno','2008','2009','2010','2011','2012');

   echo '   

    <table border="1"> 

        <tr>   

      <form name="form1" method="post" action="">

      <th> </th>

          <th>NOME</th>

        <th>

        DATA di ISCRIZIONE

        </th>

         <th>COSTO</th> 

        </tr>';   

    while ($row = mysql_fetch_assoc($result))   

    {   

    $nome = htmlentities($row['nome']);

   $costo      = htmlentities($row['costo']);

    $giorno = $giorno_arr[$row['giorno']];

    $mese = $mese_arr[$row['mese']];

   $anno = $anno_arr[$row['anno']];

        // preparo il link per la modifica dei dati del record   

        $link = $_SERVER['PHP_SELF'].'?id=' . $row['id'];   

        echo "<tr>   

                <td><input name=\"id[]\" type=\"checkbox\" value=\"$row[id]\" /></td>   

               <td>$nome</td>

            <td>$giorno

            $mese

            $anno</td>

            <td>$costo</td>

                </tr>";   

    }   

    echo '</table>   

        <br />   

        <input type="submit" name="Submit" value="Elimina record selezionati" />   

        </form>';   

    // libero la memoria di PHP occupata dai record estratti con la SELECT   

    mysql_free_result($result);   

    // chiudo la connessione a MySQL   

    mysql_close();   

}   

function elimina_record($ids)   

{   

    // verifico che almeno un id sia stato selezionato   

    if(count($ids) <1)   

    {   

        $messaggio = urlencode("Nessun record selezionato!");   

        header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);   

        exit;   

    }   

    // per precauzione converto gli ID in interi   

    $ids = array_map('intval',$ids);   

    // creo una lista di ID per la query   

    $ids = implode(',',$ids);   

    // preparo la query2   

    $query2 = "DELETE FROM anagrafica WHERE id=$ids";   

    // invio la query2   

    $result2 = mysql_query($query2);   

    // controllo l'esito   

    if (!$result2) {   

        die("Errore nella query $query: " . mysql_error());     

    }   

    // conto il numero di record cancellati   

    $num_record = mysql_affected_rows();   

    // chiudo la connessione a MySQL   

    mysql_close();   

    $messaggio = urlencode("Numero record cancellati: $num_record");   

    header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);   

}   

?> 

<p>

<br /><p><br /><p><br /><p><br /><p><br /><p><br /><p><br /><p><br />

  <a href="inserimento_iscrizioni.php"><img src="insrimentoiscritti.jpg" width="207" height="33" /></a>

inviato 7 anni fa
bruce1964
X 0 X

cambia:

DELETE FROM anagrafica WHERE id=$ids

in

DELETE FROM anagrafica WHERE id IN ($ids)

 :bye:

risposto 7 anni fa
Gianni Tomasicchio
X 0 X

Grazie mille!!!!!

risposto 7 anni fa
bruce1964
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda