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 :

url rewriting et requête SQL


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2008
    Messages : 3
    Par défaut url rewriting et requête SQL
    Bonjour, je suis en train (d'essayer) de mettre en place l'url rewriting sur un site.
    j'ai des adresses de type :
    http://www.monsite.com/dossier/page.php?var1=x&var2=y

    j'ai donc fait en sorte de réécrire les url de cette manière la :
    http://www.monsite.com/x-y.html

    et ça fonctionne.

    mais dans page.php j'ai une requête de type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat=mysql_query("SELECT * FROM table WHERE table.champ1='$var1' AND  table.champ2='$var2');
    donc pour récupérer les valeurs de var1 et var2 j'ai écrit ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $urlrewrit=explode(".",$_SERVER['REQUEST_URI']);
    $var3=explode("-",$urlrewrit[0]);
    $var1=substr($var3[0],1);
    $var2=$var3[1];
    puis pour vérifier que var1 et var2 aient bien les valeurs voulues j'ai fait un echo et ça affiche bien x et y.

    le problème est que le résultat de ma requête est vide.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Par défaut
    Si tu récupères bien tes variables et que ta requete marche pas, logiquement, l'erreur vient de la requete donc tu devrais en faire un echo et la mettre dans phpmyadmin par exemple pour voir ce qu'il se passe plus en détails.

    Une autre remarque, je pense que ton rewriting est pas très bien fait. L'intérêt à mon sens du rewriting est certes de proposer une url plus propre mais SANS changer la façon dont on récupère les variables. La tu fais une concaténation de variables en une seule et je trouve ça pas comode à gérer.
    Pourquoi ne pas plutot faire une regle du type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(.*)-(.*)\.html /ta_page.php?var1=$1&var2=$2 [L]
    Ainsi tu récupères directement var1 et var2 dans ta_page.php dans des variables GET bien définies et tu évites ton traitement de récupération des variables.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2008
    Messages : 3
    Par défaut
    tout d'abord merci pour ta réponse.
    j'avais déjà écrit cette règle mais elle ne fonctionne pas. et un echo de $resultat n'affiche rien.

    du coup je viens de la réécrire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^dossier/(.*)-(.*)\.html$ /dossier/page.php?var1=$1&var2=$2 [L]
    et là il y a du progrès : tout d'abord un echo de $var1 affiche bien x mais le echo de $var2 n'affiche rien. ensuite un echo de $result m'affiche la même chose que lorsque l'url rewriting n'est pas en place. enfin j'ai oublié de préciser quelquechose : la page où est écrite la requête (que j'appellerai souspage.php dans cet exemple) et en fait un include dans page.php.

    en fait je n'avais jamais fait de php avant d'avoir à reprendre ce site donc des variable GET ? et une question (sûrement bête mais je ne suis plus à ça près) me vient à l'esprit : dans le code du site il faut bien que je réécrive le href tel que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="http://www.monsite.com/dossier/x-y.html">
    ?

    edit : variables GET : $_GET['var1'] ?

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Par défaut
    Je viens de faire un test chez moi et avec a la racine de mon site:

    .htaccess
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteEngine On
    RewriteRule ^(.*)-(.*)\.html ta_page.php?var1=$1&var2=$2 [L]
    ta_page.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
         echo $_GET['var1'];
         echo '<br />';
         echo $_GET['var2'];
    ?>
    et a l'url http://monsite/1-2.html j'ai bien
    comme retour. Essaie de voir si cet exemple simple déjà marche correctement.

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Par défaut
    En te lisant j'ai aussi l'impréssion que tu passes à coté de quelque chose dans ta requete SQL.
    Tu dis qu'un echo de $resultat ne renvoit pas la requete, c'est normal !
    $resultat est une ressource SQL et non pas le contenu des tuples retournées par la requete !!

    Essaie de procéder comme ceci peut etre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $requete="SELECT * FROM table WHERE table.champ1='".$var1."' AND  table.champ2='".$var2."'";
    echo 'requete : '.$requete;
    echo '<br />';
    $resultat=mysql_query($requete);
    if($resultat){ //si la requete est bien effectuéé
       while($liste=mysql_fetch_assoc($resultat)){ 
          //affichage des tuples retournées par la requete
          var_dump($liste);
       }
    }

  6. #6
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    L'URL Rewriting ne change rien au fait que tu passes des variables...

    Pour en être certain, tu peux tester le code suivant dans la page que tu appelles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
    echo "<pre>";
    print_r($_GET);
    echo "</pre>";
    il devrait t'afficher ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Array {
              var1 => valeur1
              var2 => valeur2
            }
    voilà, c'est juste pour ton info perso ;-)



    Pour ce qui est de ta requête, essaye en échappant bien tes variables de la synthaxe mySQL...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $query = mysql_query("SELECT * FROM ma_table WHERE var1 = '".$_GET["var1"]."'");
    '".$_GET[""]."' à la place de '$_GET["var1"]' (si on respectait ton écriture)

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

Discussions similaires

  1. Requête SQL
    Par Leludo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/07/2024, 15h41
  2. URL rewriting, pages dynamiques et requête SQL
    Par Inh[Star]Noz dans le forum Apache
    Réponses: 4
    Dernier message: 12/03/2010, 18h11
  3. [ DB2 ] [ AS400] requête sql
    Par zinaif dans le forum DB2
    Réponses: 6
    Dernier message: 23/08/2008, 19h42
  4. Réponses: 2
    Dernier message: 22/08/2008, 17h03
  5. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38

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