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

JavaScript Discussion :

Recuperer un champ comportant des espaces


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 77
    Par défaut Recuperer un champ comportant des espaces
    Bonjour,

    Je fais un traitement AJAX sur une page de mon site web qui fonctionne très bien, mais je viens de remarquer une erreur pour un cas, je récupère grâce a:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var groupe = document.getElementById("groupes").value;
    Le nom d'un groupe de ma bdd:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <select id="groupes" name="groupes" onchange='request(readData);'>
    			<option value="">--CHOISIR UN GROUPE--</option>
    			<?php
                                    include("./id/connexion_website.php");
                                    $requete_groupes = $bdd->query("SELECT nom FROM groupes");
                                    $requete_groupes->execute();
                                    while($donnees = $requete_groupes->fetch())
                                    {
                                            $groupe = $donnees['nom'];
                                            echo "<option value=".$groupe.">".$groupe."</option>";                  
                                    }
                                    $requete_groupes->closeCursor();
                            ?>
    		</select>
    Dans ma liste déroulante, si je sélectionne par exemple "Groupe avec un espace" et que je fais un cote js, j'obtiens "Groupe", en fait, je ne récupère que les caractères jusqu'au premier espace, comment éviter cela et récupérer la chaine de caractère intégralement, tous caractères confondu ?

    Merci

  2. #2
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Citation Envoyé par student_ Voir le message
    Bonjour,

    Je fais un traitement AJAX sur une page de mon site web qui fonctionne très bien, mais je viens de remarquer une erreur pour un cas, je récupère grâce a:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var groupe = document.getElementById("groupes").value;
    Le nom d'un groupe de ma bdd:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <select id="groupes" name="groupes" onchange='request(readData);'>
    			<option value="">--CHOISIR UN GROUPE--</option>
    			<?php
                                    include("./id/connexion_website.php");
                                    $requete_groupes = $bdd->query("SELECT nom FROM groupes");
                                    $requete_groupes->execute();
                                    while($donnees = $requete_groupes->fetch())
                                    {
                                            $groupe = $donnees['nom'];
                                            echo "<option value=".$groupe.">".$groupe."</option>";                  
                                    }
                                    $requete_groupes->closeCursor();
                            ?>
    		</select>
    Dans ma liste déroulante, si je sélectionne par exemple "Groupe avec un espace" et que je fais un cote js, j'obtiens "Groupe", en fait, je ne récupère que les caractères jusqu'au premier espace, comment éviter cela et récupérer la chaine de caractère intégralement, tous caractères comprit ?

    Merci
    ben affiche groupe tout comme
    affiche toto etc.

    si tu ne vois pas je te conseil de mettre à la place "Un exemple avec espaces" dans ta base et de recommencer

    d'après moi ça doit afficher















    => groupe

    A+JYT

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 77
    Par défaut
    Autant pour moi, j'ai rajoute des double quote, pour éviter le quiproquo, admettons que j'ai dans la liste déroulante

    "Voiture rouge"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var groupe = document.getElementById("groupes").value;
    alert(groupe);
    Me donne "Voiture"

    EDIT:

    Merci beaucoup pour ton post très instructif Spacefrog, je vais changer ces mauvaises habitudes en adoptant les doubles et simples quote, qui est la syntaxe qui me parle le plus !

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Mai 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 345
    Par défaut
    Citation Envoyé par student_ Voir le message
    Autant pour moi, j'ai rajoute des double quote, pour éviter le quiproquo, admettons que j'ai dans la liste déroulante

    "Voiture rouge"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var groupe = document.getElementById("groupes").value;
    alert(groupe);
    Me donne "Voiture"

    EDIT:

    Merci beaucoup pour ton post très instructif Spacefrog, je vais changer ces mauvaises habitudes en adoptant les doubles et simples quote, qui est la syntaxe qui me parle le plus !
    Surtout surtout, quand tu fais du PHP, au final tu as un format de sortie, ici c'est le HTML. Donc règle numéro 1, il faut d'abord que ton HTML soit propre en sortie avant d'aller t'amuser à faire autre chose. Tu as des validateurs tels que HTML Validator qui est une extension pour firefox, et là tu verrais tout de suite tes erreurs, mais pas toutes tes erreurs.

    Le mieux, c'est d'afficher le code source de ta page une fois qu'elle est générée par le PHP et là tu pourras te rendre compte de tes erreurs.

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Voilà a quoi aboutissent de mauvaises habitudes de code ...

    une value en html doit être entre quote (grillée et saignante ...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    value="valeur avec des espaces"
    or dans ton code php tu as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<option value=".$groupe.">".$groupe."</option>";
    qui donne si tu regardes ton code généré
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option value=valeur avec des espace>
    seul le premier mot est pris en compte, les autres étant compris comme des attributs de la balise ...

    il faut donc entourer le value avec des guillemets:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option value="valeur avec des espace" >
    ce qui se redige en php ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<option value=\"".$groupe."\">".$groupe."</option>";
    ou avec interprétation des variable php dans un string entre " "'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<option value=\"$groupe\">$groupe</option>";
    ou encore en utilisant les simpes quotes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<option value="'.$groupe.'">'.$groupe.'</option>';
    A toi de choisir la syntaxe avec laquelle tu te sens le plus a l'aise
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Voilà a quoi aboutissent de mauvaises habitudes de code ...
    voila pourquoi je dis qu'il ne faut pas faire d'écho de code source que ce soit du html ou du js
    même si cela parait facile.

    il y a des lib qui font ça très bien
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $reponse = new HtmlFragment();
    $reponse->option($groupe, array('value' => $groupe));
    $reponse->send();
    et bien d'autres encore. au pire il y a DOM

    j'entends souvent que le code est alors plus verbeux
    je vous laisse voir ça avec le code ci dessous et l'original
    Code php : 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
    $reponse = new HtmlFragment();
    $select = $reponse->select(array(
      id =>"groupes",
      name =>"groupes";
      onchange => 'request(readData);'));
    $select->option('--CHOISIR UN GROUPE--', array(value => ""));
     
    include("./id/connexion_website.php");
    $requete_groupes = $bdd->query("SELECT nom FROM groupes");
    $requete_groupes->execute();
    while($donnees = $requete_groupes->fetch())
    {
      $groupe = $donnees['nom'];
      $select->option($groupe, array(value => $groupe));
    }
    $requete_groupes->closeCursor();
    $reponse->send()

    bien sur il y a un moment ou le code html sera généré mais il est dans la lib écrit une seule fois pour toute testé débugué une fois pour toutes
    A+JYT

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    voila pourquoi je dis qu'il ne faut pas faire d'écho de code source que ce soit du html ou du js
    même si cela parait facile.
    Cela ne pose pas de problème quand on est sûr de sa syntaxe html
    Je n'utilise pas new HtmlFragment(); car je perds alors de vue mon code html.
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    et du coup tu ne raisonne plus code HTML mais
    objet d'IHM php


    A+JYT

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    je demande juste à php de me générer du code html ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 13/03/2012, 10h11
  2. Compléter un champ avec des espaces
    Par milka dans le forum SQL
    Réponses: 1
    Dernier message: 22/10/2007, 11h04
  3. Réponses: 3
    Dernier message: 23/01/2007, 08h14
  4. Recuperer une variable contenant des espaces
    Par phpaide dans le forum Langage
    Réponses: 9
    Dernier message: 30/05/2006, 16h07
  5. nom de table et de champs avec des espaces
    Par grinder59 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/05/2006, 17h30

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