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 :

Affichage après l'envoi d'un formulaire


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Par défaut Affichage après l'envoi d'un formulaire
    Bonjour,

    j'ai regardé sur la FAQ et sur les tutoriaux PHP et je n'ai pas trouvé ...

    En fait, j'ai trois boutons radio, une fois ma sélection faite, je valide en cliquant sur un bouton de type submit.
    Cela m'affiche des trucs, dont un champ de type text avec un bouton de type submit à côté qui exécute une requête quand je clique dessus.
    Sauf que dès que je clique sur ce bouton, ma page se charge avec uniquement les trois boutons radio du haut et le bouton submit du haut. Et du coup ma requête ne s'exécute pas.

    J'ai mis une image pour que vous vous rendiez mieux compte.

    Voici mon code :

    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    <form method="post">
     
    <input type="radio" name="test" value="1" /> Archive
    <input type="radio" name="test" value="2" /> Livre
    <input type="radio" name="test" value="3" /> Presse
    <input type="submit" value="Valider" <?php
    if(isset($_POST['test'])) 
    {
     echo ' disabled="disabled"';
    }
     ?>/>
    </form>
     
    <?php
    // Fichier de connexion
    require("page_connexion.php");
    ?>
     
    <?php
    // Connexion au serveur 
    $connexion = mysql_connect($serveur, $login, $mdp) ;
     
    // Sélection de la base sur le serveur 
    $bd = "-----";
     
    echo '<form action="'.$_SERVER["PHP_SELF"].'" method="post">'."\n";
     
    // Connexion à la base 
    mysql_select_db($bd, $connexion) or die("<br>Connexion impossible à la base $bd par $login");
    //echo "<br>connexion réussie à la base $bd pour l'utilisateur $login";
     
     
    	if(isset($_POST['test']))
    	{
    		$test=$_POST['test'];
    		// Affichage pour les archives
    		if($test==1)
    		{
                            // Quelques trucs dont la liste déroulante ...
     
    			echo '<td>Nom de la catégorie</td>';
    			echo '</tr>';
    			echo '<tr>';
                            // Mon champ text avec le bouton submit juste après
    			echo '<td><input type="text" name="plop"></td><td><input type="submit" name="save" value="Valider"></td>';
    			echo '</tr>';
    			echo '</table>';
     
    			// Si appui sur validation de l'enregistrement de la catégorie d'archive ET LA CA PLANTE EN AFFICHANT RIEN DU TOUT
     
    			if (isset($_POST['save']))
    			{
    				$var=$_POST['save'];
    				if ($var=="Valider")
    				{
    				// Affichage de toutes les catégories correspondantes au type archive
    					// Requête d'insertion insérant ce qui a été entré dans le champ à côté du bouton save
    					$add_cat = ------ ;
    					mysql_db_query($bd,$add_cat);
                                            // Requete "SELECT ...."
    					$allcat = -----
    					// Listage des catégories
    					echo '<select>';
    					while ($donnees = mysql_fetch_array($allcat) )
    					{
    						$temp = $donnees['Libellé'];
    						echo '<OPTION>'.$temp.'</OPTION>';
    					}
    					echo '</select>';
    				}
    			}
     
     
    		}
    		// Affichage pour les livres
    		else if($test==2)
    		{
    			........
    		}
                    else 
                    {......
                    }
    Si je mets le code correspondant à "après avoir appuyé sur le bouton save" après la fin de mon else, ça marche sans problème.
    Mais toute cette partie de code se retrouvera dans chacun de mes "if", avec des valeurs différentes, donc je ne pense pas pouvoir faire un code général à la fin pour un appui sur save dans nimporte quel if.

    En espérant avoir été claire, j'espère que vous pourrez m'aider.
    Images attachées Images attachées  

  2. #2
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Suisse

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Par défaut
    Salut,

    Je ne suis pas sûr d'avoir bien compris ton problème. Mais en gros si tu cliques sur le bouton "Valider" pour ajouter une catégorie sa devrait t'afficher une liste nouvelle liste déroulante ?

    Moi je vois un soucis, c'est que tu as deux formulaire, si tu envois le premier formulaire le premier if va passer car $_POST['test'] existe mais le deuxième if ne passera pas.
    Et si tu envois le deuxième formulaire le premier if ne passera pas du tout et donc le deuxième non plus car $_POST['test'] n'existera pas.

    Donc sois tu met tout dans un formulaire sois tu modifies tes if.
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  3. #3
    Membre éclairé Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Par défaut
    Une fois entré le nom de catégorie, puis avoir cliqué sur Valider, j'aurai une autre liste déroulante en effet.

    Changer les if, je vois pas comment excepté mettre le "if [save]" à l'extérieur des "if(test == 1)" et ça j'ai tenté de l'expliquer et ça ne marche pas :/

    Mettre un seul formulaire pour prendre en compte tous les boutons : des radios aux différents submit ?

  4. #4
    Membre éclairé
    Inscrit en
    Août 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 79
    Par défaut
    Le plus simple c'est de faire un principe de wizard avec des champs caché.

    Je m'explique:

    Tu as un input hidden "wizz" dont la value vaut 0 au départ. Si le $_POST value = 0 ou est empty tu affiche tes radio button seulement et tu set le wizz a 1

    Si le wizz est à 1 tu affiche la liste déroulante, etc...


    Tout cela fait avec un switch si possible

  5. #5
    Membre éclairé Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Par défaut
    Euh je ne suis pas sûre d'avoir tout compris pour le wizard.

    Elle se changera comment la valeur du "wizz" ?

    Si je clique sur mon bouton Envoyer de mes boutons radio, alors je fais passer wizz à 1, et le wizz à 1 affiche certains trucs ?

    C'est ça ? oO

  6. #6
    Membre éclairé
    Inscrit en
    Août 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 79
    Par défaut
    Un truc du genre

    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
     
    switch($_POST['wizz'])
    {
        case 0:       
                 echo "<input type=hidden value=1 name='wizz' />";
                  break;
               // ici l'HTML de la 2eme partie de ton form
     
       case 1:
            echo "<input type="hidden" value=2 name='wizz' />";
          // HTML de la 3eme partie de ton form
             break;
     
       default:
           echo "<input type="hidden" value=0 name 'wizz' />
         // HTML de la 1ere partie de ton form!
          break;
     
    }
    Il faut un peu paufiner la chose, mais dans le principe c'est comme cela que je ferai. Cela permet d'être extensible aussi

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

Discussions similaires

  1. [PHP 4] Actualiser page après l'envoi d'un formulaire
    Par Coolraoul dans le forum Langage
    Réponses: 2
    Dernier message: 17/05/2013, 11h43
  2. Affichage trop lent de Compte(reg) après 1 filtre dans un formulaire
    Par Drarack dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 24/08/2008, 18h09
  3. redirection apres envoi d'un formulaire
    Par roy51 dans le forum Langage
    Réponses: 10
    Dernier message: 05/05/2008, 08h35
  4. Affichage après un clic de formulaire?
    Par Dev@lone dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 17/12/2007, 22h34
  5. [SQL] Envoi d'un formulaire/mail après traitement avec sql
    Par chamoix dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 08/05/2007, 19h46

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