Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di torrone
    Registrato dal
    Apr 2006
    residenza
    Padova
    Messaggi
    1,128

    cancellazione record tramite checkbox

    di solito quando cancello un record l'avoro sul GET

    esempio

    Codice PHP:
    $sql_canc "DELETE FROM tabella WHERE id = '$_GET[id]'";
    $query_canc mysql_query($sql_canc); 
    ora vorrei vedere un sisitema epr cancellare tramite le checkbox, così da velocizzare la cancellazioen dei recordo in quanto posso lavorare su più record alla volta

    il mio probelma è: come la scrivo la query per cancellare più record alla volta?

    e come imposto la pagina epr prelevari i datio dalle checkbox?

  2. #2
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    devi modificare l'attributo "name" del checkbox aggiungendo alla fine del nome attuale due parentesi quadre. ad esempio, supponendo che al momento tu abbia un name="IDdati" dovrai cambiarlo in name="IDdati[]". Sarebbe consigliabile applicare il method $_POST anziché $_GET nel caso avessi molti dati da inviare.

    per la query dovrai modificarla in questo modo:

    codice:
    DELETE FROM tabella WHERE id IN('$IDdati')
    prima di eseguirla, per sfruttare la clausola IN, dovrai però implodere i vari dati recuperati dal form. Quindi, nella pagina che riceve questi dati, prima di lanciare la query aggiungerai:

    Codice PHP:
    $IDdati implode(','$_POST['IDdati']); 
    in alternativa ci sarebbe la possibilità di ciclare con un foreach, ad esempio, l'array di dati recuperato dal checkbox del form. Ma la prima soluzione è molto più semplice...

  3. #3
    Utente di HTML.it L'avatar di torrone
    Registrato dal
    Apr 2006
    residenza
    Padova
    Messaggi
    1,128
    vediamo se ho capito ..

    Codice PHP:

    ## prelevo i dati ##

    $sql "SELECT * FROM tabella";
    $query = @mysql_query ($sql);

    echo 
    "<form name=\"form\" action=\"\"><table>";

    while (
    $row=mysql_fetch_array ($query)) {

    echo 
    "<tr>
    <td>
    $row[id]</td>
    <td>
    $row[campo]</td>
    <td>
    $row[campo]</td>
    <td><input type=\"checkbox\" name=\"id_dati[]\" value=\"
    $row[id]\" ></td>
    </tr>"
    ;

    }

    echo 
    "</table></form>";

    ##cancello##

    $id_dati implode(','$_POST['id_dati']);

    $sql_canc "SELECT * FROM tabella WHERE id IN('$id_dati')";
    $query_canc = @mysql_query ($sql_canc); 
    ho dimenticato qualcosa? eopure è sbagliato?

  4. #4
    Utente di HTML.it L'avatar di torrone
    Registrato dal
    Apr 2006
    residenza
    Padova
    Messaggi
    1,128
    ho provato ad attuarlo, ma non mi cancella nulla quando lo provo.. dove sbaglio???

    Codice PHP:
    <?php

    ## prelevo i dati ##

    $sql "SELECT * FROM MI_ingressi";
    $query = @mysql_query ($sql);

    if (
    $_POST[cmd] == FALSE)
    {

    echo 
    "<form name=\"form\" method=\"post\" action=\"\"><table>
    <tr>
    <td><input type=\"checkbox\" name=\"seleziona_tutti\" onclick=\"seleziona()\"></td>
    <td>Informazioni</td>
    </tr>"
    ;

    while (
    $row=mysql_fetch_array ($query)) {

    echo 
    "<tr><td>

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

    </td><td>

    <table>
    <tr>
    <td>[b]Id[/b]: 
    $row[id]</td>
    </tr>
    <tr>
    <td>[b]Data[/b]: 
    $row[data] $row[ora]</td>
    </tr>
    <tr>
    <td>[b]Ip[/b]: 
    $row[ip]</td>
    </tr>
    <tr>
    <td>[b]Browser[/b]: 
    $row[browser]</td>
    </tr>
    <tr>
    <td>[b]Refer[/b]: 
    $row[refer]</td>
    </tr>
    </table>

    </td></tr>"
    ;

    }

    echo 
    "</table>";

    echo 
    "<input type=hidden name=cmd value=add>
    <input type=\"submit\" name=\"submit_canc\" value=\"Cancella\">
    </table></form>"
    ;

    } else {

    ##controllo se è stato selezionato un record##

    if ($_POST[id_dati] == FALSE) {

    echo 
    "<table>
    <tr>
    <td>
    Non hai selezionato nessun record
    </td>
    </tr>
    </table>"
    ;

    } else {

    ##cancello##

    $id_datii implode(","$_POST[id_dati]);

    $sql_canc "SELECT * FROM MI_ingressi WHERE id IN('$id_datii')";
    $query_canc = @mysql_query ($sql_canc);

    }
    }

    ?>

  5. #5
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    Codice PHP:
    $sql_canc "DELETE FROM MI_ingressi WHERE id IN('$id_datii')"
    continuavi a scrivere SELECT al posto di DELETE nella ma variabile $sql_canc.

    così dovrebbe andare ma ci sarebbe da rivedere un bel po' di cose nel codice...

  6. #6
    Utente di HTML.it L'avatar di torrone
    Registrato dal
    Apr 2006
    residenza
    Padova
    Messaggi
    1,128
    Originariamente inviato da neida
    Codice PHP:
    $sql_canc "DELETE FROM MI_ingressi WHERE id IN('$id_datii')"
    continuavi a scrivere SELECT al posto di DELETE nella ma variabile $sql_canc.

    così dovrebbe andare ma ci sarebbe da rivedere un bel po' di cose nel codice...
    devo abbassare la dose di droga alla mattina!

    cmq, cosa c'è da rivedere nel codice?

  7. #7
    Utente di HTML.it L'avatar di torrone
    Registrato dal
    Apr 2006
    residenza
    Padova
    Messaggi
    1,128
    comunque non mi cancella più dati alla volta, se io seleziono più record, esempio quello con id 5, 6 e 7 mi cancella solo il 5; se selezione 10, 11 e 12 mi cancella solo il 10

    ceh errori ci sono?

  8. #8
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    Codice PHP:
    //controllo se è stato inviato il modulo e se è stato selezionato almeno un checkbox
    if(isset($_POST['submit']) && !empty($_POST['id_dati'])) {
        
    $id implode(', '$_POST['id_dati']);
        
    mysql_query("DELETE FROM MI_ingressi WHERE id IN($id)") or die(mysql_error());
      
    printf ("Records eliminati: %d\n"mysql_affected_rows());

    }
    else { 
    //altrimenti stampo il form
        
    $query mysql_query("SELECT * FROM MI_ingressi") or die(mysql_erro());
        echo 
    "<form action=\"{$_SERVER['PHP_SELF']}\" method=\"post\">";
            while(
    $row mysql_fetch_array($query)) {
                echo 
    "<input type=\"checkbox\" name=\"id_dati[]\" value=\"{$row['id']}\" />";
            }
        echo 
    "<input type=\"submit\" name=\"submit\" value=\"Cancella\" /></form>";


  9. #9

  10. #10

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.