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 :

Affichage de select/textarea


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre à l'essai
    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
    Points : 17
    Points
    17
    Par défaut Affichage de select/textarea
    Bonjour à tous.

    J'ai développé un programme permettant d'afficher un formulaire, alternant select et textarea. Les réponses aux questions sont sauvegardées dans un fichier excel. ça fonctionne bien à un détail près : j'ai un problème d'affichage :


    Nom : questions.png
Affichages : 204
Taille : 9,5 Ko

    Le select et le textarea ne sont pas censés être collés. Le textarea devrait être à la ligne et précédé de la mention "Commentaires".
    De plus lorsque je clique sur un bouton "Enregistrer" en bas de page, une page de confirmation devrait apparaître. Mais ce n'est pas le cas.
    Pour ce qui est de mon programme, je passe par un fichier XML comportant les questions et les types de réponses.

    En cherchant dans mon programme, il s'avère que l'erreur vient de ce morceau de programme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if($xml->item[$i]->attributes()->type == "select"){
    [...] // ici j'affiche les questions que je vais chercher dans mon XML
     
            $formula.= "<td><select name='".$xml->item[$i]->attributes()->name."'><br>";
            for($j=0;$j<$subitems;$j++){
     	        $formula.= "<option value='".$xml->item[$i]->subitem[$j]->attributes()->val."'>".utf8_decode($xml->item[$i]->subitem[$j])."</option>";
            }
            $formula.="</td>";
    }
    Cette partie affiche le select.
    Lorsque je mets cette partie en commentaire, j'ai ceci :
    Nom : questions2.png
Affichages : 168
Taille : 2,3 Ko
    C'est la configuration que je souhaite, le select en plus au bout de la question. Je précise qu'en mettant la partie en commentaire, j’atterris bien sur la page de validation en cliquant sur "Enregistrer".

    Voila, j'espère avoir été assez précis.
    Merci d'avance.

  2. #2
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Bonjour,

    Il s'agit plutôt d'un problème d'HTML/CSS.

    Je peux d'ores et déjà vous dire que vous ne fermez pas la balise <select> dans le bout de code que vous nous avez donné.
    Il est probable à 98% de chances que tout vienne de là ;-)


    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $formula.= "<td><select name='".$xml->item[$i]->attributes()->name."'><br>";
            for($j=0;$j<$subitems;$j++){
     	        $formula.= "<option value='".$xml->item[$i]->subitem[$j]->attributes()->val."'>".utf8_decode($xml->item[$i]->subitem[$j])."</option>";
            }
            // Il manque un </select> quelque part ici !
            $formula.="</td>";

    NB: Et tant que j'y suis, un <select ><br> c'est quand même très moche !!! Il faut retirer le <br>

  3. #3
    Membre à l'essai
    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
    Points : 17
    Points
    17
    Par défaut
    Salut.

    J'en reviens pas ! Je devais être crevé à ce moment là

    C'est effectivement ça. Je vous remercie beaucoup

    En revanche, j'ai toujours ce problème incompréhensible au niveau de l'affichage du message de validation. Je clique sur enregistrer, les données passent bien dans le fichier Excel mais ça me renvois sur le formulaire et non sur la page qui affiche le message de validation.


    EDIT : Je précise que cette page s'affiche si les select sont remplacés par des textarea. Y'a-t-il quelque chose que j'ai oublié de faire avec le select ? De plus, dans les deux cas, ça fonctionne quand je fais les tests dans le Localhost.

  4. #4
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Avec plaisir

    Concernant cette nouvelle question, il nous faudrait le code entier vu qu'il doit s'agir d'une ou plusieurs conditions qui posent problème ;-)

  5. #5
    Membre à l'essai
    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
    Points : 17
    Points
    17
    Par défaut
    C'est à n'y rien comprendre.

    J'ai fais quelques modifs et ça m'a bien affiché la page de confirmation.
    J'ai ajouté une chose : ça ne marche plus.
    Ctrl z pour revenir à la configuration qui marchait : ça ne marche plus.

    La partie du code qui affiche la page de confirmation (fin.php) est celle-ci :
    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
    23
    24
    25
    if($action == "Enr"){ //lorsqu'on appui sur le bouton enregistrer
     
            $xml = simplexml_load_file("data/DOTC.xml") or die ("impossible d'ouvrir le fichier");
    	$nbrequest =  count($xml->item); //dans mon fichier xml, chaque textarea ou select est placé dans des balises items. Du coup ça compte ici le nombre de questions
     
    	for($i=0;$i<$nbrequest;$i++){
     
    		$subitems=count($xml->item[$i]->subitem);
     
    		if($xml->item[$i]->attributes()->type == "select"){
    			$formula.= getval($xml->item[$i]->attributes()->name).";";
    		}
    		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(); 
    }
    Pour les tests que j'ai fais avec uniquement des textarea, j'ai juste enlevé la partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if($xml->item[$i]->attributes()->type == "select"){
    			$formula.= getval($xml->item[$i]->attributes()->name).";";
    		}
    Et ça fonctionnait.

  6. #6
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Le plus simple dans ce genre de cas, est de débugger à la dure : ajouter des petits textes suivis de die() pour voir jusqu'à quel moment ils s'affichent.

    En effet, il est possible que l'affichage des erreurs soit désactivé, une erreur fatale afficherait donc une page blanche !
    Pour afficher les erreurs, ajoute ceci en haut de fichier (c'est global, donc pas défini pour un seul fichier.)

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ini_set('display_errors', 1);
    error_reporting(E_ALL); // si tu veux être certain d'afficher TOUS les types d'erreur

    Attention également à la fonction location(), s'il y a le moindre output qui se fait avant son exécution, elle ne s'exécutera pas. Donc si par exemple tu as un bout de code qui génère une notice du genre "NOTICE undefined variable $blkablal at line #XXX" ta fonction location() ne devrait (théoriquement) pas fonctionner

  7. #7
    Membre à l'essai
    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
    Points : 17
    Points
    17
    Par défaut
    Merci je teste ça.

    EDIT : Voici ce que ça m'affiche :

    Warning: Cannot modify header information - headers already sent by (output started at I:\publication\dotc-pn-drc\Questionnaire_demenagement\index.php:204) in I:\publication\dotc-pn-drc\Questionnaire_demenagement\index.php on line 230
    La ligne 230 en question, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: fin.php');
    Ce index.php:204, ça signifie ligne 204 ? Si c'est le cas, il s'agit de :

  8. #8
    Membre à l'essai
    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
    Points : 17
    Points
    17
    Par défaut
    Finalement, j'ai fini par contourner le problème. J'ai remplacé la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: fin.php');
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ?>
    <SCRIPT LANGUAGE="JavaScript">
    window.open ('fin.php')
    </SCRIPT>
    <?php
    Ceci a donc pour effet d'ouvrir la page de validation dans une fenêtre Pop-up, ce qui n'est pas plus mal.

    En tout cas, merci de ton aide précieuse, darkstar123456.

    Bonne journée

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

Discussions similaires

  1. affichage dans un textArea
    Par alphonse62 dans le forum JBuilder
    Réponses: 1
    Dernier message: 12/06/2007, 23h32
  2. affichage dans un TextArea
    Par manchzek dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 21/12/2006, 11h14
  3. Problème d'affichage dans un textarea
    Par sam.fet dans le forum ASP
    Réponses: 9
    Dernier message: 16/08/2006, 18h52
  4. <select> <option> et affichage dans un textarea
    Par gazelle dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 05/06/2006, 14h23
  5. Réponses: 10
    Dernier message: 13/02/2006, 16h29

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