Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Checkbox (Uncheck)

  1. #1
    Utente di HTML.it L'avatar di Aires
    Registrato dal
    Jan 2010
    Messaggi
    725

    Checkbox (Uncheck)

    Ciao a tutti, avrei un problemino.

    Allora ho una pagina nella quale tramite query pesco una serie di dati e la popolo, poi a fianco ad ogni linea della tabella ho messo una checkbox che salva il valore dell' id della linea corrispettiva, ho predisposto il tutto in modo che se spunto la checkbox tramite query mi faccia l'update di un altra tabella composta da id e flag e mi segni la flag a 1, vorrei anche che la flag vada a 0 se la checkbox non è spuntata.
    Facendo varie modifiche ogni tanto almeno la check la salvava ma ora nessuna delle due, il codice è questo:

    La parte del form corrispondente è questa
    Codice PHP:
    <form action="<?=$_SERVER['PHP_SELF']?>" method="POST">
    [B]... campi del form ...[/B] 
    <td class="td1" width="4%">
      <input type="checkbox" value="<?=$valoredellacheck?>" name="check[]" <?=$checked?>">
    </td>
    [B]... campi del form ...[/B]
    Il controllo invece è questo

    Codice PHP:
    <?
    // Siamo in un ciclo while di una query e siamo su un singolo ID
    // Eseguo una query per vedere nella tabella se è flaggato o no

    $result_tab mysql_query("select * from tabellaX where id like '".$rs['id']."'"$link)or die(mysql_error($link));
      while(
    $rt mysql_fetch_array($result_tab)){            
        
    $flag_da_db $rt['flag'];
        
    $note_da_db $rt['note'];
    }

    // Qua forse ho fatto un po di macello
    if(isset($flag_da_db)&&($flag_da_db!='')){$update_flag $flag_da_db;}else{$update_flag 0;}
        
    $lista_id = Array();
        foreach (
    $_POST['check'] as $key => $value){
            
    $lista_id[] = $value;
        }
        
            if (
    in_array($rs['id'], $lista_id)) {
            
    $ins_flag 1;
            
    $update_flag 1;
            
    $checked 'checked="checked"';
        }else{
            
    $ins_flag 0;
            
    $update_flag 0;
            
    $checked='';
        }
        
    // Successivamente faccio una query per modificare il flag

    mysql_query("Update tabellaX flag ='".$update_flag."'  where id like '".$rs['id']."' "$link) or die(mysql_error($link));
     
    ?>
    Se stampo adesso $update_flag me lo da sempre a 0
    Originariamente inviato da qazar
    Se finisci di leggere il thread mi sono corretto,è solo i kernel scritto in html.
    Originariamente inviato da rnlflame
    Comunque non dovevano crollare

  2. #2
    Utente di HTML.it L'avatar di Aires
    Registrato dal
    Jan 2010
    Messaggi
    725
    Edit:

    Questa linea sopra indicata
    codice:
    <input type="checkbox" value="<?=$valoredellacheck?>" name="check[]" <?=$checked?>">
    In realtà sarebbe così
    codice:
    <input type="checkbox" value="<?=$valoredellacheck?>" name="check[]" <?=$checked?>>
    Ovvero senza un " di troppo
    Originariamente inviato da qazar
    Se finisci di leggere il thread mi sono corretto,è solo i kernel scritto in html.
    Originariamente inviato da rnlflame
    Comunque non dovevano crollare

  3. #3
    Utente di HTML.it L'avatar di Aires
    Registrato dal
    Jan 2010
    Messaggi
    725

    Re: Checkbox (Uncheck)

    Provando a fare varie modifiche sono giunto a questo codice parzialmente funzionante
    Ovvero, la selezione e deselezione delle checkbox funziona e modifica il flag in db, ma quando riapro la pagina azzera tutti (dovrei inserire un controllo ma ho fatto diverse prove e non riesco a risolvere), inoltre la prima checkbox che checko non la modifica, dalla seconda si


    Codice PHP:
    <?
    // Siamo in un ciclo while di una query e siamo su un singolo ID
    // Eseguo una query per vedere nella tabella se è flaggato o no

    $result_tab mysql_query("select * from tabellaX where id like '".$rs['id']."'"$link)or die(mysql_error($link));
      while(
    $rt mysql_fetch_array($result_tab)){            
        
    $flag_da_db $rt['flag'];
        
    $note_da_db $rt['note'];
    }

    // Qua forse ho fatto un po di macello
    if(isset($flag_da_db)&&($flag_da_db!='')){$update_flag $flag_da_db;}else{$update_flag 0;}
        
    $lista_id = Array();
        foreach (
    $_POST['check'] as $key => $value){
            
    $lista_id[] = $value;
        }
        if (
    in_array($rs['id'], $lista_id)) {
            
    $ins_flag 1;
            
    $update_flag 1;
            
    $checked 'checked="checked"';
        }else{
            
    $ins_flag 0;
            
    $update_flag 0;
            
    $checked='';
        }
        
    // Successivamente faccio una query per modificare il flag

    mysql_query("Update tabellaX flag ='".$update_flag."'  where id like '".$rs['id']."' "$link) or die(mysql_error($link));
     
    ?>
    Originariamente inviato da qazar
    Se finisci di leggere il thread mi sono corretto,è solo i kernel scritto in html.
    Originariamente inviato da rnlflame
    Comunque non dovevano crollare

  4. #4
    Utente di HTML.it L'avatar di Aires
    Registrato dal
    Jan 2010
    Messaggi
    725
    Up
    Originariamente inviato da qazar
    Se finisci di leggere il thread mi sono corretto,è solo i kernel scritto in html.
    Originariamente inviato da rnlflame
    Comunque non dovevano crollare

  5. #5
    Utente di HTML.it L'avatar di Aires
    Registrato dal
    Jan 2010
    Messaggi
    725
    Up

    La spiego diversamente e accetto qualsiasi idea

    Allora ho una checkbox cosi definita

    Codice PHP:
        <td class="td1" width="4%"><input type="checkbox" value="<?=$valorecheck?>" name="check[]" <?=$checked?>></td>
    Questa viene aggiunta ad ogni linea estratta dal db, quindi avrò una tabella con molte check.
    Come faccio per far si che se la checkbox è spuntata faccia l'update del campo flag a 1 e se non è spuntata faccia l'update a 0? Ho fatto varie prove, devo comunque passare il valore dell'id di quella linea. Su si vedono i miei test ma tutti infruttuosi
    Originariamente inviato da qazar
    Se finisci di leggere il thread mi sono corretto,è solo i kernel scritto in html.
    Originariamente inviato da rnlflame
    Comunque non dovevano crollare

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.