Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1

    Portabilità variabili da lista checkbox dinamica

    Ciao a tutti.
    Avrei un problema con una lista tipo checkbox. Io creo un elenco di dati checkbox che legge dinamicamente valori da un db.
    Mi spiego: ho un db di tot record e ogni record ha campi che possono avere valore 0 oppure 1. La query legge i record con i campi e li mostra a video con i campi di valore = a 1 checkati e quelli di valore = a 0 non checkati... A questo punto, però, viene data la possibilità all'utente di modificare questi check, ossia gli viene data facoltà di attivare/disattivare taluni campi.

    Domanda: dato un submit io vorrei che i campi modificati venissero aggiornati nel db. I check non modificati vengono ignorati, quelli che erano = a 0 e attivati dall'utente dovrebbero essere posti = a 1 e quelli disattivati dall'utente (quelli che erano = a 1) dovrebbero essere posti = a 0 nel db....
    Notare che, non conosco all'inizio il numero dei campi che compongono un record ma so che non possono essere più di 5, io creo la lista dinamicamente così:

    codice:
    <form name="" method="post" action="" class="form-change"> 
    <fieldset class="fieldset"> 
    for ($i = 1; $i <= 5; ++$i) { 
    if ($row[$i] == 0) { 
    <input type="checkbox" name="check[]" value=""/> 
    <?php echo "$field[$i]";?> 
    
     
    <?php } else {?> 
    <input type="checkbox" name="check[]" value="" checked="checked"/> 
    <?php echo "$field[$i]";?> 
    
     
    <?php 
    }  
    } ?> 
    </fieldset> 
    
    
    <input type="submit" name="update" value="invio" /> 
    </form>
    Grazie in anticipo a tutti, sono veramente a digiuno di php, accetto qualsiasi suggerimento
    Alessandra

  2. #2
    meglio se fai che ad ogni checkbox dai il nome del rispettivo campo del DB.

    e poi quando ricevi il form fai cosi:

    1. imposti tutti i valori a 0
    2. imposti i valori ricevuti a 1
    Ciao!

  3. #3
    esempio....


    con un unica query fai

    Codice PHP:
    $query "UPDATE tabella SET";

    foreach(
    $_POST AS $key $value)
    {
       if(isset(
    $_POST[$key]))
       {
          
    $query .= "$key = '1', ";
       } else {
          
    $query .= "$key = '0', ";
       }
    }

    $query .= "WHERE id = '$id'"
    Ciao!

  4. #4
    Ciao a tutti, intanto grazie a fmortara per la risposta.
    Ho provato a metterla in pratica ma purtroppo non riesco a far funzionare la cosa.

    Provo a postare un po' di codice perchè io scrivo, scrivo e poi alla fine mi "incasino" ancora di più da sola

    dato l'array:

    $field = array('id', 'email', 'stato', 'want_delete', 'failure', 'self_request');

    consideriamo solo i campi
    'stato', 'want_delete', 'failure', 'self_request'

    creo così una lista che mi presenta i valori dei vari campi, checkati o no a seconda che il loro valore si uguale a uno oppure a zero.

    La form la creo così:
    codice:
    <form name="update" method="post" action="" class="form-change">
    <fieldset class="fieldset">
    <div class="legend">Per modificare gli attributi
    dell'indirizzo email
    aggiornare i campi e premere invio</div>
    
    <?php
    for ($i = 2; $i <= 5; ++$i) {
    if ($row[$i] == 0) {
    ?>
    <input type="checkbox" name="<?php echo "$field[$i]";?>" value="<?php echo "$row[$i]";?>"/><?php echo "$field[$i]";?>
    
    
    <?php
    } else {?>
    <input type="checkbox" name="<?php echo "$field[$i]";?>" value="<?php echo "$row[$i]";?>" checked="checked"/><?php echo "$field[$i]";?>
    <?php
    }
    } ?>
    </fieldset>
    <input type="hidden" name="change_id" value="<?php echo $id; ?>">
    <input type="submit" name="update" value="invio" />
    </form>
    A questo punto, quando invio la form $update = $_POST['update']; come faccio a far aggiornare i campi al db? Ho provato ad azzerare tutti i campi ma cmq non riesco a portarmi dietro il valore dei soli checkbox checkati.....

    posso chiedervi cortesemente qualche altro esempio?

    Grazie
    Alessandra

  5. #5
    Altra cosa che mi confonde ulteriormente:
    perchè, dopo aver visualizzato la lista checkbox, se eseguo questo controllo del pulsante:

    if(isset($update)) {
    foreach($_POST AS $key => $value)
    echo $key.": ".$value;
    }

    ipotizzando di avere i primi 2 campi checkati e gli altri 2 no, mi dice:

    stato: 1
    want_delete: 1
    update: invio

    cos'è update: invio ? Si porta dietro il nome del pulsante.....

  6. #6
    up

  7. #7
    Ragazzi, del suggerimento di fmortara non mi viene letto il if(isset($_POST[$key]))
    non c'è un altro modo per passare il valore dei checkbox checkati ?

    Se il mio array è $check devo scrivere if(isset($_POST[$key])) oppure if(isset($check[$key])) ---dove $check è = $_POST('check') ---??
    Anche se in entrambi i modi non funzia.....

    Avrei proprio bisogno di questo aiuto, grazie!
    Alessandra

  8. #8
    in attesa di risposte io studio..... e ancora non ho risolto il problema....

    Ho un db con dei record, ogni record ha 4 campi il cui valore puo' essere zero oppure uno.
    Selezionando con una query uno dei record riproduco una lista di checkbox che rappresenta lo stato dei miei 4 campi: ipotizziamo che a valore 0 il campo non è checkato mentre a valore 1 lo è...
    <input type="checkbox" name="check[]" value="0">
    <input type="checkbox" name="check[]" value="1">
    <input type="checkbox" name="check[]" value="1">
    <input type="checkbox" name="check[]" value="0">

    a questo punto l'utente è libero di aggiungere o togliere segni di spunta, modificando, di fatto il valore dei campi del record....

    con un array ($_POST['check']) avrò un array che conterrà gli indici e i valori dei campi checkati della mia lista checkbox. Se non erro, i campi non checkati equivalgono a campi non esistenti perchè non vengono inseriti, quindi nel mio array non ci sarà traccia dei checkbox non checkati..... giusto???

    Bene... io vorrei utilizzare l'array per aggiornare il mio db.
    Poniamo che l'utente abbia così aggiornato la mia lista di campi ....
    <input type="checkbox" name="check[]" value="0">
    <input type="checkbox" name="check[]" value="0">
    <input type="checkbox" name="check[]" value="0">
    <input type="checkbox" name="check[]" value="1">

    Solo l'ultimo dei 4 campi è checkato (mentre prima lo erano il secondo e il terzo), il primo è immutato mentre gli altri 3 sono stati modificati
    Ma dal momento che non ho a disposizione i dati non checkati, l'array risultante in questo caso conterrà un solo $key => $value che avrà chiave 0 e valore 1....

    Come faccio a costruire la query che identifichi quell'unico valore dell'array da sostituire al 4° campo del record??

    foreach ($_POST['check'] as $key => $value)
    if(isset($_POST[$key]))

    a me non funziona...... e in effetti se lo applico su un array che non porta traccia dei campi non checkati come potrebbe funzionare??!? oppure io a questo punto mi sono bevuta il cervello ....

    Per favore qualcuno che apprezzi la mia buona volontà e mi risponda pliiiiis????

    Alessandra :-(

  9. #9
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    Ciao.
    Dunque... ti conviene dare ai vari checkbox un value pari all'id del record.
    Ipotizzando sempre che tu abbia sempre

    $field = array('id', 'email', 'stato', 'want_delete', 'failure', 'self_request');

    Codice PHP:
    <input type="checkbox" name="check[]" value="'.$field['id'].'" '.(($field['want_delete'])?'checked ':'').'/>'.$field['email'].' ';} 
    In questo modo in $_POST hai un array $_POST['check'] che ha come key gli id dei tuoi record e come valore true oppure false.

    In questo modo potrai fare
    Codice PHP:
    foreach ($_POST['check'] as $key => $value){
    mysql_query("UPDATE table SET want_delete = '".$value."' WHERE id='".$key."'"); 


    Dovrebbe funzionare, non ho modo di provare adesso

  10. #10
    La form dovrebbe essere cosi:

    codice:
    <input type="checkbox" name="chiave" value="true" />
    questo se checkato porta alla pagina un valore true nell'array $_POST, ed esattamente $_POST['chiave'] == 'true'.

    scorrendo l'array $_POST intercetti i valori ed esegui le operazioni.
    Ciao!

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.