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 :

Récupération de données [PHP 5.4]


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Récupération de données
    Bonjour,
    Alors voila je vous explique mon problème.

    J'ai créé un formulaire avec dedans notamment une question avec plusieurs réponse 'possible'. Le mode de réponse à cette question est par checkbox.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <tr><td> Si oui, lesquelles ?</td></tr>
    <tr><td>
    	<INPUT TYPE="CHECKBOX" NAME="etu_sco2[]" VALUE="0">Toussaint <BR> 
    	<INPUT TYPE="CHECKBOX" NAME="etu_sco2[]" VALUE="1">Vacances de Noël<BR> 
        <INPUT TYPE="CHECKBOX" NAME="etu_sco2[]" VALUE="2">Vacances d hiver<BR> 
        <INPUT TYPE="CHECKBOX" NAME="etu_sco2[]" VALUE="3">Vacances de printemps <BR> 
    	<INPUT TYPE="CHECKBOX" NAME="etu_sco2[]" VALUE="4">Vacances d'été <BR>


    Je sauvegarde la/les réponses comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (empty($_POST['etu_sco2'])) $etu_sco2 = NULL; else $etu_sco2 = htmlentities(implode(', ',$_POST['etu_sco2']), ENT_QUOTES, "UTF-8");
    Cette méthode fonctionne parfaitement, les infos sont bien gardées dans la base de données.
    Bref c'est cool.

    Maintenant ça se complique.

    Quand je veux retourner sur le formulaire pour le modifier par exemple, je veux voir les informations qui ont préalablement été inscrites.

    Or actuellement je n'arrive à récupérer les informations SI et seulement SI il n'y a qu'une checkbox de cochée à la base...
    Ce qui est problématique.

    En clair, si par exemple, vacances d'été et d'hiver sont cochées lors de la création d'une ligne dans la base de données. J'aimerai quand je la modifie avoir ces réponses cochées au préalable.

    En espérant réellement que vous puissiez m'aider.
    Je vous remercie d'avance du temps que vous m'accordez.

    Je suis ouvert à toutes propositions même si je dois changer la façon dont je dois sauvegarder les données dans ma base.
    P.S. : je suis relativement débutant donc pas trop dur si possible :p

  2. #2
    Membre averti

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 205
    Points : 409
    Points
    409
    Billets dans le blog
    1
    Par défaut
    En retour de base, je suppose que tu as un tableau etu_sco2 qui contient les réponses cochées ?
    Si oui, il te suffit de comparer la valeur courante et ton tableau de réponses cochées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $vacances = array('Toussaint', 'Vacances de Noël', 'Vacances d\'hiver', 'Vacances de printemps', 'Vacances d\'été');
    ?>
    <tr><td> Si oui, lesquelles ?</td></tr>
    <tr><td>
    <?php
    foreach ($vacances as $key=>$value)
    {
        echo '<input type="checkbox" name="etu_sco2[]" value="'.$key.'" '.(in_array($key, $etu_sco2) ? 'checked="checked"' : '').'>'.$value.'<br />';
    }

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Tout d'abord merci de m'avoir répondu et surtout merci pour ta rapidité !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    	echo '<pre>';
    	print_r($etu_sco2);
    	echo '</pre>';
    foreach ($vacances as $key=>$value)
    {
        echo '<input type="checkbox" name="etu_sco2[]" value="'.$key.'" '.(in_array($key, $etu_sco2) ? 'checked="checked"' : '').'>'.$value.'<br />';
    }
    	?>
    Alors voila ce que j'ai mis en php pour que puisse voir quelle est ma forme de retour de base. Dans l'exemple choisis, Toussaint, vacances d'hiver et vacances d'été sont "cochés".




    Voila ce que j'ai, niveau réponse html:

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <pre>0, 2, 4</pre><br>
    <b>Warning</b>:  in_array() expects parameter 2 to be array, string given in <b>C:\Program Files\EasyPHP-12.1\www\Toit\seek_etu.php</b> on line <b>682</b><br>
    <input name="etu_sco2[]" value="0" type="checkbox">Toussaint<br><br>
    <b>Warning</b>:  in_array() expects parameter 2 to be array, string given in <b>C:\Program Files\EasyPHP-12.1\www\Toit\seek_etu.php</b> on line <b>682</b><br>
     
    <input name="etu_sco2[]" value="1" type="checkbox">Vacances de Noël<br><br>
    <b>Warning</b>:  in_array() expects parameter 2 to be array, string given in <b>C:\Program Files\EasyPHP-12.1\www\Toit\seek_etu.php</b> on line <b>682</b><br>
    <input name="etu_sco2[]" value="2" type="checkbox">Vacances d hiver<br><br>
    <b>Warning</b>:  in_array() expects parameter 2 to be array, string given in <b>C:\Program Files\EasyPHP-12.1\www\Toit\seek_etu.php</b> on line <b>682</b><br>
     
    <input name="etu_sco2[]" value="3" type="checkbox">Vacances de printemps<br><br>
    <b>Warning</b>:  in_array() expects parameter 2 to be array, string given in <b>C:\Program Files\EasyPHP-12.1\www\Toit\seek_etu.php</b> on line <b>682</b><br>
    <input name="etu_sco2[]" value="4" type="checkbox">Vacances d été<br>
    donc non il ne semblerait pas que j'ai un tableau, niveau retour de base. Si c'est plus simple qu'il y en ait un, je ne suis pas contre par contre je ne sais comment faire ;(
    Donc si tu peux m'aider la dessus je suis ouvert à ta/tes propositions.

    Merci pour ton temps.

  4. #4
    Membre averti

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 205
    Points : 409
    Points
    409
    Billets dans le blog
    1
    Par défaut
    Deux solutions s'ouvrent à toi ici.
    - transformer ta chaîne en tableau : $etu_sco2 = explode(',', $etu_sco2);

    - changer la condition d'affichage du checked="checked" pour vérifier si ta valeur existe bien dans la chaîne de caractère : FALSE !== strpos($etu_sco2, $key)La deuxième solution sera sûrement plus simple et tout aussi efficace

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    je viens d'utiliser la première solution vu que je ne comprenais pas la deuxième :p
    ET.... ça marche,
    un grand merci, et bravo !

  6. #6
    Membre averti

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 205
    Points : 409
    Points
    409
    Billets dans le blog
    1
    Par défaut
    Voilà pour la deuxième solution, qui est sans doutes plus propre que la première :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        echo '<input type="checkbox" name="etu_sco2[]" value="'.$key.'" '.((FALSE !== strpos($etu_sco2, $key)) ? 'checked="checked"' : '').'>'.$value.'<br />';

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/04/2004, 11h09
  2. Réponses: 2
    Dernier message: 20/02/2004, 09h47
  3. [ DB2] => [ORACLE] Récupération de données
    Par LeDid dans le forum DB2
    Réponses: 3
    Dernier message: 25/06/2003, 18h10
  4. Réponses: 13
    Dernier message: 20/03/2003, 09h11
  5. [XMLRAD] récupération de donnée
    Par Mitch79 dans le forum XMLRAD
    Réponses: 7
    Dernier message: 30/01/2003, 16h36

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