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 :

Aller sur une page différente en fonction d'un choix


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut Aller sur une page différente en fonction d'un choix
    Bonsoir,

    en fonction d'un choix que l'utilisateur fait via un formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <tr><td><input type="radio" name="type" value="image" /> : image   </td> </tr>
    <tr><td><input type="radio" name="type" value="musique" /> : musique  </td>   </tr>
    <tr><td><input type="radio" name="type" value="video" />  : video    </td></tr>
    <tr><td><input type="radio" name="type" value="compress&eacute;" /> : compress&eacute; </td> </tr>
    je voudrais le diriger dans l'action vers une page différente. Dans l'action, j'ai mis ceci :
    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
    <?php
    $type=$_POST['type'];
    switch($type) {
    case "image" : {
    header("Location: /uploadimage/upload_image.php");
    		exit(); 
    break;
    }
    case "musique" : {
    header("Location: /uploadimage/upload_musique.php");
    		exit(); 
    break;
    }
    case "video" : {
    header("Location: /uploadimage/upload_video.php");
    		exit(); 
    break;
    }
    case "compress&eacute;" : {
    header("Location: /uploadimage/upload_compr.php");
    		exit(); 
    break;
    }
    case default: {
    echo "Veuillez faire un choix.<br>";
    break;
    }
    }
    Mais les "echo" que j'ai placés dans ces pages me prouvent qu'on n'y passe pas ; pourquoi ? Que faut-il faire ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #2
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Il y a un truc qui marche : mettre un onclick dans les "radio", mais je ne veux pas faire ça, car on n'est pas sûr que l'utilisateur ait complètement rempli le formulaire...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  3. #3
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 022
    Points : 2 273
    Points
    2 273
    Par défaut
    Salut,
    a priori tout est bon. Fais-voir le code complet de ton form.
    Fais aussi un var_dump($_POST) tout en haut de page pour voir les valeurs transmises.
    Vive les roues en pierre

  4. #4
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Merci de tenter de me donner une solution.
    Le var_dump donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array(6) { ["nom"]=> string(4) "lolo" ["prenom"]=> string(4) "lolo" ["mail"]=> string(18) "schmittlau@aol.com" ["cat"]=> string(10) "Faire part" ["type"]=> string(7) "musique" ["envoyer"]=> string(7) "Valider" }
    ce qui me semble correct, et voici le formulaire entier :
    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
     <form method="post" action="action_upload_fichier.php"
     enctype="multipart/form-data"><b><font
     face="Arial"><br>
            <table>
              <tbody>
                <tr>
                  <td><font color="#C596FF">Votre
    nom :</font></td>
                  <td> <input name="nom" size="30"
     maxlength="40" value="" type="text"></td>
                </tr>
                <tr>
                  <td><font color="#C596FF">Votre prenom :
                  </font></td>
                  <td><input name="prenom" size="30"
     maxlength="40" value="" type="text"></td>
                </tr>
                            <tr>
                  <td><font color="#C596FF">Votre adresse
    mail
    :</font></td>
                  <td><input name="mail" type="text"></td>
                </tr>
     
                            <tr>
                  <td><font color="#C596FF">Cat&eacute;gorie des fichiers
    :</font></td>
                  <td><SELECT name="cat" size="1">
    <OPTION>Faire part</option>
    <OPTION>Photo montage</option>
    <OPTION>Etiquette de bouteille</option>
    <OPTION>Parure de lit</option>
    <OPTION>Id&eacute;e cadeaux personnalis&eacute;e</option>
    <OPTION>Montage DVD</option>
    </SELECT>
    </td>
                </tr>            
     
     <tr><td>Choisissez le type de fichiers &agrave;
     t&eacute;l&eacute;charger :</tr>
    <tr><td><input type="radio" name="type"  value="image" /> : image   </td> </tr>
    <tr><td><input type="radio" name="type"  value="musique" /> : musique  </td>   </tr>
    <tr><td><input type="radio" name="type"  value="video" />  : video    </td></tr>
    <tr><td><input type="radio" name="type"  value="compress&eacute;" /> : compr </td> </tr>
    <tr><td><input name="envoyer" value="Valider" type="submit">    </td></tr>
     <table>
      </form>
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  5. #5
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 022
    Points : 2 273
    Points
    2 273
    Par défaut
    Ton code fonctionne chez moi, à un détail près tu as une parse error (est-ce qu'elle ne s'affiche pas chez toi ?)

    c'est en fait simplement :

    Idem, ici tu devrais avoir aussi un warning lors de la première visite sur la page car $_POST['type'] n'est pas définie. En général tu testes l'existence de la valeur (ta variable intermédiaire $type est inutile) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(isset($_POST['type'])) {
    switch($_POST['type']) etc...
     
    }
    J'en conclue que l'affichage des erreurs/warning n'est pas activé sur ta config, tu devrais modifier le php.ini pour les activer si t'es en local.
    Vive les roues en pierre

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 45
    Points : 55
    Points
    55
    Par défaut
    Salut,


    En complément des propos de Djakisback :
    Pourquoi mets tu des {} dans tes case ?
    Pas besoin !

    Il manque sans doute des value dans tes balises <option>, et puis les tags doivent être en minuscules (<option>, <select>, ...)

    Mais les "echo" que j'ai placés dans ces pages me prouvent qu'on n'y passe pas
    Que se passe t-il au juste ? Tu restes sur la même page ? Il te réaffiche le formulaire ?
    L'URL change t-elle dans le navigateur ?


    Cordialement,


    Kohntark-

  7. #7
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Je ne réponds que maintenant, car 1) je n'étais pas là hier et 2) la notification n'a pas marché.
    Donc, le "case default" n'y est plus depuis quelques temps. Que veux-tu dire par "$_POST['type'] n'est pas définie" : le formulaire étant de type POST, je ne définie pas cette variable...
    Non, je ne suis pas en local, Wampserver ne marchant plus chez moi depuis plusieurs années, et sans que je sache pourquoi.
    Même si les {} ne servent à rien, ils ne gênent pas...
    Quand je tente la redirection, je reste dans la même page, mais j'obtiens un warning que je ne voyais pas avant, le <font color...> m'empêchant de le voir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: Cannot modify header information - headers already sent by (output started at /homez.187/kitskats/www/uploadimage/action_upload_fichier.php:9) in /homez.187/kitskats/www/uploadimage/action_upload_fichier.php on line 114
    La ligne 114 de action_upload_fichier.php est celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Location: /uploadimage/upload_musique.php");
    mais la ligne 9 est celle-là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta content="Lauyan TOWeb 3.0.4.562" name="generator">
    (dans le head , )(donc, ça ne désigne pas la ligne)
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  8. #8
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 022
    Points : 2 273
    Points
    2 273
    Par défaut
    Re,
    oui c'est un problème récurrent, tu ne dois pas envoyer de texte au client avant des headers HTTP sinon ils ne seront pas interprétées par le navigateur. Il faut que tu remontes ton code avant toute sortie HTML.

    Pour $_POST['type'], elle n'est définie que quand tu valides ton formulaire, ce qui veut dire que la première fois que tu visites ta page, elle n'est pas définie, cela génère donc normalement un warning.
    Vive les roues en pierre

  9. #9
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Merci de ta réponse ; donc en gros, c'est comme pour gérer des sessions ou des cookies en PHP...J'essaierai probablement demain.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  10. #10
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Merci de ton conseil Djakisback, je viens de faire un bête essai (pas le temps d'en faire plus pour l'instant), mais la redirection a marché.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  11. #11
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 022
    Points : 2 273
    Points
    2 273
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    Merci de ta réponse ; donc en gros, c'est comme pour gérer des sessions ou des cookies en PHP...J'essaierai probablement demain.
    Oui c'est exactement pareil car la création d'un cookie se fait via une entête/header HTTP et la création d'une session se fait par défaut via un cookie.
    Vive les roues en pierre

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/12/2014, 15h22
  2. Ouvrir un fichier pdf - aller sur une page en particulier
    Par amzerd dans le forum VBA Access
    Réponses: 1
    Dernier message: 07/05/2014, 22h34
  3. Force un réseau lan à aller sur une page intranet
    Par JJroset dans le forum Réseau
    Réponses: 0
    Dernier message: 11/04/2013, 19h09
  4. cohabitation de fonction sur une page
    Par temperature dans le forum Langage
    Réponses: 5
    Dernier message: 28/04/2006, 15h21
  5. comment rediriger sur une page html en fonction de la langue
    Par pierrot10 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 10/08/2005, 11h42

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