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 :

Index de tableau contenant le signe "+"


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 146
    Par défaut Index de tableau contenant le signe "+"
    Bonjour à tous.

    Voici mon problème:
    Je récupère une chaîne de caractère en POST, et cette chaîne me sert à définir l'index d'un tableau prédéfini.
    En effet, je créé au préalable un tableau avec toutes les valeurs possibles que je peux recevoir en POST pour faire correspondre ces valeurs avec les champs de ma table MySQL pour pouvoir ensuite établir ma requête. Mon problème est qu'une donnée que je reçoit contient le signe "+". Les chaînes avec accents ne me posent aucun soucis mais cette chaîne avec le signe "+" ne passe pas..
    Voici l'erreur que j'obtiens :

    Undefined index: Délivrances Livraisons directes - Retour
    Alors que ma donnée reçue en POST est normalement
    Délivrances + Livraisons directes - Retour
    Je ne comprends pas pourquoi il perd le signe "+" au passage en POST..

    Si quelqu'un peut m'éclairer, merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    pour t'éclairer, je te conseille :
    - la bougie,
    - la lampe-torche,
    - le feu,
    - le soleil,
    - la plein lune,
    - ...

    Sinon, ... tu peux peut-être nous donner ton code (?). On y verra déjà plus clair.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 146
    Par défaut
    L'ironie est au rendez-vous à ce que je vois

    Ce serait trop long pour le code..

    Pour décrire l'algo :
    1. Lorsque je clique sur un onglet dans ma page, une requête ajax est lancée, en transmettant l'attribut de l'onglet par POST à une page 2 (l'attribut est un string)
    2. La page 2 récupère cet attribut.
    3. Cet attribut me sert ensuite à définir le champ sur lequel je dois effectuer ma requête, grâce à un tableau des correspondances attribut<=>champ, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    /*Tableau des correspondances entre intitulé d'onglet et champ de table*/	
    $corresp= array('Stock initial'=>'STOCK_DEBUT', 'Entrées'=>'Qte_Entree', 'Sorties'=>'Qte_Sortie', 'Stock final'=>'STOCK_FIN', 'Consommation'=>'Consommation_mensuelle', 'Sorties délivrances'=>'QTE_SORTIE_DELIV', 'Commandé'=>'QTE_ENTREE_CDE', 'Achats facturés'=>'Qte_Entree_Facturee', 'Entrées délivrances'=>'QTE_ENTREE_DELIV', 'Sorties retours'=>'QTE_SORTIE_RETOUR', 'Cessions (E. Deliv - S. Retours)'=>'QTE_ENTREE_DELIV', 'Délivrances + Livraisons directes - Retour'=>'QTE_ENTREE_DELIV');
    $onglet= $corresp[$title];
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tableData= $bdd->query('SELECT Code_Produit, DESIGNATION, Mois, '.$onglet.' FROM PH_Photo_Stock_Depot ORDER BY Mois ASC');
    Le problème est que si un de mes attributs (donc un string) comporte le signe "+" dans sa chaîne, celui-ci n'est pas transmi.. Du coup, la chaîne ne corrrespond plus aux indices du tableau prédéfinis et il ne trouve aucun index dans le tableau.

    Pourtant, les accents et autres passent bien.. C'est ça que je ne comprends pas.

  4. #4
    Invité
    Invité(e)
    Par défaut
    1/ "donner ton code" signifie "donner le code nécessaire et suffisant pour situer et comprendre le problème".

    2/ <pre><?php print_r($corresp); ?></pre> donne :
    Array
    (
    [Stock initial] => STOCK_DEBUT
    [Entrées] => Qte_Entree
    [Sorties] => Qte_Sortie
    [Stock final] => STOCK_FIN
    [Consommation] => Consommation_mensuelle
    [Sorties délivrances] => QTE_SORTIE_DELIV
    [Commandé] => QTE_ENTREE_CDE
    [Achats facturés] => Qte_Entree_Facturee
    [Entrées délivrances] => QTE_ENTREE_DELIV
    [Sorties retours] => QTE_SORTIE_RETOUR
    [Cessions (E. Deliv - S. Retours)] => QTE_ENTREE_DELIV
    [Délivrances + Livraisons directes - Retour] => QTE_ENTREE_DELIV
    )
    Jusqu'ici, pas de problème.

    A quel endroit du code constates-tu le problème ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Conseil : encadrer la requête par des ", et mettre toujours des '...' autour des chaines
    Dernière modification par Invité ; 23/08/2011 à 13h02.

  6. #6
    Membre Expert
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Par défaut
    $title contient les données du $_POST je présume ?
    Affiche ce qu'elle contient.

    Peut-être utiliser un urlencode() au niveau du post, et un urldecode() au niveau de la récupération. Le '+' est sûrement squeezé par ajax et la lib que tu utilises. Enfin, sans conviction, c'est une piste à creuser ...

    http://php.net/manual/en/function.urlencode.php
    http://php.net/manual/en/function.urldecode.php

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 146
    Par défaut
    1/ jreaux62 tu as mal compris. La chaîne de caractères de mon attribut ne va pas se retrouver dans ma requête, c'est sa correspondance qui va l'être (selon le tableau des correspondances). Il n'y a pas besoin de quotes à cet endroit de la requête car c'est un nom de champ qui va se trouver à cet endroit.

    2/ Kaamo tu as raison, c'est lors du passage en POST par ajax que le + se perd. En effet, mon $title contient ma chaîne de caractères transmises en POST par ajax mais sans le signe "+".
    J'ai testé avec urlencode à l'entrée puis urldecode à la sortie, mais le + n'est toujours pas transmis..

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 146
    Par défaut
    C'est bon j'y suis arrivé. Il fallait juste faire un urlencode sur la chaîne avant de l'envoyer en POST avec ajax. Ainsi, le '+' est présent quand je récupère la donnée par le biais de $_POST['donnée']. Pas besoin de urldecode pour récupérer la donnée à la sortie (bizarre?!)..

    Merci beaucoup pour votre aide!
    A bientôt

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

Discussions similaires

  1. Bug avec JSON avec un tableau contenant un index en string
    Par LaurentC33 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/06/2014, 14h37
  2. Réponses: 18
    Dernier message: 28/04/2006, 11h00
  3. tri d'index de tableau par rapport au contenu
    Par parisien dans le forum C
    Réponses: 7
    Dernier message: 13/02/2006, 23h32
  4. Tableau contenant l'id de champs à afficher
    Par yoyot dans le forum ASP
    Réponses: 4
    Dernier message: 15/02/2005, 18h02

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