Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    34

    cancellazione multipla php mysql

    Ciao a tutti!
    Vorrei cancellare dal db dei dati che ho riportato mediante una tabella avente dei chekbox.
    Quando clicco cancella record dal form i dati non vengono cancellati.
    come mai?
    I file in questione sono: index.php, record.php e cancella.php
    Grazie!





    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>

    <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <meta name="author" content="Edoardo Tassone">
    <script type="text/javascript" src="js/jquery.min.js"></script>
    <script type="text/javascript" src="js/jquery.custom.min.js"></script>
    <link href="css/jquery.custom.css" rel="stylesheet" type="text/css" />
    <link href="css/stile.css" rel="stylesheet" type="text/css" />
    <title>My Web Site</title>
    </head>

    <body>
    <div id="contenitore">
    <div id="record">

    <?php require 'php/record.php'; ?>
    </div>
    </div>

    <script type="text/javascript">
    $(function() {
    $('tr:nth-child(even) ').addClass('even'); });



    </script>

    </body>





    </html>

    __________________________________________________ ____________________


    <?php
    // ********record.php ********

    // richiamo lo script responsabile della connessione a MySQL
    require 'connect.php';

    $query = "SELECT id, nome, cognome, citta, indirizzo FROM dati_personali";
    $res= mysql_query($query) or die(mysql_error($query));

    if($res){

    echo ' <form method="post" action="php/cancella.php" > ';
    echo '<table cellspacing="0" cellpadding="15">
    <th>Nome</th>
    <th>Cognome</th>
    <th>Citt&aacute;</th>
    <th>Indirizzo</th>
    <th>Cancella</th> ';

    //prelevo i dati dal db mediante un indice

    while($str=mysql_fetch_array($res)){//per ogni riga presente nel database memorizzata nella variabile $res,
    //preleva i dati e inseriscili nelle variabili definite.
    $id=$str['id'];
    $nome=$str['nome'];
    $cognome= $str['cognome'];
    $citta= $str['citta'];
    $indirizzo= $str['indirizzo'];




    //stampo i dati prelevati nelle variabili, all'interno della tabella definita prima

    echo '<tr>
    <td>'.$nome.'</td>
    <td>'.$cognome.'</td>
    <td>'.$citta.'</td>
    <td>'.$indirizzo.'</td>
    <td><input type="checkbox" name ="checkbox [ ]" id="checkbox[ ]" value=" '.$id.' " /td>
    </tr>'; //l'utilizzo delle parentesi quadre in checkbox, mi permette di trattare, nella pagina cancella.php,
    //i valori di input trattati come un array, preché se le chckbox sono multiple le posso trattare solo tramite array


    }//end while

    echo '</table>

    <input type="submit" class="bottone" value="Cancella i Record!"</p></form>';
    }
    __________________________________________________ ____________________

    <?php
    // ****** CANCELLA.PHP *****

    require 'connect.php';



    // $checkbox =isset($_POST['checkbox']); //checkbox è una variabile array che permette di
    //prelevare i valori selezionati.


    // $contatore = count( isset($_POST['checkbox']) ); //contatore serve ad contare le caselle checkbox selezionate


    // for ($i=0; $i<$contatore; $i++) {
    // $deleter=$checkbox[$i];

    foreach (isset($_POST['checkbox']) as $key => $value){
    $delete = "DELETE FROM dati_personali WHERE id = $value ";
    $result = mysql_query($delete);

    }

    /* $query="DELETE FROM dati_personali WHERE id='$deleter' ";
    $res= mysql_query($query) or die(mysql_error()); */
    // }

    if(isset($res)) {
    header('Location: ../index.php ');
    }else{
    echo "Errore:".mysql_error();
    }




    ?>

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    34
    Ho riscritto cancella.php, ma non riesco a trovare l'errore....

    <?php
    // ****** CANCELLA.PHP *****

    require 'connect.php';



    $checkbox =isset($_POST['checkbox']); //checkbox è una variabile array che permette di
    //prelevare i valori selezionati.


    $contatore = count( isset($_POST['checkbox']) ); //contatore serve ad contare le caselle checkbox selezionate


    for ($i=0; $i<$contatore; $i++) {
    $deleter=$checkbox[$i];
    $query="DELETE FROM dati_personali WHERE id='$deleter' ";
    $res= mysql_query($query) or die(mysql_error());
    }

    if(isset($res)) {
    header('Location: ../index.php ');
    }else{
    echo "Errore:".mysql_error();
    }




    ?>

  3. #3
    prima di usare deleter prova a fare un var_dump dello stesso, per vedere cosa contiene la variabile... in teoria il codice della query è corretto (puoi provare a mettere '$deleter' senza gli apici).

  4. #4
    Ho dato uno sguardo molto veloce al codice.

    Il file cancella mi sembra errato e lo correggerei così
    Codice PHP:
    require ('connect.php');
    $checkbox = isset($_POST['checkbox']) ? (array) $_POST['checkbox'] : array();
    foreach(
    $checkbox as $chek){
    $query "DELETE FROM dati_personali WHERE id=" .intval($chek). " LIMIT 1";
    $resmysql_query($query) or die(mysql_error()); 
    }
    header('Location: ../index.php '); 
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    34
    Ciao,
    grazie per avermi risposto. Purtroppo cliccando sul tasto cancella dati, non accade nulla essi rimangono nel db...

  6. #6
    nella pagina cancella in cima metti così vedi cosa c'è che nn và nei dati che invii.

    echo '<pre>';
    print_r($_POST);
    exit;
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    34
    Ho aggiunto in cima il codice e dà il seguente risultato:

    Array
    (
    [checkbox_] => Array
    (
    [0] => 4
    [1] => 5
    )

    )

    ed è giusto, peché ho fleggato gli ultimi due valori nella tabella.

  8. #8
    c'è un trattino _ di troppo...
    Codice PHP:
    require ('connect.php'); 
    $checkbox = isset($_POST['checkbox_']) ? (array) $_POST['checkbox_'] : array(); 
    foreach(
    $checkbox as $chek){ 
    $query "DELETE FROM dati_personali WHERE id=" .intval($chek). " LIMIT 1"
    $resmysql_query($query) or die(mysql_error());  

    header('Location: ../index.php '); 
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    34
    Ok! funziona, Grazie sei proprio un Guru!

    Ma qual'è l'errore che commettevo?

  10. #10
    - la funzione isset dà come return un valore bolenano (TRUE/FALSE) e non la variabile data (che in questo caso è un array)
    Codice PHP:
    $checkbox = isset($_POST['checkbox']); // bool 
    - applichi count al return della funzione isset() ... è sbagliata in toto
    Codice PHP:
    $contatore count( isset($_POST['checkbox']) ); // ?????!! 
    - se $res è FALSE giustamente interrompi con il die() facendoti stampare l'errore da mysql_error(); di conseguenza le condizioni che avevi messo sono superflue if(isset($res)) dato che sono sempre vere in quel codice.
    Inoltre i $res saranno uno per ogni ciclo e la condizione fuori dal ciclo fa un controllo solo sull'ultimo $res.
    Codice PHP:
    for ($i=0$i<$contatore$i++) {
    $deleter=$checkbox[$i];
    $query="DELETE FROM dati_personali WHERE id='$deleter' ";
    $resmysql_query($query) or die(mysql_error()); 


    if(isset(
    $res)) {
    header('Location: ../index.php ');
    }else{
    echo 
    "Errore:".mysql_error(); 

    - hai messo uno spazio (che nn è preferibile mettere) all'interno del <input type=checkbox> e quindi $_POST['checkbox_']; invece di $_POST['checkbox']
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.