Visualizzazione dei risultati da 1 a 10 su 18

Visualizzazione discussione

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    306

    Memorizzare in db scelte checkbox

    Ciao a tutti ragazzi
    sono passato a cercare di memorizzare in db e successivamente leggere (sempre dal db) le scelte del checkbox.

    Poichè il tema è simile per tutti le tipologie di campi form (textarea,checkbox, radio, select) ho voluto creare nel mio database di prova (chiamato "db_prova") una tabella dal nome "campi".
    Questa tabella "campi" ha questi campi colonna : "id" (INT), "textarea", "checkbox", "radio", "select" (tutti e quattro VARCHAR).

    Nella pagina html c'è questo form oltre poi al form per il textarea
    codice:
    
    
    codice:
    <br><br>Quali sono i tuoi interessi?<br>
    <input type = "checkbox" name = "ck[]" value = "cucina">cucina <br>
    <input type = "checkbox" name= "ck[]" value = "calcio">calcio<br>
    <input type = "checkbox" name= "ck[]" value = "auto">auto<br>
    
    


    Sono riuscito a memorizzare nel mio db la scelta che effettua l'utente , grazie alla funzione php "serialize()"
    Questa prende un array e lo serializza, cioè crea una stringa con una serie di caratteri particolari (come vedo appunto da phpMyAdmin).

    Il problema è che non riesco a ben capire come far a visualizzare la scelta memorizzata dall'utente.
    Quello sotto è il codice per il recupero del checkbox.

    Ho ragionato così: in fase di recupero, eseguo l'operazione di deserializzazione con la funzione php

    unserialize($campodb)


    ( dove $campodb è il nome del campo colonna della mia tabella, che è una stringa serializzata).

    Per fare in modo che il browser visualizzi il simbolo di spunta in corrispondenza del campo selezionato in precedenza devo avere nel codice html un sistema che mi permette di inserire un attributo "checked" in corrispondenza del campo checkbox selezionato per tutti i campi che l'utente avrà selezionato.

    codice:
     
    <input type = "checkbox" name = "ck[]" value = "cucina<?php echo $c1_checked?>">cucina <br> 
    
    <input type = "checkbox" name= "ck[]" value = "calcio<?php echo $c2_checked?>">calcio<br> 
    
    <input type = "checkbox" name= "ck[]" value = "auto<?php echo $c3_checked?>">auto<br>
    Dove
    $c1_checked, $c2_checked,$c3_checked li vado a valorizzare a seconda di cosa c'è nel $ck




    codice:
    <?php
    require_once('configurazione_credenziali_esterno.php');
    $link = mysqli_connect(DB_HOST, DB_USERN, DB_PSW) or die("Errore connessione: ". mysqli_connect_error());
    $dbw = mysqli_select_db($link, DB_PROVA) or die("Errore apertura database: " . mysqli_error($link));
    
    
    $strsql = "SELECT checkbox FROM campi";
    
    
    $rs = mysqli_query($link, $strsql) or die("Errore query database: " . mysqli_error($link));
    while ($riga = mysqli_fetch_array($rs)) {
        
        $ck=unserialize($riga['checkbox']);
        //$ck è array deserializzato
        //$riga['checkbox'] conterrà i valori cucina o calcio o auto, o tutti serializzato
    
    
    
    
    $c1_checked=Null;
    $c2_checked=Null;
    $c3_checked=Null;
    
    
    if(isset($ck)){
        for($i=0; $i<count($ck);$i++){  
            //dall'indice 0 fino al max num di elementi nell' array, che
            //calcolo con la funzione php count
            if($ck[$i]=='cucina'){$c1_checked='checked';}
            elseif($ck[$i]=='calcio'){$c2_checked='checked';}
            elseif($ck[$i]=='auto'){$c3_checked='checked';}
        }
    }
    
    
    ?>
    <form>
    <input type = "checkbox" name = "ck[]" value = "cucina<?php echo $c1_checked?>">cucina <br>
    <input type = "checkbox" name= "ck[]" value = "calcio<?php echo $c2_checked?>">calcio<br>
    <input type = "checkbox" name= "ck[]" value = "auto<?php echo $c3_checked?>">auto<br>
    </form>
    
    
    
    
    <?php 
    
    
    }?>


    il problema che mi esce è che
    Notice: unserialize(): Error at offset 0 of 1 bytes in C:\Program Files\..........leggere-checkbox.php on line 46
    che è in corrispondenza della riga ​$ck=unserialize($riga['checkbox']);



    Ultima modifica di Alfoxx; 18-09-2016 a 17:24

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.