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 :

Soucis de formulaire .. encore !


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 128
    Points : 51
    Points
    51
    Par défaut Soucis de formulaire .. encore !
    Bonjour,

    J'ai un soucis sur la "vérification" d'un formulaire ..

    En gros, si $_POST["categorie"]==1 ou $id==1 , j'affiche <select name="toto"> et idem pour les autres catégories.

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    <?php
    $id = $_GET["b"];
    ?>
    <form name="formulaire" action="#" method="post">
     
    <select name="categorie" onchange="javascript:submit(this)">
    <option value="1">CAT 1</option>
    <option value="2">CAT 2</option>
    <option value="3">CAT 3</option>
    </select>
     
    <?php 
    if(isset($_POST["categorie"])){
    	if($_POST["categorie"]==1){
    		?>
    		<select name="toto">
    		<option value="0">Tous</option>
    		<option value="1">A</option>
    		<option value="2">B</option>
    		<option value="3">C</option>
    		</select>
    		<?php 
    	} 
    }
    else{
    	if($id==1){
    		?>
    		<select name="toto">
    		<option value="0">Tous</option>
    		<option value="1">A</option>
    		<option value="2">B</option>
    		<option value="3">C</option>
    		</select>
    		<?php 
    	} 
    }
    if(isset($_POST["categorie"])){
    	if($_POST["categorie"]==2){
    		?>
    		<select name="tata">
    		<option value="0">Tous</option>
    		<option value="1">A</option>
    		<option value="2">B</option>
    		<option value="3">C</option>
    		</select>
    		<?php 
    	} 
    }
    else{
    	if($id==2){
    		?>
    		<select name="tata">
    		<option value="0">Tous</option>
    		<option value="1">A</option>
    		<option value="2">B</option>
    		<option value="3">C</option>
    		</select>
    		<?php 
    	} 
    }
    ?>
    <!--etc...-->
    </form>
    Je voulais faire un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if($_POST["categorie"]==1 OR $id==1){
    //formulaire
    }
    ...mais ça ne fonctionne pas et je suis obligé d'utiliser isset($_POST["categorie"]) pour afficher le reste du formulaire suite à l'action "onchange" ..(pas facile à expliquer).

    Y a t'il possibilité d'éviter le double "<select name="****">" dans cette configuration ou dans une autre que je n'aurais pas pensée ?

    Merci

  2. #2
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 128
    Points : 51
    Points
    51
    Par défaut
    Bon, je m'auto répond ^^, j'ai raccourcis un peut la chose de cette façon :
    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
     
    <?php 
    if(isset($_POST["categorie"])){
    	if($_POST["categorie"]==1){
    		include('formulaire1.php');
    	} 
    }
    else if($id==1){
    	include('formulaire1.php');
    }
     
    if(isset($_POST["categorie"])){
    	if($_POST["categorie"]==2){
    		include('formulaire2.php');
    	} 
    }
    else if($id==2){
    	include('formulaire2.php');
    }
    ?>
    ...mais si vous avez mieux à proposer, n'hésitez pas!

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    La seule syntaxe que je vois serais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if(
            (isset($_POST["categorie"]) && $_POST["categorie"]==1)
            ||
            (!isset($_POST["categorie"]) && $id==1)
         )
         {
    		include('formulaire1.php');
          }
    mais puisque visiblement il y a un lien entre $id et $_POST["categorie"] il faudrait peut etre repenser cette partie la.

  4. #4
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 128
    Points : 51
    Points
    51
    Par défaut
    Merci de ta réponse .

    Pour éclaircir la chose (du moins je vais essayer):

    Il sagit d'un formulaire commun à tout un site affichant diverses éléments en fonction de la catégorie ou l'on se trouve.

    $_POST["categorie"] correspond à l'action du onchange et permet d'afficher le reste du formulaire associé à la catégorie.

    Donc si catégorie 1 sélectionné, action du onchange et $_POST["categorie"]==1 affiche le reste du formulaire de catégorie 1.

    $id est l'identifiant transmit par l'url qui me permet également d'afficher le reste du formulaire dans la page de réception.

    "onchange" rafraichit la page en cours et affiche le reste du formulaire qui correspond à $_POST["categorie"]==1 .

    Si l'information transite sur une autre page, c'est "$id" qui prend le relais pour afficher le reste du formulaire.

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Utilise $_REQUEST alors

  6. #6
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 128
    Points : 51
    Points
    51
    Par défaut
    $_REQUEST :
    Un tableau associatif qui contient par défaut le contenu des variables $_GET, $_POST et $_COOKIE
    Je ne comprend pas en quoi cela peut me simplifier la tache d'autant plus que certaines requêtes contiennent d'autres paramètres??

    Exemple : /voitures/?key=trajet&cp=56200&carb=1&vit=1&ct=1&prix=12&an=2006&km=111111

    Dans cette exemple, "voitures" (url rewriting de répertoires virtuelles) correspond en réalité à mon "id" que je récupère grâce à une fonction.

    Bref, je ne saisie pas la différence entre $_REQUEST['id'] et/ou $_GET['id'] et/ou $_POST['id'] puisque que pour moi ça fait la même chose ?

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Actuellement tu utilises $_POST s'il existe et sinon $_GET, tu n'as qu'a utiliser $_REQUEST et ainsi tu n'as plus a tester tes cas.

  8. #8
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 128
    Points : 51
    Points
    51
    Par défaut
    Au risque de sembler très crétin, je ne comprend toujours pas son utilisation ..

    Quelle différence entre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if(
            (isset($_POST["categorie"]) && $_POST["categorie"]==1)
            ||
            (!isset($_POST["categorie"]) && $id==1)
         )
         {
    		include('formulaire1.php');
          }
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if(
            (isset($_REQUEST["categorie"]) && $_REQUEST["categorie"]==1)
            ||
            (!isset($_REQUEST["categorie"]) && $id==1)
         )
         {
    		include('formulaire1.php');
          }
    Pourrais tu me montrer un exemple pour que je cerne son utilisation stp ?

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il faut que ton paramètre dans l'URL et ton paramètre dans le formulaire aient le meme nom.

  10. #10
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 128
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Il faut que ton paramètre dans l'URL et ton paramètre dans le formulaire aient le même nom.
    Mon paramètre dans l'url est un répertoire virtuelle "voitures" que je récupère par $_GET['b'] donc » voitures .

    Le paramètre de mon formulaire concernant cette catégorie est un identifiant, soit $_POST["categorie"]==1 donc » 1 .

    Donc si j'ai bien compris le truc, je ne peux pas utiliser $_REQUEST en l'état sauf si je modifie mon formulaire pour faire en sorte que $_POST["categorie"] affiche "voiture", soit » $_POST["categorie"]=='voiture' ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option value="voiture">Voitures</option>
    J'ai bon là ou je suis encore à côté de la plaque ?

  11. #11
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    non il faut que $_GET['b'] et $_POST["categorie"] aient le meme nom.
    ainsi $_REQUEST['le_meme_nom'] vaudra soit la valeur du formulaire soit la valeur dans l'url.

  12. #12
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 128
    Points : 51
    Points
    51
    Par défaut
    Okayyyyy, j'ai enfin compris et à la final, il s'avère que je ne peux pas utiliser $_REQUEST dans ma config. actuel

    M'enfin, ta solution apporté plus haut me convient et j'ai compris à quoi servait $_REQUEST .

    Merci de ta patience sabotage

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

Discussions similaires

  1. [Prototype] Ajax & formulaire (encore et toujours !)
    Par bronon dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 10/03/2008, 13h19
  2. souci de formulaire access 2003_bien planté!
    Par arno69_89 dans le forum IHM
    Réponses: 2
    Dernier message: 17/07/2007, 17h32
  3. Réponses: 5
    Dernier message: 23/01/2007, 18h11
  4. Filtrer un état à partir d'un formulaire (encore)
    Par Miss Ti dans le forum Access
    Réponses: 4
    Dernier message: 07/08/2006, 14h40
  5. Petits soucis de formulaire
    Par stolx_10 dans le forum IHM
    Réponses: 22
    Dernier message: 10/07/2006, 11h39

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