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 :

$HTTP_POST_VARS et formulaire


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 78
    Par défaut $HTTP_POST_VARS et formulaire
    Bonjour,
    J’ai un formulaire de la forme :

    Jamais parfois souvent
    Option 1 O O O
    Option 2 O O O
    Option 3 O O O
    Option 4 O O O

    Avec 4 lignes de boutons radio. La mise en forme n'apparait pas clair, les boutons radios sont dans des colonnes jamais parfois souvent. Le but est de faire des enquêtes sur un site.
    Le site de développement n'est malheureusement pas visible de l'extérieur.

    Mon code pour le produire est :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <table>
    <form name="poll" method="post" action="<?php echo tep_href_link('enquetecollect.php') ?>">
    <tr><td><?php echo tep_draw_separator('pixel_trans.gif', '1', '10');?></td>
    <?php
    for ($j=0;$j<6;$j++) {
    $query2=tep_db_query("select choixText, choixID from enquete_prefer where (enqID=$enqID) and (choixID=$j)");
    if ($result2=tep_db_fetch_array($query2)) {
             if ($result2['choixText']!= 'null') { ?>
             <td class="main"><?php echo $result2['choixText'] ;?></td>
             <?php
    } 
       }
          }
    ?></tr>
    <?php 						
    for ($i=1;$i<=8;$i++) {
    $query=tep_db_query("select enqID, optiontext, optioncount, voteID from enquete_data where (enqID=$enqID) and (voteID=$i) and (language_id=$languages_id)");
           if ($result=tep_db_fetch_array($query)) {
                  if ($result['optiontext']) {				  ?><tr><td class="main"><?php echo $result['optiontext'] ;?></td>
    <?php 
    $query2=tep_db_query("select choixID,choixText,voteID from enquete_prefer where (enqID=$enqID)");
    	while ($result2=tep_db_fetch_array($query2))
    	{
    	$choixID=$result2['choixID'];
    	if ($result2['choixText']!='null') 
    	{ 
    	?>
    	<td class="main"><input type="radio" name="<?php echo $result['optiontext'] ; ?>" value="<?php echo $choixID; ?>"></td>
    <?php
    } 
      }
    ?>
       </tr>
    <?php 
            } 
          }
        }
      }
    }
    		?>
    <tr class="pollFooter"><td colspan="7"><br><center><input type="submit" value="<?php echo _VOTE ;>"></center><br></td></tr>
    		</form>
    		</table>
    Le fichier pour insérer mes données en base est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php 
    $enqID=$HTTP_POST_VARS['enqID'];
    $voteid=$HTTP_POST_VARS['voteid'];
    $choixID=$HTTP_POST_VARS[$result['optiontext']];	
     
    $result1=tep_db_query("UPDATE enquete_prefer SET choixCount=choixCount+1 WHERE (enqID='".$enqID."') AND (choixID='".$choixID."')");
     
    $result2=tep_db_query("UPDATE enquete_desc SET voters=voters+1 WHERE enqID='".$enqID."'");
    ?>

    Mon problème est que je n’arrive pas à faire passer correctement mes paramètres :
    <input type="radio" name="<?php echo $result['optiontext'] ; ?>" value="<?php echo $choixID; ?>">

    et à les récupérer dans :
    $choixID=$HTTP_POST_VARS[$result['optiontext']];

    il y a un mécanisme qui m’échappe.
    Je n’ai pas mis les fichiers dans leur ensemble pour éviter d’être trop long. Je ne sais pas si c’est suffisamment clair.

    Merci pour votre aide

  2. #2
    Membre émérite Avatar de Yobs
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    675
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 675
    Par défaut
    Je ne vois que 2 solutions:

    1/ Placer ton $result['optiontext'] dans une variable de session: $_SESSION['optiontext']. Et là tu récupère en faisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $optiontext = $_SESSION['optiontext'];
    $choixID = $_POST[$optiontext];
    2/ Envoyer tes variables par des champs cachés. Solution que je ne préconise pas.

  3. #3
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 78
    Par défaut
    Je viens d'essayer, mais ça marche toujours pas. Je vais continuer à creuser pour la variable de session.
    merci de ton aide

  4. #4
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 78
    Par défaut
    Je n'arrive pas, non plus, à résoudre mon problème avec une variable de session. Mais je n'ai pas trop insister, car je voudrais d'abord comprendre
    pourquoi je n'arrive pas à transmetre mon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    name="<?php echo $result['optiontext'] ; ?>"
    dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $choixID=$HTTP_POST_VARS[$result['optiontext']];
    J'ai beau retourner mon problème dans tous les sens je n'avance pas.
    L'erreur est peut être si grosse qu'elle m'échappe ?
    J'ai l'impression de nager à reculons, si un membre éclairé pouvait ... m'éclairer ...
    :D

  5. #5
    Membre chevronné Avatar de gofono_bass
    Inscrit en
    Décembre 2005
    Messages
    383
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Décembre 2005
    Messages : 383
    Par défaut
    tiens !

    je suis un peu fatigué, j'ai pas tout lu ton code, mais si le traitement ne se fait pas dans la meme page, c'est normal que tu ne puisses pas le récupere ainsi puisque $result['optiontext']] n'est pas défini dans ta page de traitement.

    si je me trompe, merci de m'eclairer à ton tour...

  6. #6
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 78
    Par défaut
    Je défini $result['optiontext'] dans mon formulaire par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $query=tep_db_query("select enqID, optiontext, optioncount, voteID from enquete_data where (enqID=$enqID) and (voteID=$i) and (language_id=$languages_id)");
                  if ($result=tep_db_fetch_array($query)) {
                         if ($result['optiontext']) {
    je l'envoi dans mon fichier traitement par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="radio" name="<?php echo $result['optiontext'] ; ?>" value="<?php echo $choixID; ?>">
    et je récupère dans mon fichier traitement par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $choixID=$HTTP_POST_VARS[$result['optiontext']];
    c'est vrai que c'est pas facile à suivre sans voir le site et sans le code complet ...

    Je cours pas, je nage ...

    Merci

  7. #7
    Membre chevronné Avatar de gofono_bass
    Inscrit en
    Décembre 2005
    Messages
    383
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Décembre 2005
    Messages : 383
    Par défaut
    ET dans le code source de la page HTML généré, y a quoi dans l'attribut name du input?

  8. #8
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 78
    Par défaut
    J'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="radio" name="Option 6.1" value="2">
    qui correspond bien à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="radio" name="<?php echo $result['optiontext'] ; ?>" value="<?php echo $choixID; ?>">

  9. #9
    Membre chevronné Avatar de gofono_bass
    Inscrit en
    Décembre 2005
    Messages
    383
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Décembre 2005
    Messages : 383
    Par défaut
    Si tu fais un echo de $result['optiontext']; dans ta page de traitement, je suis sur qu'il n'y aura rien.. c'est comme je te l'ai dit plus haut:$result['optiontext'] est défini dans ta page pour afficher le formulaire mais pas dans celle de traitement. Efin il me semble... si c'est le cas, le mieux ce serait peut-etre de passer par une variable de session.

  10. #10
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 78
    Par défaut
    c'est clair le un echo de $result['optiontext'] dans ma page de traitement ne donne rien, c'est bien pour ça que je sais que mon paramètre ne passe pas. Mais j'aimerais bien comprendre pourquoi et trouver le moyen de passer par $HTTP_POST_VARS

  11. #11
    Membre chevronné Avatar de gofono_bass
    Inscrit en
    Décembre 2005
    Messages
    383
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Décembre 2005
    Messages : 383
    Par défaut
    le prouquoi je viens de te le dire: une variable déclarée dans une page n'est eveidemment pas reconnue dans une autre.. la solution pourait etre une variable de session.

    si tu ne veux pas utiliser de session, et absolument passer par $_POST (a utiliser de préférence par raport à $HTTP_POST_VARS), tu peux transmettre cette valeur par un champ input de type hidden.

  12. #12
    Membre chevronné Avatar de gofono_bass
    Inscrit en
    Décembre 2005
    Messages
    383
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Décembre 2005
    Messages : 383
    Par défaut
    le pourquoi je viens de te le dire: une variable déclarée dans une page n'est eveidemment pas reconnue dans une autre.. la solution pourait etre une variable de session.

    si tu ne veux pas utiliser de session, et absolument passer par $_POST (a utiliser de préférence par raport à $HTTP_POST_VARS), tu peux transmettre cette valeur par un champ input de type hidden.

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 92
    Par défaut
    Salut, si tu tiens absolument à passer par la variable POST, tu fais une boucle sur le tableau $HTTP_POST_VARS
    Jean

Discussions similaires

  1. Création d'un formulaire sous flash?
    Par ultrakas dans le forum Flash
    Réponses: 5
    Dernier message: 11/01/2005, 19h33
  2. [CR][Access] intégrer un viewer dans un formulaire access
    Par nicolak dans le forum SAP Crystal Reports
    Réponses: 7
    Dernier message: 13/01/2003, 16h52
  3. []Problème avec les formulaires Outlook
    Par Invité dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 10h59
  4. [VB6][Formulaire]Appliquer un Scrollbar a une Form
    Par Boil dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 09/11/2002, 04h51
  5. [CR] Tranfert de formulaire a travers une page HTMl
    Par LIEU dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 12/09/2002, 09h37

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