SQL : Plusieurs possibilités pour where

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par lukeskins, 25 Février 2009.

  1. lukeskins
    lukeskins Nouveau WRInaute
    Inscrit:
    25 Février 2009
    Messages:
    5
    J'aime reçus:
    0
    Bonjour à tous

    Alors voilà j'ai un petit problème.
    Je ne connais pas grand chose au SQL alors je me tourne vers vous.

    Pour accéder à l'épisode 1 de la saison 1 de mon site, je fais
    mondomaine.com/episode.php?id=1
    Et dans le fichier PHP, ça donne ça :
    Code:
    $retour = mysql_query("select * from episode where id=$id");
    jusque la, ca fonctionne


    Mais je voudrais que le lien pour accéder à l'épisode 1 de la saison 1 soit
    mondomaine.com/episode.php?saison=1&episode=1
    donc je fais
    Code:
    $retour = mysql_query("select * from episode where saison=$saison AND episode=$episode");
    Et ça fonctionne aussi

    Mon problème, c'est qu'en faisant ça, le lien mondomaine.com/episode.php?id=1 ne fonctionne plus

    et je voudrais que l'épisode soit accessible par
    mondomaine.com/episode.php?id=1
    ET PAR
    mondomaine.com/episode.php?saison=1&episode=1


    j'ai essayer de faire
    Code:
    $retour = mysql_query("select * from episode where id=$id OR saison=$saison AND episode=$episode");
    mais ça fonctionne pas

    Je sais bien que c'est pas très clair, mais je ne sais pas comment expliquer.

    En tous cas, merci à ceux qui prendront le temps de me répondre
     
  2. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 920
    J'aime reçus:
    257
    1. C'est une très mauvaise idée, car cela te génère du duplicate content (même contenu avec deux urls différentes)

    2. Avant ton select, tu fais un test sur ta variable et si elle n'existe pas tu lui donnes une valeur
    if (!isset($epidode)) $episode = 1 ;
     
  3. lukeskins
    lukeskins Nouveau WRInaute
    Inscrit:
    25 Février 2009
    Messages:
    5
    J'aime reçus:
    0
    Je viens de trouver la solution, le résultat c'est :
    Code:
    $retour = mysql_query('select * from episode where id='.intval($id).' OR (saison='.intval($saison).' AND episode='.intval($episode).')');
    Ça m'inquiète cette histoire de duplicate content :!:

    La raison pour laquelle je fais tout ça, c'est que plusieurs sites ont un lien vers le mien et ces liens sont à la forme
    episode.php?id=1

    Moi je voulais faire un url rewriting grâce à
    episode.php?saison=1&episode=1
    Pour arriver avec
    saison1-episode1.htm

    Mais dans ce cas, il faut que les liens episode.php?id=1 soient toujours actifs pour que les visiteurs venant d'autres sites ne tombent pas sur une page d'erreur, mais sur la page voulue
     
  4. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 920
    J'aime reçus:
    257
    Il faut faire une redirection

    Ou utiliser le nouveau link rel="canonical"
     
  5. lukeskins
    lukeskins Nouveau WRInaute
    Inscrit:
    25 Février 2009
    Messages:
    5
    J'aime reçus:
    0
    Dans mon .htaccess, j'ai fais

    Code:
    RedirectPermanent /episode.php?id=1  http://www.monsite.com/saison-1-episode-1.html
    Malheureusement, ça fonctionne pas
    J'ai jeté un coup d'œil sur google, pas de solutions... :(
     
  6. aladdin
    aladdin WRInaute passionné
    Inscrit:
    29 Avril 2005
    Messages:
    1 235
    J'aime reçus:
    0
    il faut revoir ce code, tu risque pire que le duplicate content.

    c'est une très mauvaise idée d'utiliser les variables de ton querystring directement dans la requête, tu risque des injections SQL.
     
  7. lukeskins
    lukeskins Nouveau WRInaute
    Inscrit:
    25 Février 2009
    Messages:
    5
    J'aime reçus:
    0
    Vu que ça fonctionne, j'ai pas de problème d'injection. Si ?
     
  8. aladdin
    aladdin WRInaute passionné
    Inscrit:
    29 Avril 2005
    Messages:
    1 235
    J'aime reçus:
    0
    pour tester c'est simple

    qu'est ce qui se passe si tu tape un truc du genre :

    Code:
    mondomaine.com/episode.php?saison=1&episode=1 OR 0=0
     
  9. lukeskins
    lukeskins Nouveau WRInaute
    Inscrit:
    25 Février 2009
    Messages:
    5
    J'aime reçus:
    0
    Je viens de trouver la solution ultime pour les redirections :
    Code:
    RewriteEngine on
    
    # Saison 1
    RewriteCond %{QUERY_STRING} ^id=([0-9])$
    RewriteRule ^episode.php$ http://www.monsite.com/saison-1-episode-%1.html? [R=301,L]
    
    # Saison 2
    RewriteCond %{QUERY_STRING} ^id=1([0-9])$
    RewriteRule ^episode.php$ http://www.monsite.com/saison-2-episode-%1.html? [R=301,L]
    
    # Saison 3
    RewriteCond %{QUERY_STRING} ^id=2([0-9])$
    RewriteRule ^episode.php$ http://www.monsite.com/saison-3-episode-%1.html? [R=301,L]
    
    ...
    :D

    Merci à tous :wink:
     
Chargement...
Similar Threads - SQL possibilités where Forum Date
Réunir 2 requetes sql (ORDER BY ASC et DESC) Développement d'un site Web ou d'une appli mobile 29 Août 2021
Mysql : Impact convertion champ numérique SMALLINT vers BIGINT Développement d'un site Web ou d'une appli mobile 23 Août 2021
Récupérer le premier et dernier enregistrement sql Développement d'un site Web ou d'une appli mobile 16 Juillet 2021
Quel SGBDR autre que MySQL/MariaDB ? Administration d'un site Web 12 Janvier 2021
encodage texte sur requete mysql Demandes d'avis et de conseils sur vos sites 21 Octobre 2020
Requête MySql imbriquée Développement d'un site Web ou d'une appli mobile 8 Octobre 2020
Supprimer les doublons d'une table mysql Développement d'un site Web ou d'une appli mobile 16 Juin 2020
Mysql migration utf8->utf8mb4 Développement d'un site Web ou d'une appli mobile 17 Août 2019
recherche lettres dans mysql Développement d'un site Web ou d'une appli mobile 11 Juillet 2019
cache mysql maison Développement d'un site Web ou d'une appli mobile 18 Février 2019
Stocker dans des variables php les fonctions MySql Développement d'un site Web ou d'une appli mobile 2 Février 2019
Prestashop - Comportement bizarre d'une requête SQL e-commerce 1 Décembre 2018
Optimisation d'un champ sql Développement d'un site Web ou d'une appli mobile 17 Novembre 2018
message : [LEGACY][libmysqlclient] Please consider moving to stable and mysqlnd in Administration d'un site Web 8 Novembre 2018
Connexion à un serveur mysql distant Développement d'un site Web ou d'une appli mobile 21 Octobre 2018
Mysql, modifier des chaines avec différents caractères Administration d'un site Web 13 Septembre 2018
Fusionner deux champs sur la même table et même base de donnée Mysql Administration d'un site Web 12 Septembre 2018
Limiter un nombre à une valeur max dans SQL Administration d'un site Web 29 Mars 2018
Requête Mysql avec des string Développement d'un site Web ou d'une appli mobile 6 Février 2018
Surveiller les connexions à la base de données MySQL Développement d'un site Web ou d'une appli mobile 1 Février 2018