IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

stocker resultat checkbox dans BDD avec serialize


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Points : 104
    Points
    104
    Par défaut stocker resultat checkbox dans BDD avec serialize
    Bonjour à tous,

    Je bloque sur un point. je souhaite sur mon site offrir à l'utilisateur la possibilité de choisir ses activités préférées parmi une liste.

    Voici mon code php pour génerer la liste de checkbox en fonction de mes activités :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <tr><td class="bold_right">Mes activités préférées</td>
          <td>
                 <?php
                        $sql3="SELECT * FROM Activite WHERE Visible='O'";
    			$res_sql3=mysql_query($sql3) or die (mysql_error());
    		        while ($data3 = mysql_fetch_assoc($res_sql3)){ 
    				extract($data3);
    				echo "<input type='checkbox' name='activites[]' value='".$data3['id_act']."'>";
    				echo "".$data3['activite']." (".$data3['id_act'].")";
    				echo "<br/>";
    			}
    	       ?>
           </td>
    </tr>
    Ensuite je l'ajoute à ma table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    		$sql=serialize($_POST["activites"]);
    		$req = "UPDATE Member SET activites='".$sql."' WHERE loginName ='" . $_SESSION['logname'] . "'" ;
            mysql_query($req);
    Voici ma chaine sérialisé : a:2:{i:0;s:3:"002";i:1;s:3:"004";}

    Par contre quand je veux le récupérer de ma base. Je n'y arrive pas. Je n'ai pas de résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    					$sql3="SELECT activites FROM Member WHERE loginName='{$_SESSION['logname']}'";
    						$res_sql3=mysql_query($sql3)
    						or die (mysql_error());					
    					while ($data3 = mysql_fetch_assoc($res_sql3)){ 
    						$tab unserialize($data3['activites']);
    						extract($data3);
    						echo $tab;
    					}
    Est-ce que serialize et unserialize sont bien adaptés à ce que je souhaite faire ?

    Merci pour votre aide.

  2. #2
    Membre régulier
    Homme Profil pro
    Chef opération transport urbain
    Inscrit en
    Avril 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Chef opération transport urbain
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2008
    Messages : 92
    Points : 112
    Points
    112
    Par défaut
    echo $tab ne te donnera pas de résultat puisque c'est un tableau. Il faut plutôt faire print_r($tab).

    Il te manque aussi un signe = entre $tab et unserialize.

    Je trouve que c'est imposant de conserver autant de texte dans une BDD.

    J'aurais utilisé une autre méthode pour conserver les données

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    		$sql=implode(',',$_POST["activites"]);
    		$req = "UPDATE Member SET activites='".$sql."' WHERE loginName ='" . $_SESSION['logname'] . "'" ;
            mysql_query($req);
    et pour récupérer les données
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    					$sql3="SELECT activites FROM Member WHERE loginName='{$_SESSION['logname']}'";
    						$res_sql3=mysql_query($sql3)
    						or die (mysql_error());					
    					while ($data3 = mysql_fetch_assoc($res_sql3)){ 
    						$tab=explode(',',$data3['activites']);
    						extract($data3);
    						echo $tab;
    					}
    Avec cette méthode, tu conserves uniquement les données dont tu as réellement besoins, i.e. les ID des activités.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Points : 104
    Points
    104
    Par défaut
    Merci pour ta réponse. Effectivement c'est plus propre et plus simple.

    Par contre la requete me renvoie array !!!
    [EDIT] J'avais oublié le print_r

    Je récupère ensuite avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for($i=0;$i<sizeof($tab);$i++) {
    	echo $tab[$i].'<br>';
    }

  4. #4
    Membre régulier
    Homme Profil pro
    Chef opération transport urbain
    Inscrit en
    Avril 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Chef opération transport urbain
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2008
    Messages : 92
    Points : 112
    Points
    112
    Par défaut
    Citation Envoyé par mikael2235 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for($i=0;$i<sizeof($tab);$i++) {
    	echo $tab[$i].'<br>';
    }
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach($tab as $value){
    echo $value.'<br>';
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Insert fichier xml dans BDD avec des sous noeuds
    Par AntonyG43 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 19/01/2011, 15h50
  2. [MySQL] Insertion checkbox dans bdd mysql
    Par abdias1976 dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 19/04/2010, 16h48
  3. Réponses: 11
    Dernier message: 26/12/2009, 17h29
  4. Enregistrement dans BDD avec boucle: Error!
    Par tryks dans le forum Langage
    Réponses: 8
    Dernier message: 24/05/2009, 17h32
  5. [Conception] stocker lien image dans bdd
    Par aurelie1981 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/02/2007, 16h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo