Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822

    [php mysql] UPDATE valore checkbox

    Estraggo con un while i valori delle righe e stampo la tabella:
    (posto solo la parte dopo il while)
    Codice PHP:
    <form action="azione.php" method="post">
    <?
    while ($dati mysql_fetch_array($query))
    {

    $checked = ($dati['ammesso']== 1) ? "checked" "";
    echo 
    "<tr><td>{$dati['id']}</td>";
    echo 
    "<td><input type='checkbox' name'checkbox' value='{$dati['id']}$checked ></td>";
    echo 
    "<td>{$dati['name']}</td></tr>";
    }
    echo 
    "</table>
    "
    ;
    }
    echo 
    "<input name'submit' type='submit' value='aggiorna'></form>";
    dovrei fare una query multipla dove aggiorno con valore '0' o '1' il campo 'ammesso' in base ai valori delle checkbox che spunta o meno l'utente.
    Dispongo (come si vede dallo script) di un id univoco per ogni record da aggiornare.

    Da quello che ho capito devo usare gli array, sto provando in mille modi ma non riesco a venirne a capo, in pratica, non sono capace.

    come devo impostare l'input della checkbox e la query nella pagina azione.php ? per aggiornarne uso questa query:

    Codice PHP:
    $query mysql_query("UPDATE FROM newusers SET ammesso = 1 WHERE id $_POST['id']")
            or die(
    "Query Fallita: " mysql_error()); 
    ma ovviamente deve essere una query dinamica e multipla se così si puo' chiamare... mi potreste dare una mano? è 3 giorni che ci provo..
    grazie tante.

  2. #2
    Se non erro ti trovi tra le variabile dell'array POST il valore $_POST['name_del_mio_checkbox'] => on se il checkbox è stato flaggato, altrimenti non trovi nulla.

    Fai un controllo se isset($_POST['name_del_mio_checkbox']) e se si assegni ad una variabile che userai nella query es: $ammesso = 1 altrimenti $ammesso = 0

    etc.

  3. #3
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822
    lasciando l'input così:?

    <input type='checkbox' name'checkbox' value='{$dati['id']}' $checked >
    non ho capito.. :master:

    cioè il nome del checkbox è sempre lo stesso, io devo ottenere il suo VALORE (se checked o meno) e attribuirlo all'id da aggiornare...

    puo' essere una soluzione dare come nome checkbox l'id del record in questo modo?

    <input type='checkbox' name'{$dati['id']}' $checked >

  4. #4
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    in quel modo crei solo n checkbox dal nome "checkbox" e non concludi nulla.

    <input type="checkbox" name="checkbox[]" value="quellochevuoi" />
    In questo modo puoi recuperare con
    foreach ($_POST['checkbox'] as $nome=>$valore)
    tutti i checkbox selezionati.

  5. #5
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822
    [supersaibal]Originariamente inviato da VaLvOnAuTa
    in quel modo crei solo n checkbox dal nome "checkbox" e non concludi nulla.

    <input type="checkbox" name="checkbox[]" value="quellochevuoi" />
    In questo modo puoi recuperare con
    foreach ($_POST['checkbox'] as $nome=>$valore)
    tutti i checkbox selezionati. [/supersaibal]
    ok ma al posto di value="quellochevuoi" devo mettere il valore dell'id ??

    in questo modo posso arrivare alla "query multipla" ?
    o meglio dentro il foreach ci metto la query:

    UPDATE tabella SET ammesso = ???? WHERE id = ?????

    ho bisogno di più aiuto grazie, e la prima volta che mi capita questo caso grazie. perdono.

  6. #6
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    [supersaibal]Originariamente inviato da Base
    ok ma al posto di value="quellochevuoi" devo mettere il valore dell'id ??

    in questo modo posso arrivare alla "query multipla" ?
    o meglio dentro il foreach ci metto la query:

    UPDATE tabella SET ammesso = ???? WHERE id = ?????

    ho bisogno di più aiuto grazie, e la prima volta che mi capita questo caso grazie. perdono. [/supersaibal]
    puoi fare i checkbox così
    <input type="checkbox" name="checkbox[]" value="<?=$row['id']?>" />

    e nello script che si occupa dell'update fai
    Codice PHP:
    foreach ($_POST['checkbox'] as $nome=>$value) {
     
    mysql_query("UPDATE tabella SET campo=valore WHERE id=".$value) or die();

    oppure
    Codice PHP:
    foreach ($_POST['checkbox'] as $nome=>$value) {
     
    $lista .= (empty($lista)) ? $value ",".$value;
    }
    mysql_query("UPDATE tabella SET campo=valore WHERE id IN ".$lista) or die(); 
    ma di quest'ultimo non sono sicurissimo

  7. #7
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822
    intanto stavo facendo qualche prova...

    il problema è (come hai scritto tu) campo=valore !

    quel valore deve essere 0 o 1 in base al checkbox checkato o no.

  8. #8
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    [supersaibal]Originariamente inviato da Base
    intanto stavo facendo qualche prova...

    il problema è (come hai scritto tu) campo=valore !

    quel valore deve essere 0 o 1 in base al checkbox checkato o no. [/supersaibal]
    allora dato che quel ciclo ti dice quali sono i checkbox checkati, basta modificare la query così:
    "UPDATE tabella SET campo=1 WHERE id IN ".$list
    sei sicuro che tutti gli id selezionati avranno il campo settato ad 1.

  9. #9
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822
    Codice PHP:
    foreach ($_POST['checkbox'] as $nome=>$value) {
     
    mysql_query("UPDATE newusers SET ammesso='1' WHERE id=".$value) or die();

    questo funziona!

    il problema ora è inverso, cioè se unchecko un un checkbox non mi aggiorna nulla!

  10. #10
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    Uhm potresti fare così:
    Codice PHP:
    $lista_id implode(', ',$_POST['checkbox']);
    mysql_query("UPDATE newusers SET ammesso=1 WHERE id IN ".$lista_id) or die(mysql_error());
    mysql_query("UPDATE newusers SET ammesso=0 WHERE id NOT IN ".$lista_id); 
    In questo modo ti setta a 0 tutti gli id non selezionati.. o almeno credo

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.