SQL : Plusieurs possibilités pour where

Nouveau WRInaute
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
 
WRInaute accro
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 ;
 
Nouveau WRInaute
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
 
Nouveau WRInaute
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... :(
 
WRInaute passionné
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.
 
WRInaute passionné
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
 
Nouveau WRInaute
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:
 
Discussions similaires
Haut