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 :

formulaire qui transforme les données!


Sujet :

Langage PHP

  1. #1
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Points : 1 094
    Points
    1 094
    Par défaut formulaire qui transforme les données!
    Bonjour,

    Il m'arrive une chose curieuse:

    J'ai un formulaire avec un champs input texte classique.

    Ce champs est nommé dynamiquement avec une valeur retournée de ma BDD grâce à une requete.

    Ca fonctionne bien sauf dans un cas: si la valeur retournée par la base (et donc qui constitue une partie du nom du champs) contient un point "." alors là miraculeusement au traitement du formulaire quand je récupère mes variables, le point c'est transformé en "_" ...

    Le seul traitement que je fais sur le nom du champs est rawurlencode().

    Pouvez-vous éclairer ma lanterne?

    Merci d'avance.

  2. #2
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    je pense qu'on va devoir voir ton code.

  3. #3
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Points : 1 094
    Points
    1 094
    Par défaut
    Ok, un peu de patience alors, va falloir que je le rappatrie et j'ai une urgence à traiter avant...

  4. #4
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Points : 1 094
    Points
    1 094
    Par défaut
    Alors... allons-y:

    La partie du formulaire dont je vous parlais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     echo "<tr class='fonddbdbdb'><td align='center'>".$data_sign['signature']." / ".$data_sign['version']." </td>";
          	echo "<td align='left'><input type='checkbox' name='signature$signature_def/$nom_version'>&nbsp;&nbsp;";
     
            echo "<input type='text' name='nb_pal_sign_$signature_def' value='' size='3'></td></tr>";
    Quand je suis sur cette page dans mon navigateur et que j'édite le source, pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    name='signature$signature_def/$nom_version
    j'ai par exemple
    signaturefolio 19.O / sunday52
    Par contre quand je récupère les données dans mon script de traitement, pour cette variable j'obtiens:
    signaturefolio%2019_O/sunday52
    J'affiche les variables du formulaire avant tout traitement (après je fais un rawurldecode sur les variables traitées dans le formulaire avec rawurlencode() ).

  5. #5
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    signaturefolio 19.O / sunday52
    arrange toi déja pour qu'il n'y ai pas d'espace,
    et fais un print_r($_POST); des la réception des données POST.
    et si tu as un _ à la place du . c'est pas normal

  6. #6
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Points : 1 094
    Points
    1 094
    Par défaut
    J'avai déjà fait print_r($_POST), ce qui m'avait donné le même résultat, par contre j'ai tenté de supprimer l'espace et même sans espace, j'ai le même résultat...

    En plus, comme je dois restituer cette donner dans une autre base après traitement, je dois garder les espaces et comme ils sont issus d'une saisie utilisateur, je peux vraiment rien contre ça...

    [Edit]
    Curieux, je viens de faire un essai, j'ai repassé la variable de mon formulaire dans un input hidden sans concaténer signature avec, juste pour voir ce qui en ressortait et là elle ressort bien...

    Je suis sur une piste...
    [/Edit]

  7. #7
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Points : 1 094
    Points
    1 094
    Par défaut
    Bon, il semblerait que ça provienne de la concaténation que je fais entre "signature" et $signature_def ...

    Enfin, j'ai trouvé d'où ça vient donc je cloture...

    Merci Maxoo!

  8. #8
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Points : 1 094
    Points
    1 094
    Par défaut
    Me revoilà avec ce problème de transformation de nom de champs à l'envoi du formulaire.

    Je pensais que ça venait de la concaténation entre le "signature" et la variable mais non...

    A priori, il y a autre chose et je ne sais pas quoi!

    Quand j'affiche le nom de ma variable, elle s'affiche correctement,par exemple:
    signaturefolio 19.O/sunday52
    Mais quand je récupère le nom de ce champs sur ma page de traitement, le nom de la variabe est devenu: signaturefolio_19_0/sunday52

    J'arrive vraiment pas à voir d'où vient le problème!

    J'ai fais un test, j'ai nommé mon champs "TEST.essai", résultat dans ma page de traitement du script, il devient TEST_essai.
    Je précise que l'affichage des variables est la première action que je fais en début de script et qu'il n'y a aucun traitement avant.

    [Edit]
    Si je réduis mon test au plus simple, voilà ce que ça donne pour le formulaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form method="post" action="essai_form.php">
    <input type="text" name="TEST.essai" value="essai">
    <input type="submit" value="Valider">
    </form>
    Pour le script de traitement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $variables=$HTTP_POST_VARS;
    while(list($cle, $valeur)=each($variables))
    {
    	echo "<br/>Clé: ".$cle;
    	echo "<br/>Valeur: ".$valeur."<br/>";
    }
    ?>
    Et à l'affichage:
    Clé: TEST_essai
    Valeur: essai
    [/Edit]

  9. #9
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    et en étant à jour dans sur PHP ca donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    while(list($cle, $valeur)=each($_POST))
    {
    	echo "<br/>Clé: ".$cle;
    	echo "<br/>Valeur: ".$valeur."<br/>";
    }
    ?>
    et ca t'affiche quoi ?

  10. #10
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Points : 1 094
    Points
    1 094
    Par défaut
    Hum... le problème n'était de toute façon pas là Maxxo mais ça y est je l'ai résolu....

    A savoir quand même (chose que je n'avais remarqué auparavant!) que si on met un point dans le nom d'un champs de formulaire, il le transformera automatiquement en "_" et en essayant de l'échapper comme suit: "\.", il le transforme également en "\_".

    Voilà, en attendant, merci de ton aide.

  11. #11
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    wha ... c'est bon à savoir ca !!

    et si tu appelle tes name="test_essai" ca bouge pas ?

  12. #12
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Points : 1 094
    Points
    1 094
    Par défaut
    Non, tu peux utiliser n'importe quoi SAUF le point.

    Donc name="test_essai" ça passe mais name="test.essai" c'est pas bon !

    En plus en ce qui me concerne, c'est une saisie utilisateur antérieure, donc pas moyen d'éviter le point...

    Enfin, maintenant que je le sais, j'ai réussi à corriger le problème.

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

Discussions similaires

  1. Pb formulaire qui efface les données
    Par cakao dans le forum Langage
    Réponses: 2
    Dernier message: 12/12/2011, 22h59
  2. Réponses: 6
    Dernier message: 02/06/2009, 13h20
  3. Réponses: 3
    Dernier message: 10/04/2009, 13h26
  4. Réponses: 4
    Dernier message: 04/05/2007, 22h49
  5. transformer les données d'une table .dbf vers ma BD
    Par djouahra.karim1 dans le forum Bases de données
    Réponses: 2
    Dernier message: 30/11/2004, 09h54

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