• User

    Cancellazione record da una tabella dati php mysql a mezzo pulsante di selezione

    Ciao a tutti chiedo gentilmente aiuto per poter eseguire cancellazione record selezionati su chechbox a mezzo di un pulsante che in questo caso si chiama
    "Elimina record selezionati" attualmente non produce nessuna cancellazione
    i record attualmente vengono cancellati uno per volta cliccando sul pulsante
    della croce rossa , questo comunque mi va bene che ci stia , vorrei soltanto
    selezionare piu' record e cancellarli tutti insieme con il pulsante sopra descritto posto qui di seguito lo script sperando in un vs gentile aiuto grazie.

    <?php
    mysql_connect("localhost", "utente", "password") or
    die("Connessione non riuscita: " . mysql_error());
    mysql_select_db("ninophp");
    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 />';
    }
    $query = "select id,nome,cognome from indirizzi";
    $rs = mysql_query($query) or die(mysql_error());
    $num = mysql_num_rows($rs);

    if ($num == 0)
    echo "<div style="text-align:center">Nessun contatto nella presente tabella</div>";
    else
    {
    if(empty($_GET['ordercampo']))
    $_GET['ordercampo'] = "id";

             if(empty($_GET['order']))
             $_GET['order'] = "asc";
        
             if($_GET['order']=="asc") {$ordinaVerso = "desc";}
             if($_GET['order']=="desc") {$ordinaVerso = "asc";}
             $query = "select id,nome,cognome from indirizzi order by $_GET[ordercampo] $ordinaVerso ";
             $rs = mysql_query($query) or die(mysql_error());
        
         
               
             
       ?>
        
        <center><table bgcolor="#ffff99" border="1">
         <tr bgcolor="#FF0000">
         <td align="center"><strong>selez.</a></strong></td>
         <td align="center"><strong><a href="ordina69.php?ordercampo=<?php echo 'nome' ?>&order=<?php echo $ordinaVerso ?>" title="Inverti ordinamento">nome</a></strong></td>
        <td align="center"><strong><a href="ordina69.php?ordercampo=<?php echo 'cognome' ?>&order=<?php echo $ordinaVerso ?>" title="Inverti ordinamento">cognome</a></strong></td>
         <td align="center"><strong>elimina</a></strong></td>
        </tr></center>
          <?php
           
        while($results = mysql_fetch_array($rs))
            {
             $nome = htmlentities($results['nome']);
             $cognome = htmlentities($results['cognome']);  
             $link = $_SERVER['PHP_SELF'].'?id=' . $results['id'];  
                echo "<tr>";
        //        $id = $results['id'];
             ; 
              echo "<td><input name=\"id[]\" type=\"checkbox\" value=\"$results[id]\" /></td>";  
                echo "<td width=\"35%\">&nbsp;$results[nome]</td>";
                echo "<td width=\"35%\">&nbsp;$results[cognome]</td>";
              echo  "<td><center><a href=\"$link\"><img src=\"x.gif\"></a></center></td>";   
                echo "</tr>";
            
            } //fine ciclo while
    
        } //fine else nel caso ci sia almeno un contatto nel comune
    

    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 query  
     $query = "DELETE FROM indirizzi WHERE id IN ($ids)";  
    
     // invio la query  
     $results = mysql_query($query);  
    
     // controllo l'esito  
     if (!$results) {  
         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);  
    

    }
    echo '
    <table border="1">
    <input type="submit" name="Submit" value="Elimina record selezionati" />
    <tr>
    <th> </th>
    <th>MENU</th>
    <th> </th>
    <td><a href="menuprincipale.php">menu</a></td>
    <td><a href="inserire.php">Inserimento dati</a></td>
    <th> </th>
    </tr>';

    ?>


  • User Attivo

    Ciao paolomi,
    intervenire su un codice del genere dall'esterno può non essere banale...
    Se ho capito bene il non detto, non funziona quando invochi il elimina_record con $_POST... giusto?

    Ti restituisce un qualche tipo di errore?

    Alcuni consigli:
    fatti stamapare la query con il DELETE a monitor, così capisci al volo se c'è un errore:

    ***$query = "DELETE FROM indirizzi WHERE id IN ($ids)"; ***
    echo $query;

    poi, all'inizio dello script fatti scrivere le variabili $_POST e $_GET con, ad esempio,

    var_dump($_POST);
    var_dump($_GET);

    Così capisci se il form passa correttamente le variabili.

    Non trovo, nel tuo script, il tag form, con la definizione del method... controlla che vi sia e che sia corretto.

    Facci sapere...
    :ciauz: