Page 1 sur 1

Enregistrement et récuperation de la valeur d'une checkbox v

Posté : 10 févr. 2009, 12:23
par Spit
Bonjour,

Dans le cadre d'un projet professionnel, je suis à la recherche d'un morceau de code qui me bloque mon projet depuis 2semaines.

J'ai fait plusieurs recherche sur internet et ce genre de question est souvent mal interprété ou mal répondu, en général, sa ne ressemble pas au projet que je suis entrain de faire.

Comme l'indique le titre du topic, je voudrai faire une formulaire avec plusieurs checkbox et un bouton 'submit' qui enregistrerai l'état ( coché ou non ) des Checkbox.

ensuite par simple connexion par login, je récupérerai l'état des checkboxs ( coché ou non ).

Pour faire simple je voudrai juste ce morceau de code, qui permet l'enregistrement et la récupération de l'état d'une checkbox vers/depuis une BDD.

Si vous avez besoin que je vous donne plus de détail, je suis à votre disposition.


En vous remercient de votre futur réponse.

SpiT

Posté : 10 févr. 2009, 13:18
par ouckileou
Voici comment récupérer les valeurs : http://www.phpfrance.com/forums/voir_sujet-5220.php

Ensuite va sur phpdebutant.org par exemple et regarde comment alimenter une base de données avec PHP.

Tu pourras poser des questions si tu n'arrives pas à faire telle ou telle chose précise.

Posté : 10 févr. 2009, 15:58
par SpiT
Merci pour ce lien je ne l'avais pas vu dans mes recherches.

Je vais essayer de creuser ce code puisque je ne veu pas récupérer la valeur "textuelle" de la checkbox mais si elle est coché ou non, donc imaginons :

[x] choix 1
[ ] choix 2

[Envoyer]

Quand l'utilisateur clique sur "envoyer", La fonction "etat coché ( donc Checked)" est envoyé.

L'utilisateur reviens le lendemain pour cocher le choix 2.

Il se connecte avec ces log et l'etat "coché" de la checkbox est reprise dans la base de donnée.
En gros je voudrai que la checkbox soit coché automatiquement puisqu'il avai enregistré cette état.
[x] choix 1
[ ] choix 2

Merci encore.

Posté : 10 févr. 2009, 16:04
par SpiT
Mhh je pensse avoir deja trouvé pour avoir directement les CB coché:

Code : Tout sélectionner

<?php // vérifions que la variable a été transmise $tabLangages = (isset($_POST['langage']))?$_POST['langage']:null; echo "Voici les langages que vous avez choisi :<br>"; // bouclons sur le tableau qui a été transmis et affichons les valeurs sélectionnées if (!empty($tabLangages)) { foreach($tabLangages as $cle => $valeur) { echo $cle.'<input type="checkbox" checked="checked">'.$valeur.'<br>'; } } ?>
Je suis entrain de bosser sur l'enregistrement dans ma BDD

Posté : 10 févr. 2009, 17:07
par SpiT
Bon je rencontre un problème :

J'aimerai que même si les CB ne sont pas coché, la valeur s'affiche quand même, avec une CB non coché.

J'ai essai cela mais aucune valeur se rajoute :
<?php
// vérifions que la variable a été transmise
$tabLangages = (isset($_POST['langage']))?$_POST['langage']:null;

echo "<br>";
// bouclons sur le tableau qui a été transmis et affichons les valeurs sélectionnées
if (!empty($tabLangages)) 
	{
		foreach($tabLangages as $cle => $valeur) 
			{
				echo '<input type="checkbox" checked>'.$valeur.'<br>';	
			}
	}
Else
echo '<input type="checkbox">'.$valeur.'<br>';	
		
?> 
Une idée?

Posté : 10 févr. 2009, 17:11
par mere-teresa
Ah grande question, dans $tabLangages, tu ne récupères que les langues cochées du formulaire. Si veux, il va falloir faire un tableau de référence : $tabTousLangages, et durant le foreach, tu regardes si la valeur en cours sur $tabTousLangages a une correspondance dans le tableau $tabLangages.

Posté : 10 févr. 2009, 17:33
par SpiT
OUllaaa sa va un peu loin :( je pensé pas que sa allé être aussi casse tête que sa.

Je pensé plutôt en langage francais :


si CB coché alors etat = 1
si CB non coché alors etat = 0

et à la lecture :

si etat = 1 alors cocher CB
si etat = 0 alors CB non coché

mais je vois que c'est bien compliqué :(

Donc pourriez-vous en grande âme généreuse, me rajouter juste cette ligne de code? :).

Histoire de me débloquer que je puisse ce soir et cette nuit plancher sur l'enregistrement vers ma BDD.

Merci.

