Visualizzazione risultati 1 fino 14 di 14

Discussione: Modificare record selezionati tramite checkbox

  1. #1
    Guest

    Question Modificare record selezionati tramite checkbox

    Dunque...A me serve poter visualizzare, modificare ed eliminare i record di una determinata tabella.

    Io ho:

    iscritti.php
    Codice PHP:
    <html>
    <head>
    <title>Lista utenti iscritti - PartyPoints Staff</title>
    <link rel="stylesheet" type="text/css" media="screen" href="/menu_css/style_menu_a_tendina.css" />
    </head>
    <body>

    <?

    /* dichiariamo alcune importanti variabili per collegarci al database */

    $DBhost = "localhost";
    $DBuser = "partypoints";
    $DBpass = "";
    $DBName = "my_partypoints";


    /* specifichiamo il nome della nostra tabella */

    $table = "iscrizioni";


    /* Connettiamoci al database */

    mysql_connect($DBhost,$DBuser,$DBpass) or die("Impossibile collegarsi al server");
    @
    mysql_select_db("$DBName") or die("Impossibile connettersi al database $DBName");


    /* impostiamo la query e cerchiamo gli utenti...*/

    $sqlquery = "SELECT * FROM $table";
    $result = mysql_query($sqlquery);
    $number = mysql_numrows($result);


    $i = 0;


    if (
    $number < 1) {

    print
    "<center><p><font color=\"red\"><b>ATTUALMENTE NON CI SONO UTENTI ISCRITTI.</b></font></p></center>";
    }

    else {

    echo
    " <form name=\"form1\" method=\"post\" action=\"elabora.php\">
    <center><table border=1 cellpadding=3>
    <tr>
    <td><font color=\"red\"><b>ID</b></font></td>
    <td><font color=\"red\"><b>CODICE DI CONFERMA</b></font></td>
    <td><font color=\"red\"><b>IP DI REGISTRAZIONE</b></font></td>
    <td><font color=\"red\"><b>DATA DI REGISTRAZIONE</b></font></td>
    <td><font color=\"red\"><b>IP DI CONFERMA</b></font></td>
    <td><font color=\"red\"><b>DATA DI CONFERMA</b></font></td>
    <td><font color=\"red\"><b>E-MAIL</b></font></td>
    <td><font color=\"red\"><b>USERNAME</b></font></td>
    <td><font color=\"red\"><b>STATO CONFERMA</b></font></td>
    <td><font color=\"red\"><b>#</b></font></td></tr>"
    ;

    while (
    $number > $i) {

    $id = mysql_result($result,$i,"id");
    $codiceconferma = mysql_result($result,$i,"codiceconferma");
    $ipreg = mysql_result($result,$i,"ipreg");
    $datareg = mysql_result($result,$i,"datareg");
    $ipconf = mysql_result($result,$i,"ipconf");
    $dataconf = mysql_result($result,$i,"dataconf");
    $username = mysql_result($result,$i,"username");
    $email = mysql_result($result,$i,"email");
    $attivo = mysql_result($result,$i,"attivo");

    if (
    $attivo == 0) {
    $attivo1 = "Non convalidato tramite mail";
    } else {
    $attivo1 = "Convalidato tramite mail";
    }

    echo
    "
    <tr>
    <td>
    $id</td>
    <td>
    $codiceconferma</td>
    <td>
    $ipreg</td>
    <td>
    $datareg</td>
    <td>
    $ipconf</td>
    <td>
    $dataconf</td>
    <td>
    $email</td>
    <td>
    $username</td>
    <td>
    $attivo1</td>
    <td> <input type=\"checkbox\" name=\"record[]\" value=\"
    $id\"> </td></tr>";
    $i++;
    }
    echo
    "</table>
    </center>
    <DIV style=\"position: fixed; bottom: 00px; left: 00px\">
    <table>
    <tr style=\"background:green;\">
    <td>
    <input type=\"submit\" name=\"submit\" value=\"Elimina selezionati\" onclick=\"return(confirm('Vuoi veramente eliminare i record selezionati?'))\" />
    <input type=\"submit\" name=\"submit\" value=\"Modifica selezionati\" />
    </td>
    </tr>
    </table>
    </DIV>
    </form>"
    ;
    }
    ?>
    </body>
    </html>
    elabora.php
    Codice PHP:
    <html>
    <head>
    <title>Esecuzione del comando in corso...</title>
    </head>

    <body>
    <?php
    $host
    ="localhost";
    $user="partypoints";
    $password="";
    $myconn=mysql_connect($host,$user,$password) or die("Errore nel connettersi con il server");
    $db_name="my_partypoints";
    mysql_select_db($db_name,$myconn);

    if(isset(
    $_POST['submit']) && (trim($_POST['submit']) == "Elimina selezionati"))
    {
    foreach (
    $_POST['record'] as $key)
    {

    mysql_query("DELETE FROM iscrizioni WHERE id = $key");

    }
    header("Location: http://partypoints.altervista.org/staff/gestione_rapida_iscrizioni/iscritti.php");

    } elseif (isset(
    $_POST['submit']) && (trim($_POST['submit']) == "Modifica selezionati"))
    {
    echo
    "<form action=\"modifica.php\" method=\"post\" name=\"modifica\" id=\"form_modifica\">";
    $record = $_POST['record'];
    foreach (
    $record as $key)
    {
    $sqlquery = "SELECT * FROM iscrizioni WHERE id = $key";
    $result = mysql_query($sqlquery);
    $number = mysql_numrows($result);
    $i = 0;

    $id = mysql_result($result,$i,"id");
    $codiceconferma = mysql_result($result,$i,"codiceconferma");
    $username = mysql_result($result,$i,"username");
    $email = mysql_result($result,$i,"email");
    $attivo = mysql_result($result,$i,"attivo");
    echo
    "<font color=\"red\"><b>ID:</b></font><b> $id </b><br>
    <font color=\"red\"><b>CODICE CONFERMA</b></font> (<b>ORIGINARIAMENTE \"</b>
    $codiceconferma<b>\"</b>)<b>:</b> <input type=\"text\" name=\"input_codiceconferma\" value=\"$codiceconferma\"> <br>
    <font color=\"red\"><b>USERNAME</b></font> (<b>ORIGINARIAMENTE \"</b>
    $username<b>\"</b>)<b>:</b> <input type=\"text\" name=\"input_username\" value=\"$username\"> <br>
    <font color=\"red\"><b>E-MAIL</b></font> (<b>ORIGINARIAMENTE \"</b>
    $email<b>\"</b>)<b>:</b> <input type=\"text\" name=\"input_email\" value=\"$email\"> <br>
    <font color=\"red\"><b>STATO CONFERMA</b></font> (<b>ORIGINARIAMENTE \"</b>
    $attivo<b>\"</b>)<b>:</b> <input type=\"text\" name=\"input_attivo\" value=\"$attivo\"> <br>
    <hr> <br>"
    ;
    }
    echo
    "
    <input type=\"submit\" value=\"invia\">
    </form>"
    ;
    }
    ?>

    </body>
    </html>
    Tralasciando il pezzo di codice che elimina i record (funziona perfettamente) cosa devo mettere nella pagina modifica.php per modificare i record?

    Mi affido a voi

  2. #2
    L'avatar di tdef
    tdef non è connesso Utente giovane
    Data registrazione
    12-12-2011
    Residenza
    Udine
    Messaggi
    81

    Predefinito

    Mamma mia HTML 1.zero va be cosa intendi per "cosa devo mettere nella pagina modifica.php per modificare i record?" In che modo li devi modificare di che entità, cosa ti serve la query per inserire i dati nel database o come passare i valori?
    Tower Defense giochi in Flash

  3. #3
    Guest

    Exclamation

    è un file html 4.1 transitional contenente php.
    Lasciando perdere il doctype declaration (so che non lo ho messo nei codici sopra riportati) ed alcuni (anzi, numerosi) errori di sintassi, perchè li metterò a posto dopo, assieme alla grafica;
    Io ho bisogno di poter modificare e/o cancellare il contenuto della tabella "iscrizioni".
    Ho creato la pagina "iscritti.php" che contiene sotto forma di tabella id,codice di conferma, data, ip ed altri dati e un campo per ogni record visualizzato che contiene una checkbox con value=\"$id\".
    Poi ci sono 2 pulsanti che spediscono tramite form post i record selezionati alla pagina "elabora.php".
    Quest'ultima controlla quale dei due tasti hai premuto ed elimina o cancella i record selezionati.
    Nel primo caso, cancella direttamente i record ad uno a uno tramite il ciclo foreach.
    Nel secondo caso, quando si deve modificare, vorrei presentasse un form aggiuntivo come nell'immagine sotto che invia la richiesta di modifica contenente i vari dati alla pagina "modifica.php".


    (Clicca per Ingrandire)!

    La mia domanda è: come posso fare per fargli modificare i record?

    Ps: Grazie per la disponibilità!
    Ultima modifica di darkwolf : 13-12-2012 alle ore 17.38.48 Motivo: Ridotta l'immagine (usiamo le thumb) ;)

  4. #4
    Guest

    Predefinito

    Non so se ho capito bene... ma ti basta creare una query del tipo

    $query = "UPDATE iscrizioni SET nome_campo_1 = '".$valore_campo_1."', nome_campo_2 = '".$valore_campo_2."' WHERE id = ".$id

    e poi la esegui come esegui le altre

    Ovviamente devi mettere tutti i campi, io ho fatto l'esempio con solo due campi.

    Scusami se anche io ti consiglio di modificare il modo di scrivere il codice... a parte l'HTML "vecchiotto" per interagire con il database, e più in generale per gestire qualunque "coso" manipoli in PHP, ti conviene sempre usare le classi per non mischiare codice che si occupa delle parti elaborative con quello che fa la presentazione a video. All'inizio richiede un po di impegno ma ti assicuro che poi è tutto più semplice.

    Ciao
    Ultima modifica di pastamadre : 13-12-2012 alle ore 21.17.55

  5. #5
    Guest

    Predefinito

    No.Se seleziono più record non posso usare un foreach per stampare i campi del form.Altrimenti le variabili prendono il valore solo dell'ultima inviata.Chiedevo se qualcuno conosce soluzioni od almeno un codice già pronto che permetta di selezionare più record di una tabella e poi modificarli o cancellarli.

  6. #6
    Guest

    Predefinito

    Dai un'occhiata qui. Quello che vuoi fare è una cosa un po rognosetta da implementare...

  7. #7
    Guest

    Predefinito

    Prima della query però devo risolvere il fatto di stamparmi un form come quello che c'è nell'immagini sopra:
    Se dico tramite foreach che ogni record selezionato mi deve stampare un input con name="input"
    può stampare quanti input vuole, ma mi invierà solo l'ultimo (o meglio, me li invia tutti, ma vale solo l'ultimo in quanto tutti gli input hanno name uguale).

  8. #8
    Guest

    Predefinito

    Visto che hai l'ID puoi creare i nomi dei campi concatenandoli con questo (tipo nome_01, nome_02, ...) e in fase di elaborazione dividere i dati e trattarli come meglio credi.

    Fai attenzione, tu usi due tasti submit con due valori diversi. In IE puoi avere spiacevoli e imprevisti effetti...

  9. #9
    Guest

    Cool

    Citazione Originalmente inviato da simpleticket Visualizza messaggio
    Visto che hai l'ID puoi creare i nomi dei campi concatenandoli con questo (tipo nome_01, nome_02, ...) e in fase di elaborazione dividere i dati e trattarli come meglio credi.

    Fai attenzione, tu usi due tasti submit con due valori diversi. In IE puoi avere spiacevoli e imprevisti effetti...
    E poi come recupero i valori nella pagina destinataria?

    Cosa vuol dire "Fai attenzione, tu usi due tasti submit con due valori diversi. In IE puoi avere spiacevoli e imprevisti effetti..."?

  10. #10
    Guest

    Predefinito

    Nessuno risponde?

  11. #11
    Guest

    Predefinito

    Citazione Originalmente inviato da partypoints Visualizza messaggio
    E poi come recupero i valori nella pagina destinataria?

    Cosa vuol dire "Fai attenzione, tu usi due tasti submit con due valori diversi. In IE puoi avere spiacevoli e imprevisti effetti..."?
    facendo esattamente il contrario di come li hai costruiti.

    se sai che i campi si chiamano "nome_xx" la parte a sinistra di "_" è il nome del campo, la parte a destra l'ID.

    Riguardo al submit, IE non registra il value in una variabile col nome del submit quindi rischi di non sapere quale tasto è stato premuto.

  12. #12
    Guest

    Predefinito

    X quanto riguarda IE...è solo un sistema provvisorio...Poi darò proprio due name diversi...Xò nn ho capito ancora come recuperarli...

  13. #13
    Guest

    Predefinito

    Dal Regolamento del Forum:

    4) Nessuno è pagato, nessuno è obbligato a rispondere.
    13) Fare "UP" (portare a galla un topic) non è tollerato. È possibile
    rispondere ad un proprio messaggio solo se sono trascorse più di 24 ore e si
    portano importanti informazioni per la risoluzione del problema discusso.
    Detto questo, una risposta ti è stata data.
    Se vuoi la pappa pronta, difficilmente la troverai.
    Almeno provarci, puoi iniziare dal leggere qualcosa sulla gestione delle stringe in PHP.

  14. #14
    Guest

    Predefinito

    Gentile simpleticket,
    Inanzi tutto la ringrazio per avermi rinfrescato la memoria ricordandomi una parte del regolamento che mi ero completamente dimenticato e mi scuso per aver commesso un infrazione.
    Lo scopo dell'up era almeno quello di ottenere il nome della funziona da utilizzare...
    Volevo solo verificare che nessun altro avesse altre idee, non volevo "la pappa pronta" (anche perchè il mio sito è quasi interamente creato da me basandomi sulle mie conoscenze in ambito programmatorio)...

Regole di scrittura

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