Visualizzazione risultati 1 fino 4 di 4

Discussione: Cancellare una lista con checkbox

  1. #1
    Guest

    Predefinito Cancellare una lista con checkbox

    Ho questa pagina php che mi stampa varie righe di una tabella, vorrei sapere la funzione che dovrei implementare per far si che quando si seleziona quel checkbox e successivamente si clicca su "elimina", il tutto funzioni..

    Codice PHP:
    <?php require('head.php');?>
    <?php
    require('connect.php');?>
    <?php $sitename
    = mysql_query("SELECT sitename FROM rp_data") or die(mysql_error());
    $row = mysql_fetch_assoc($sitename)?>
    <head>
    <meta http-equiv="refresh" content="15">
    </head>
    <title><?php print $row[sitename]; ?> DJ Panel - Controlla Richieste</title>

    <?php
    echo "<center><b><u><h2>Richieste</h2></b></u><br>
    <form method='POST' action='checkrequests.php'><input type='submit' name='empty' value='Cancella tutto'></form></center><p>"
    ;
    if (
    $_POST['empty']) {
    $result = mysql_query("TRUNCATE rp_request");
    }

    // echo "<center><input type='submit' name='id' value='Cancella selezionate'></form></center><p>";

    ?>

    <center>
    <?php
    $result
    = mysql_query("SELECT id, name, speaker, type, request FROM rp_request");
    while(
    $row = mysql_fetch_assoc($result)){
    echo
    "<form method='POST' action='checkrequests.php'><input type='checkbox' name='id[]'/>
    <b> N°:</b>"
    .$row['id']."<br>";
    echo
    "<b>Nome:</b> ".$row['name']."<br>";
    echo
    "<b>Speaker:</b> ".$row['speaker']."<br>";
    echo
    "<b>Tipo:</b> ".$row['type']."<br>";
    echo
    "<b>Richiesta:</b> ".$row['request']."<p></form>";
    }
    ?>

    </center>

    <?php require('bottom.php');?>

  2. #2
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    vorrei sapere la funzione che dovrei implementare per far si che quando si seleziona quel checkbox e successivamente si clicca su "elimina", il tutto funzioni..
    Dipende da cosa significa "il tutto funzioni"...

    Il codice non è chiarissimo, provando a tirare ad indovinare su ciò che potresti aver voluto fare, mi sembra di capire che vuoi recuperare alcune righe dalla base di dati, mostrarle accanto ad una checkbox ciascuna in un form, e far sì che le righe selezionate vengano cancellate quando il form viene inviato.

    Innanzitutto, non creare un form per ogni checkbox, creane uno unico con le checkbox all'interno. Va bene usare id[] come nome, in questo modo crei un vettore, ma devi associarvi anche un valore affinché sia significativo (in questo caso $row['id']:
    Codice PHP:
    <form method="POST" action="checkrequests.php">
    <?php while ($row = mysql_fetch_assoc($result)): ?>
    <label>
    <input type="checkbox" name="id[]" value="<?php echo $row['id']; ?>">
    <b>N°:</b> <?php echo $row['id']; ?> <br>
    <b>Nome:</b> <?php echo $row['name']; ?> <br>
    e gli altri campi...
    </label>
    <?php endwhile; ?>
    </form>
    Ciò fatto, ci sarà lato server uno script che raccoglie $_POST['id'] e, per ogni id esegue la cancellazione:
    Codice PHP:
    foreach ($_POST['id'] as $id) {
    $query = "DELETE FROM rp_request WHERE id = $id";
    $result = mysql_query($query);
    if (
    $result === false) {
    echo
    mysql_error();
    }
    }
    Questa è la versione semplice. Mancano ovvi controlli di sicurezza e cose del genere, e in linea di massima si potrebbe migliorare evitando il ciclo iterativo ed eseguendo una sola interrogazione. Vedi tu se e quanto ti interessa migliorarlo.

    PS: Le funzioni mysql_* sono deprecate, usa mysqli o PDO.

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    Dipende da cosa significa "il tutto funzioni"...

    Il codice non è chiarissimo, provando a tirare ad indovinare su ciò che potresti aver voluto fare, mi sembra di capire che vuoi recuperare alcune righe dalla base di dati, mostrarle accanto ad una checkbox ciascuna in un form, e far sì che le righe selezionate vengano cancellate quando il form viene inviato.

    Innanzitutto, non creare un form per ogni checkbox, creane uno unico con le checkbox all'interno. Va bene usare id[] come nome, in questo modo crei un vettore, ma devi associarvi anche un valore affinché sia significativo (in questo caso $row['id']:
    Codice PHP:
    <form method="POST" action="checkrequests.php">
    <?php while ($row = mysql_fetch_assoc($result)): ?>
    <label>
    <input type="checkbox" name="id[]" value="<?php echo $row['id']; ?>">
    <b>N°:</b> <?php echo $row['id']; ?> <br>
    <b>Nome:</b> <?php echo $row['name']; ?> <br>
    e gli altri campi...
    </label>
    <?php endwhile; ?>
    </form>
    Ciò fatto, ci sarà lato server uno script che raccoglie $_POST['id'] e, per ogni id esegue la cancellazione:
    Codice PHP:
    foreach ($_POST['id'] as $id) {
    $query = "DELETE FROM rp_request WHERE id = $id";
    $result = mysql_query($query);
    if (
    $result === false) {
    echo
    mysql_error();
    }
    }
    Questa è la versione semplice. Mancano ovvi controlli di sicurezza e cose del genere, e in linea di massima si potrebbe migliorare evitando il ciclo iterativo ed eseguendo una sola interrogazione. Vedi tu se e quanto ti interessa migliorarlo.

    PS: Le funzioni mysql_* sono deprecate, usa mysqli o PDO.

    Perfetto grazie sei stato chiarissimo, la cancellazione la voglio collegare a quel pulsante che non sto utilizzando "cancella selezionate", come faccio a collegare i dati raccolti a quest'ultimo?

  4. #4
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Semplicemente inserendo il pulsante all'interno del form:
    Codice PHP:
    <form method="POST" action="checkrequests.php">
    <?php while ($row = mysql_fetch_assoc($result)): ?>
    <label>
    <input type="checkbox" name="id[]" value="<?php echo $row['id']; ?>">
    <b>N°:</b> <?php echo $row['id']; ?> <br>
    <b>Nome:</b> <?php echo $row['name']; ?> <br>
    e gli altri campi...
    </label>
    <?php endwhile; ?>

    <button>Cancella selezionate</button>
    </form>

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •