Partage
  • Partager sur Facebook
  • Partager sur Twitter

Condition avec $_GET ratée

Sujet résolu
    24 juin 2006 à 14:29:30

    Salut !
    J'essai de retoucher un petit script d'upload pour qu'à la place d'un dossier bien choisis et unique, je puisse accéder à d'autres dossier en le sélectionnant préalablement à l'aide d'un lien et donc bien entendu de la variable GET

    Le prôblème est simple, je ne donnerai que le code qui sert:

    Voici le code à l'origine qui détermine le dossier où sera stocké les images (si je le retire, les images ne vont nulle part), c'est la page "upload.php3"
    $the_path = "image/";


    Je cré une page avec 2 liens, c'est la page "index.php":
    <font size="5">Espace d'upload</font></br>
    <a href="upload.php3?dossier=test1">Uploader une image dans le dossier test1</a><br />
    <a href="upload.php3?dossier=test2">Uploader une image dans le dossier test2</a><br />

    Donc un pour aller dans le dossier test1, l'autre pour aller dans le dossier test2.


    Voilà maintenant le code que je remplace par le premier:

    if ($_GET['dossier'] == "test1") { $the_path = "test1/";}
    if ($_GET['dossier'] == "test2") { $the_path = "test2/";}
    else { $the_path = "image/";}



    Voilà, et quand je choisis le dossier "test1", les images vont toujours dans le dossier "image".
    C'est donc que ma condition à foirée ! o_O



    Voici ma page d'essai
    http://weboufparty.free.fr/upload/
    Hélas je ne peut pas vous dire s'il elle sera encore d'actualité quand vous la testerez car j'y retouche assez souvent sans résultats.



    J'ai bien sûr essayer de mettre:
    $the_path = "test1/";

    et les images vont bien dans le dossier "test1", c'est donc dans ces morceaux de code que tout se joue :)

    Merci à ceux qui ont suivit le prôblème, j'espère qu'ils auront une sollution à me proposer, une erreur à critiquer dans mon code. Vous me rendriez un grand service :honte:
    • Partager sur Facebook
    • Partager sur Twitter
      24 juin 2006 à 14:37:38

      Je suppose que tu utilises $the_path après l'envoi du formulaire... eh bien à ce moment la variable $_GET['dossier'] n'existe plus ! puisque l'action du form est juste "upload.php3"

      Donc si pour l'instant tu as
      <form ENCTYPE="multipart/form-data"  action="upload.php3" method="post">

      il faudrait faire
      <form ENCTYPE="multipart/form-data"  action="upload.php3<?php if(isset($_GET['dossier'])) { echo '?dossier='.htmlentities($_GET['dossier']); } ?>" method="post">

      pour ainsi avoir par exemple
      <form ENCTYPE="multipart/form-data"  action="upload.php3?dossier=test1" method="post">

      comme résultat :)

      (tu peux aussi créer un input hidden sinon, et utiliser ensuite $_POST['dossier']...)
      • Partager sur Facebook
      • Partager sur Twitter
        24 juin 2006 à 14:40:14

        je parie que pour le dossier test2 ça fonctionne? :D
        c'est ta condition qui est mal formée, si le dossier n'est pas test2 ce sera image qui sera mis!
        <?php
        if ($_GET['dossier'] == "test1")
        {
                $the_path = "test1/"; // si c'est test1 on met le dossier test1
        }

        if ($_GET['dossier'] == "test2")
        {
                $the_path = "test2/"; // si c'est test2 on met le dossier test2
        }
        else
        {
                $the_path = "image/"; // sinon si c'est pas test2, mais peu importe si c'est test1 on met le dossier image
        }
        ?>

        il faut mettre :
        <?php
        if ($_GET['dossier'] == "test1")
        {
                $the_path = "test1/"; // si c'est test1 on met le dossier test1
        }
        elseif ($_GET['dossier'] == "test2")
        {
                $the_path = "test2/"; // si c'est test2 on met le dossier test2
        }
        else
        {
                $the_path = "image/"; // sinon si c'est ni test1, ni test2 on met le dossier image
        }
        ?>
        • Partager sur Facebook
        • Partager sur Twitter
          24 juin 2006 à 14:45:47

          awi j'avais pas vu qu'il avait mis if au lieu de elseif :-°
          • Partager sur Facebook
          • Partager sur Twitter
            24 juin 2006 à 15:07:52

            Merci pour vos réponses! :)
            Mais je suis toujours bredouille
            J'ai donc pris d'abord la réponse de Cortexd, et remplacé mon if par un elseif (dont je n'ai encore vraiment compris le but mais je me replongerai dans les cours).
            Mais là c'est toujours pareil :euh: ( http://weboufparty.free.fr/upload/ tout va dans le dossier image)

            Ce doit être autre chose, et pourtant, je ne pense pas que ça déborde du code que je vous ai donné.
            Je ne verai certainement pas le prôblème tout seul avec mon niveau. Je vais essayer quand j'aurai du temps d'exploiter la réponse de thelittlegui que je n'ai pas encore bien comprise surtout que je suis sur qu'un simple GET pourrait me contenter.

            Voici le stade actuel de mon code:
            INDEX.PHP:
            <a href="upload.php3?dossier=test1">Uploader une image dans le dossier test1</a><br />
            <a href="upload.php3?dossier=test2">Uploader une image dans le dossier test2</a><br />


            UPLOAD.PHP:
            if ($_GET['dossier'] == "test1") { $the_path = "test1/";}
            elseif ($_GET['dossier'] == "test2") { $the_path = "test2/";}
            else { $the_path = "image/";}



            Je vais faire quelques test perso, genre imprimer la variable $the_path (je viens d'y penser!) pour voir si ça vient réellement de la condition
            Merci :)

            EDIT:
            Voilà, j'ai ajouté un appercu de la variable the_path sur la page upload et tout semble ok :euh:
            http://weboufparty.free.fr/upload/upload.php3?dossier=test1
            Voilà... je sais vraiment pas d'où ça vient alors, je vais voir la première réponse


            RE-EDIT
            Quand j'upload l'image, alors la variable se remet en tant que
            voici ce que contient le variable $the_path en ce moment: image/

            Je crois avoir compris ce qui clochait ! C'est dans la formulaire que je ne vous ai pas passé !
            Le réponse de thelittlegui m'inspire, merci! :D Je vous dis si je trouve
            • Partager sur Facebook
            • Partager sur Twitter
              24 juin 2006 à 15:18:46

              Oui "un simple GET pourrait te contenter", à condition de le placer aussi dans l'"action" du "form" ;)

              C'est pourtant logique : si tu donnes juste "upload.php3" comme action de ton formulaire, comment veux-tu que PHP se souvienne de la variable $_GET['dossier'] ? elle disparaît lors de l'envoi du formulaire (et donc $the_path vaut "image/")
              Mais avec "upload.php3?dossier=test1" (par exemple) comme action, ta variable GET est "conservée" :)


              edit : ah tu as édité, tu sembles avoir compris :)
              • Partager sur Facebook
              • Partager sur Twitter
                24 juin 2006 à 15:31:47

                MERCI thelittlegui !! ;)
                Tout fonctionne très bien maintenant :)
                C'était un oubli dans le formulaire, je regarderait à deux fois la prochaine fois

                à bientôt :)
                • Partager sur Facebook
                • Partager sur Twitter

                Condition avec $_GET ratée

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown