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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Sauvegarde de réponses sur bouton radio


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 21
    Par défaut Sauvegarde de réponses sur bouton radio
    Bonjour,

    Je créé actuellement un questionnaire comprenant 2 types de réponses: radio et textarea.

    L'utilisateur rempli le questionnaire et clique sur un bouton pour enregistrer les réponses. Ces réponses sont envoyées sur un fichier Excel.

    Tout fonctionne à peu près: l'affichage est bon (j'obtiens une page toute bête avec les questions suivies soit d'une zone de texte ou de boutons radio) et lorsqu'on clique sur "Enregistrer", un message de confirmation apparaît bien. Mon souci se situe au niveau de la sauvegarde des données. Je n'ai aucun problème avec les textarea, ça fonctionne. En revanche je n'arrive pas à sauvegarder les réponses radio.

    Tout d'abord voici un morceau de code (traitement d'une réponse radio):
    XML:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <ennonce8>8/ Votre établissement est-il labellisé ?</ennonce8>
     
    <item type="radio" name="q8" display="cols">
            <subitem val="1" name="label">Oui</subitem>
            <subitem val="2" name="label">Non</subitem>
    </item>
    PHP
    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
    16
    17
    18
    19
    $ennonce8 = utf8_decode($xml->ennonce8);
    $formula =  "<form name='quest' method='post' onsubmit='return verif();' action='".$_SERVER['PHP_SELF']."'>";
    $nbrequest =  count($xml->item);
     
    for($i=0;$i<$nbrequest;$i++){
        $subitems=count($xml->item[$i]->subitem);
     
        if($xml->item[$i]->attributes()->type == "radio"){
                if(utf8_decode($xml->item[$i]->attributes()->name) == "q8"){
                     $formula.= $ennonce8 ."<br>";
                     for($j=0;$j<$subitems;$j++){
                          $formula.= "<input type='radio' name='label' value='".$xml->item[$i]->subitem[$j]->attributes()->val ."'>".utf8_decode($xml->item[$i]->subitem[$j])."<br>";
                     }
                }
        }
    }
     
    $formula.= "<center><input type='hidden' name='action' value='Enr'><input type='submit' value='Enregistrer'><button type='submit' onClick='clickMonBouton();'><img src='css/images/enre.png'></button></td></tr></table></form><center>";
    echo $formula;
    PHP (traitement des données pour le placement dans le fichier excel)
    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
    16
    17
    18
    19
    20
    21
    22
    for($i=0;$i<$nbrequest;$i++){
     
        $subitems=count($xml->item[$i]->subitem);
        if($xml->item[$i]->attributes()->type == "radio"){
     
            for($j=0;$j<$subitems;$j++){
                $formula.= getval($xml->item[$i]->subitem[$j]).";";
            }
     
            }
            if($xml->item[$i]->attributes()->type == "textarea"){
                $zonet = urldecode(str_replace("%0D%0A","| ",getval($xml->item[$i]->attributes()->name)));
            $formula.= $zonet.";";
        }
    }
    $formula .="\n";
    $filename2 = "results/DOTC.csv";
    $fd2 = fopen($filename2,"a");
    fwrite($fd2, $formula);
    fclose($fd2);
    header('Location: fin.php');
    exit();
    En ce qui concerne ce "fin.php" qui apparait dans le code, il s'agit de la page de confirmation (avec un message).
    Le $formula contient tous les éléments qui seront affichés.

    J'ai beau la retourner dans tous les sens, je ne m'en sors pas.

    Je vous prie de m'excuser si j'utilise des éléments de langage obsolètes, je n'ai pas pratiqué énormément le CSS.

    Je vous remercie d'avance.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Pourquoi passes-tu par tout ce traitement XML ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 21
    Par défaut
    Rien de spécial. J'espérais juste bien séparer les questions/réponses du reste du code pour plus de lisibilité (si je dois le réutiliser par la suite pour un autre questionnaire).

  4. #4
    Membre Expert

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    C'est vraiment se compliquer ENORMEMENT la vie pour pas grand chose au final.

    Il est clair que nativement (c'est mon cas en tout cas), on a toujours tendance à vouloir trop factoriser au maximum, le rendre le plus réutilisable possible.

    Mais clairement à un moment donné, faut dire stop on s'arrête là et tant pis si on veut refaire un truc similaire. Je pense que c'est clairement ton cas. Oublie le XML et fait simple.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 21
    Par défaut
    Salut.

    Je ne sais pas...
    ça m'embête un peu dans la mesure où je pense ne pas être très loin de la fin. Il me reste seulement ce problème de bouton radio à éclaircir. Je viens de remarquer un truc c'est que sur le fichier excel, ça laisse vide les cases réservées aux réponses radio et les réponses text area sont remplies. Là où ça va pas, c'est qu'il n'y a pas une case vide pour chaque question à réponse radio, mais une case vide pour chaque réponse radio, même celles qui n'ont pas été sélectionnées.
    De coup, par exemple, une question qui a pour réponse Oui ou Non aura 2 cases réservées au lieu d'une seule.
    Mais en tout cas, à l'avenir, je pense que faire sans sera du coup la meilleure solution.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    tu réalises bien que tout ce traitement XML n'est pas gratuit pour PHP et qu'aller analyser le code du formulaire pour savoir quoi faire des résultats reçus c'est se marcher sur la tête.
    Bref tout ça c'est une usine à gaz et malheureusement à relire pour t'aider c'est horrible.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 278
    Par défaut
    Si l'objectif est d'insérer des données via un formulaire HTML dans une base de données, le plus simple et le plus opportun est d'utiliser le couple PHP/SQL.

    Le PHP servira (entre autres) à alimenter ta base de données.
    Le SQL sera ta base de données.

    Juste un rappel : pour insérer un bouton radio, il faut mettre le champs SQL avec le type int(11).

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/06/2007, 14h44
  2. clic sur bouton radio
    Par kevinf dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/09/2006, 16h23
  3. javascript derrière un onclick sur bouton radio
    Par lodan dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 19/08/2006, 18h03
  4. Désactivation et détection de clic sur bouton radio
    Par Prue dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 21/04/2006, 13h50
  5. onclick sur bouton radio?
    Par Art19 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 08/07/2005, 14h43

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