Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Recuperare checkbox selezionati

    Ciao a tutti,
    sto cominciando a muovere i primi passi con PHP, ma ho ancora qualche difficoltà...
    Ho cercato nel forum, ma non ho trovato risposte alla mia domanda e quindi provo ad esporre il mio problema.
    Ho la seguente pagina PHP, che estrae dalla tabella utenti del mio DB le informazioni relative a ciascun utente presente e le visualizza all'interno di una tabella.
    Ogni riga mostra i seguenti campi:
    Nome Utente, Nome, Cognome, Ente di appartenenza e in fondo ad ogni riga viene visualizzato un checkbox.
    Quello che vorrei fare è offrire la possibilità di selezionare più utenti (uselezionando i checkbox ovviamente) ed eliminare quelli selezionati in un colpo solo tramite il bottone "Elimina".
    Come posso fare a recuperare i vari ID delle righe selezionate?
    Come devo costruire la stringa SQL per effettuare il DELETE?


    <html>
    <head>
    <title>Gestione Tutor</title>
    </head>
    <body>
    <?php
    include ('config.inc');
    ?>
    <form name="frmtutor" enctype="multipart/form-data" method="post" action="">
    <table border=0 cellpadding=0 cellspacing=0>
    <tr bgcolor=#f87820>
    <td class=tabhead>
    Nome Utente</td>
    <td class=tabhead>
    Nome</td>
    <td class=tabhead>
    Cognome</td>
    <td class=tabhead>
    Ente</td>
    <td class=tabhead>
    Elimina</td>
    </tr>

    <?
    mysql_connect($host, $user, $password)
    or die('Impossibile connettersi a MySQL: ' . mysql_error());
    if(!mysql_select_db($db))
    die('Impossibile accedere al database');
    $query = "SELECT user_id, username, firstname, lastname, official_code FROM user
    ORDER BY username";
    $risultato= mysql_query($query)
    OR die('Errore nella Query: ' . mysql_error());

    $i=0;
    while( $row=mysql_fetch_array($risultato) )
    {
    if($i>0)
    {
    echo "<tr valign=bottom>";
    //echo "<td bgcolor=#ffffff background='img/strichel.gif' colspan=6><img src=img/blank.gif width=1 height=1></td>";
    echo "</tr>";
    }
    echo "<tr valign=center>";
    echo "<td class=tabval width=150>".$row['username']."</td>";
    echo "<td class=tabval width=150>".$row['firstname']."</td>";
    echo "<td class=tabval width=150>".$row['lastname']."</td>";
    echo "<td class=tabval width=150>".$row['official_code']."</td>";
    echo "<td class=tabval align=center><input type=checkbox name=".$row['user_id']." value=".$row['user_id']."></td>";
    echo "<td class=tabval></td>";
    echo "</tr>";
    $i++;
    }
    echo "<tr><td align=right><input type=submit name=elimina value=Elimina></td></tr>"
    ?>

    </table>
    </form>
    </body>
    </html>


    Grazie mille a chiunque possa darmi delle dritte!!
    Grazie di cuore...

  2. #2
    Utente di HTML.it L'avatar di kodode
    Registrato dal
    Sep 2002
    Messaggi
    1,896
    allora vediamo se viene al primo colpo

    aggiungi :

    <form name="frmtutor" enctype="multipart/form-data" method="post" action="elimina_record.php ">

    cambierei anche la linea:

    echo "<td class=tabval align=center><input type=checkbox name=chk_".$row['user_id']." ></td>";

    poi crei la pagina elimina_record.php in cui dovresti recuperare tutte le righe selezionate con:

    foreach ($_POST as $item => $valore){
    if (substr($item, 0, 4) == "chk_" ){
    $sql="( user_id =".$valore.") OR";
    }
    }

    if ($sql != "") {
    $sql= "DELETE FROM nome_tabella".
    " WHERE " . $sql;
    $sql= substr($sql, 0 ,strlen($sql)-4);

    mysql_query($sql);


    l'ho fatta un po al volo, provalo

    }

  3. #3
    Ti ringrazio tantissimo per la risposta, in effetti mi sembra funzionare...

    Una piccola domanda da profano del PHP...
    Nella pagina "elimina_record.php" ho dovuto riscrivere tutte le righe di codice relative alla connessione con il DB MySQL ed instaurare una nuova connessione con MySQL. Ovviamente presumo che questo possa essere evitato però non capisco come si fa... Cioè voglio dire: "Non è una cosa logica dover riscrivere le stesse righe di codice all'interno di ogni pagina dove devo eseguire delle query su MySQL!"
    Mi potresti spiegare come si può fare?
    Scusami ancora per l'ignoranza ma sono molto a digiuno di programmazione con PHP e web in genere... :-(

  4. #4
    Utente di HTML.it L'avatar di kodode
    Registrato dal
    Sep 2002
    Messaggi
    1,896
    non ho ben capito la domanda cmq provo a risponderti
    se tu sai che devi ripetere del codice in ogni pagina, puoi crearti a pagina "parametri.php"
    dove all'interno scriverai ad esempio la conn. con il db e magari altre funzioni che potrebbero esserti utili in tutta l'applicazione. Poi all'inizio di ogni pagina scivi:
    include "parametri.php";
    e ti ripeterà tutto il codice...

  5. #5
    In effetti rileggendo mi sono accorto che quello che volevo dire non è molto chiaro però mi sembra che tu abbia comunque capito quello che intendevo...
    Fammi capire se anch'io ho capito...

    Ad esempio se io volessi fare in modo che nella pagina elimina_record.php venga instaurata la connessione con MySQL uguale a quella presente all'interno del file index.php che ho precedentemente postato basterebbe che creassi un file chiamato mysql.php all'interno del quale inserire il seguente codice:

    <?php
    mysql_connect($host, $user, $password)
    or die('Impossibile connettersi a MySQL: ' . mysql_error());
    if(!mysql_select_db($db))
    die('Impossibile accedere al database');
    $query = "SELECT user_id, username, firstname, lastname, official_code FROM user
    ORDER BY username";
    $risultato= mysql_query($query)
    OR die('Errore nella Query: ' . mysql_error());
    ?>

    e quindi richiamare nelle pagine che mi servono tale file con

    include "mysql.php";

    A questo punto dopo aver inserito l'include potrei fare direttamente un bel
    <?php
    $i=0;
    while( $row=mysql_fetch_array($risultato) )
    {
    if($i>0)
    {
    echo "<tr valign=bottom>";
    //echo "<td bgcolor=#ffffff background='img/strichel.gif' colspan=6><img src=img/blank.gif width=1 height=1></td>";
    echo "</tr>";
    }
    echo "<tr valign=center>";
    echo "<td class=tabval width=150>".$row['username']."</td>";
    echo "<td class=tabval width=150>".$row['firstname']."</td>";
    echo "<td class=tabval width=150>".$row['lastname']."</td>";
    echo "<td class=tabval width=150>".$row['official_code']."</td>";
    echo "<td class=tabval align=center><input type=checkbox name=".$row['user_id']." value=".$row['user_id']."></td>";
    echo "<td class=tabval></td>";
    echo "</tr>";
    $i++;
    }
    echo "<tr><td align=right><input type=submit name=elimina value=Elimina></td></tr>"
    ?>

    per visualizzare i risultati all'interno della mia nuova ipotetica pagina...
    O sbaglio?


  6. #6
    Utente di HTML.it L'avatar di kodode
    Registrato dal
    Sep 2002
    Messaggi
    1,896
    si mi pare corretto, ricordati di mettere
    <? include "mysql.php"; ?>


  7. #7
    Approfitto della tua gentilezza per chiederti un informazione...
    Al posto di include non è meglio inserire require?
    In rete ho visto che alcuni sviluppatori prediligono require ad include però non ho ben capito la differenza...

  8. #8
    Utente di HTML.it L'avatar di kodode
    Registrato dal
    Sep 2002
    Messaggi
    1,896
    se devo dirti la verità nn conosco la differenza... io ho sempre usato include e non mai avuto problemi. Però dato che non si finisce mai di imparare, forse require è più "perfomante"... nn saprei

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.