Partage
  • Partager sur Facebook
  • Partager sur Twitter

insérer une $variable dans une adresse http

12ième jour de connaisance en PHP...

Sujet résolu
    6 avril 2020 à 16:45:00

    Bonjour à tous,

    est-il possible d'intégrer une $variable dans une adresse http ?

    du style :

    <?php
    $nombre_jour_perso = 3;
    
    //header('Location: base_jour_perso.[$nombre_jour_perso].php');
    
    //header('Location: base_jour_perso.{$nombre_jour_perso}.php');
    
    //header('Location: base_jour_perso.$nombre_jour_perso.php');
    
    //header('Location: base_jour_perso$nombre_jour_perso.php');
    ?>

    Comme vous pouvez le voir j'ai essayé, mais mes compétences limitées et mes recherches sont restées infructueuses

    cela pour éviter d'intégrer ce bout de texte : (ou même une boucle) :

    <?php
    if ($nombre_jour_perso = 1)
    {
        header('Location:base_jour_perso_1');
    }
    elseif ($nombre_jour_perso = 2)
    {
        header('Location:base_jour_perso_2');
    }
    elseif ($nombre_jour_perso = 3)
    {
        header('Location:base_jour_perso_3');
    }
    elseif ($nombre_jour_perso = 4)
    {
        header('Location:base_jour_perso_4');
    }
    elseif ($nombre_jour_perso = 5)
    {
        header('Location:base_jour_perso_5');
    }
    elseif ($nombre_jour_perso = 6)
    {
        header('Location:base_jour_perso_6');
    }
    elseif ($nombre_jour_perso = 7)
    {
        header('Location:base_jour_perso_7');
    }
    elseif ($nombre_jour_perso = 8)
    {
        header('Location:base_jour_perso_8');
    }
    elseif ($nombre_jour_perso = 9)
    {
        header('Location:base_jour_perso_9');
    }
    else ($nombre_jour_perso > 10)
    {
        header('Location:base_jour_perso_10');
    }
    // etc...etc...
    ?>

    même si je peux sans doute l'alléger avec une boucle, mais je me dis qu'il doit bien y avoir plus simple.

    Merci à ceux qui voudront bien m'aider

    -
    Edité par GerardDulin2 6 avril 2020 à 16:45:40

    • Partager sur Facebook
    • Partager sur Twitter
      6 avril 2020 à 16:49:55

      Tu confonds = et == mais bref ...

      > est-il possible d'intégrer une $variable dans une adresse http ?

      Oui mais pas comme tu l'as fait : header('Location: base_jour_perso.php?nombre_jour_perso=' . $nombre_jour_perso); (et tu la récupères par $_GET['nombre_jour_perso'] sur ton script base_jour_perso.php) sinon il faut parser $_SERVER['REQUEST_URI'] ou s'orienter vers une réécriture d'URL et ça c'est une autre paire de manches.

      -
      Edité par julp 6 avril 2020 à 16:56:32

      • Partager sur Facebook
      • Partager sur Twitter
        6 avril 2020 à 17:17:02

        merci beaucoup !

        Entre-temps j'avais trouver ça, mais il fallait passer par un lien cliquable...

        //<?php
         
        //$nombre_jour_perso = 3 ;
         
        //$url = "<a href=\"base_jour_perso_".$nombre_jour_perso.".php\">Lien avec variable</a>";
         
        //echo $url
         
        //?>

        est-ce que le même principe est applicable pour ouvrir une base sous MYSQL ?

        je voudrais intégrer une $variable à la place du nom de ma base ici :

        <?php
        // Connexion à la base de données
        try
        {
            $bdd = new PDO('mysql:host=localhost;dbname=$ma variable;charset=utf8', 'root','', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
        }
        catch(Exception $e)
        {
                die('Erreur : '.$e->getMessage());
        }


        et merci pour l'indication d'erreur = à la place de ==



        -
        Edité par GerardDulin2 6 avril 2020 à 17:17:58

        • Partager sur Facebook
        • Partager sur Twitter
          6 avril 2020 à 17:27:20

          > je voudrais intégrer une $variable à la place du nom de ma base ici

          Oui mais pour avoir un tel besoin, c'est que ta base de données est mal modélisée ?

          > 'mysql:host=localhost;dbname=$ma variable;charset=utf8'

          1. en PHP, une variable ne peut comporter un espace dans son nom (à moins de passer par la syntaxe dynamique)
          2. quand la chaîne est délimitée par des ', les variables présentes dans la chaîne ne sont pas remplacées par leur valeur. Il en faut des doubles (") ou alors réaliser une concaténation.

          Donc "mysql:host=localhost;dbname={$_GET['variable']};charset=utf8" ou 'mysql:host=localhost;dbname=' . $_GET['variable'] . ';charset=utf8'.

          Noter que j'ai dû entourer la variable d'accolades sur le premier code du fait qu'on n'a pas une simple variable mais un tableau. Ca fonctionnerait avec ?variable=nomDeLaBDD ajouté à l'URL mais je déconseille l'usage d'un nom dynamique de base de données, surtout saisi (ou pas - point qu'il serait bon de vérifier aussi) par l'utilisateur

          -
          Edité par julp 6 avril 2020 à 17:32:24

          • Partager sur Facebook
          • Partager sur Twitter
            6 avril 2020 à 17:42:59

            Je te remercie,

            mais en fait, j'ai toujours le même problème.

            je voudrais ouvrir une page différente à chaque fois que ma variable change,

            si par exemple ma variable est = 5 je voudrais ouvrir la page : base_jour_perso_5.php

            si = 6 : base_jour_perso_6.php, etc...

            -
            Edité par GerardDulin2 6 avril 2020 à 17:47:06

            • Partager sur Facebook
            • Partager sur Twitter
              6 avril 2020 à 17:48:32

              Qu'appelles-tu "ouvrir" ? Par quel biais : via un lien ? Une redirection HTTP ? Autre ?

              Tu ne peux (veux ?) pas passer ta variable en chaîne de requête de l'URL ? Parce que si c'est pour dupliquer le même code ...

              • Partager sur Facebook
              • Partager sur Twitter
                6 avril 2020 à 17:52:26

                Salut,

                comme le dit julp:

                1 fichier php base_jour_perso.php et tu lui passe les variables en GET

                • Partager sur Facebook
                • Partager sur Twitter
                  6 avril 2020 à 18:02:46

                  heu, si j'ai bien compris ta question,

                  Une redirection vers des pages différentes

                  j'essaie de t'expliquer ce que je veux faire....

                  j'ai trois variables : $base_jour_perso et $table_jour_perso et $champs_heure_perso,

                  et avec ces trois $variables, je veux aller chercher l'information qui se trouve dans la base 'x' ; sur la table 'x' et dans le champs 'x'

                  Mais comme je suis newbie(ça fait 12 jours que je me suis mis au PHP), je fais avec ce que j'ai acquis jusqu'à maintenant....

                  Donc, j'ai créer plusieurs pages qui m'amène à la solution en fait (comme il y a encore quelques minutes je ne savais pas comment intégrer une $variable à la place du nom de ma base...

                  -
                  Edité par GerardDulin2 6 avril 2020 à 18:04:07

                  • Partager sur Facebook
                  • Partager sur Twitter
                    6 avril 2020 à 18:12:24

                    Dans ton fichier, tu te connectes à la base X, puis tu vas faire une requête SQL comme celle-là: SELECT X FROM X WHERE X=<valeur>

                    => tu as un cours de base pour la conception d'un site web...

                    Mais il nous faut du code

                    • Partager sur Facebook
                    • Partager sur Twitter
                      6 avril 2020 à 18:57:49

                      > et avec ces trois $variables, je veux aller chercher l'information qui se trouve dans la base 'x' ; sur la table 'x' et dans le champs 'x'

                      function e(string $id): string {
                          return '`' . str_replace('`', '``', $id) . '`';
                      }
                      
                      $stmt = $bdd->query('SELECT ' . e($champs_heure_perso) . ' FROM ' . e($base_jour_perso) . '.' . e($table_jour_perso) . ' /*WHERE ... */');

                      Pour en arriver à base + table + colonne dynamiques, il y a clairement un problème de conception.

                      • Partager sur Facebook
                      • Partager sur Twitter
                        6 avril 2020 à 20:20:15

                        merci beaucoup,

                        je vais tenter de comprendre ce script et voir comment l'utiliser.

                        Oui, tu as raison, il y a vraiment un problème de conception dans ma base (juste une histoire de compétences) et de ne pas savoir au départ comment tout cela fonctionne.

                        J'avais créé 9 bases....Mais je viens de comprendre que je peux simplifier tout cela, la fonction WHERE par exemple est d'une grande utilité,

                        donc je vais tout reprendre la conception de mes bases en éliminant les 8 inutiles et en travaillant sur une seule.

                        du coup, je dois re-travailler aussi mes formulaires.

                        merci encore de votre aide,

                        ps :

                        (...)=> tu as un cours de base pour la conception d'un site web...(...)

                        j'étudie celui-ci (j'en suis à 81%):

                        Concevez votre site web avec PHP et MySQL

                        Mais bon je suis plus tout jeune, peut-être que ceci explique cela :p:lol:

                        -
                        Edité par GerardDulin2 6 avril 2020 à 20:51:01

                        • Partager sur Facebook
                        • Partager sur Twitter
                          6 avril 2020 à 21:12:24

                          Quand on débute (et pas forcément sur le langage, même un projet), on prend rarement la bonne direction mais le tout c'est de s'en rendre compte/d'en prendre conscience et d'améliorer sa réalisation.

                          Il faut bien se dire que c'est de ses erreurs qu'on apprend. On n'en ferait pas, on aurait rien à apprendre ;)

                          • Partager sur Facebook
                          • Partager sur Twitter
                            7 avril 2020 à 10:43:53

                            Merci pour tes encouragement julp ! sympa

                            -
                            Edité par GerardDulin2 8 avril 2020 à 7:27:48

                            • Partager sur Facebook
                            • Partager sur Twitter

                            insérer une $variable dans une adresse http

                            × 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