Posté : 10 févr. 2009, 17:36
par mere-teresa
<?php
// vérifions que la variable a été transmise
$tabLangages = (isset($_POST['langage']))?$_POST['langage']:null;
$tabTousLangages = array('fr', 'en', 'de'); //à adapter à ton cas

echo "<br>";
// bouclons sur le tableau de toutes les langues et affichons les valeurs qui sont dans le tableau transmis des valeurs sélectionnées
if (!empty($tabLangages)) 
    {
        foreach($tabTousLangages as $langue) 
            {
                 if(in_array($langue, $tabLangages))

                echo '<input type="checkbox" checked="checked">'.$valeur.'<br>';    
            }
            else 
           {
               echo '<input type="checkbox" >'.$valeur.'<br>';    
            }
    }
//Else
//echo '<input type="checkbox">'.$valeur.'<br>';    
        
?> 

Posté : 10 févr. 2009, 17:51
par SpiT
Merci beaucoup

Mais :

Code : Tout sélectionner

Parse error: syntax error, unexpected T_ELSE in ./test/script.php on line 16

:(

Posté : 10 févr. 2009, 18:32
par albat
Manquaient des accolades... :evil:
<?php
// vérifions que la variable a été transmise
$tabLangages = (isset($_POST['langage']))?$_POST['langage']:null;
$tabTousLangages = array('fr', 'en', 'de'); //à adapter à ton cas

echo "<br>";
// bouclons sur le tableau de toutes les langues et affichons les valeurs qui sont dans le tableau transmis des valeurs sélectionnées
if (!empty($tabLangages)) 
   { foreach ($tabTousLangages as $langue) 
             { if (in_array($langue, $tabLangages))
                 { echo '<input type="checkbox" checked="checked">'.$valeur.'<br>';    
                 }
                 else 
                 { echo '<input type="checkbox" >'.$valeur.'<br>';    
                 }
             }
   }
// else
// echo '<input type="checkbox">'.$valeur.'<br>';    
?>
On peut aussi optimiser ainsi :
<?php
// vérifions que la variable a été transmise
$tabLangages = (isset($_POST['langage']))?$_POST['langage']:null;
$tabTousLangages = array('fr', 'en', 'de'); //à adapter à ton cas

echo "<br>";
// bouclons sur le tableau de toutes les langues et affichons les valeurs qui sont dans le tableau transmis des valeurs sélectionnées
if (!empty($tabLangages)) 
   { foreach ($tabTousLangages as $langue) 
             { echo '<input type="checkbox" '.(in_array($langue, $tabLangages) ? 'checked="checked"' : '').'>'.$valeur.'<br>';    
             }
   }
// else
// echo '<input type="checkbox">'.$valeur.'<br>';    
?>

Posté : 10 févr. 2009, 21:09
par Invité
Merci encore,

Il y a bien tous qui s'affiche à par le nom des valeurs :(

Je vous met le code de mes 2 pages :

Code des sélections des CB :
<form name="formulaire1" method="POST" action="script.php">
Selectionner votre langage :<br>
<input type="checkbox" name="langage[]" value="fr"> Français <br>
<input type="checkbox" name="langage[]" value="en"> anglais <br>
<input type="checkbox" name="langage[]" value="de"> allemand <br>
<input type="submit" name="submit" value="Envoyer">
</form>
Code du fichier traitement :
<?php
// vérifions que la variable a été transmise
$tabLangages = (isset($_POST['langage']))?$_POST['langage']:null;
$tabTousLangages = array('fr', 'en', 'de'); //à adapter à ton cas

echo "<br>";
// bouclons sur le tableau de toutes les langues et affichons les valeurs qui sont dans le tableau transmis des valeurs sélectionnées
if (!empty($tabLangages)) 
   { foreach ($tabTousLangages as $langue) 
             { if (in_array($langue, $tabLangages))
                 { echo '<input type="checkbox" checked="checked">'.$valeur.'<br>';    
                 }
                 else 
                 { echo '<input type="checkbox" >'.$valeur.'<br>';    
                 }
             }
   }
?> 

Posté : 10 févr. 2009, 22:41
par ouckileou
$valeur n'existe pas, cherche la bonne variable à utiliser pour afficher la langue.

C'est un code de base, il faut absolument que tu comprennes bien ce que tu fais pour cet exercice.

Posté : 11 févr. 2009, 03:22
par SpiT
Et bien voila j'ai enfin terminé ma 1er étape : Enregistrement et récupération de la valeur d'une Checkbox depuis/vers une base de donnée :). "So Happy"

Il me reste pas mal de chose a faire.


Merci encore.

PS : en signe de remerciement, j'aurai voulu mettre le lien de votre site internet en bas de page de mon projet, cela ne vous dérange pas?

Posté : 11 févr. 2009, 11:11
par mere-teresa
Non, tu peux, cela ne nous dérange aucunement :)

Modération :
Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton Image qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)