SQL : Plusieurs possibilités pour where

lukeskins
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 5
Inscription: 25 Fév 2009

SQL : Plusieurs possibilités pour where

Message le Mer Fév 25, 2009 1:15

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: Tout sélectionner
$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: Tout sélectionner
$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: Tout sélectionner
$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
Dernière édition par lukeskins le Mer Fév 25, 2009 3:22, édité 1 fois.


Marie-Aude
Modérateur
Modérateur
 
Messages: 11901
Inscription: 5 Juin 2006

Re: SQL : Plusieurs possibilités pour where

Message le Mer Fév 25, 2009 2:56

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 ;

lukeskins
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 5
Inscription: 25 Fév 2009

Re: SQL : Plusieurs possibilités pour where

Message le Mer Fév 25, 2009 3:21

Je viens de trouver la solution, le résultat c'est :
Code: Tout sélectionner
$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


Marie-Aude
Modérateur
Modérateur
 
Messages: 11901
Inscription: 5 Juin 2006

Re: SQL : Plusieurs possibilités pour where

Message le Mer Fév 25, 2009 3:41

Il faut faire une redirection

Ou utiliser le nouveau link rel="canonical"

lukeskins
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 5
Inscription: 25 Fév 2009

Re: SQL : Plusieurs possibilités pour where

Message le Mer Fév 25, 2009 5:59

Dans mon .htaccess, j'ai fais

Code: Tout sélectionner
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... :(


aladdin
WRInaute passionné
WRInaute passionné
 
Messages: 1457
Inscription: 29 Avr 2005

Re: SQL : Plusieurs possibilités pour where

Message le Mer Fév 25, 2009 10:32

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.

lukeskins
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 5
Inscription: 25 Fév 2009

Re: SQL : Plusieurs possibilités pour where

Message le Mer Fév 25, 2009 10:56

Vu que ça fonctionne, j'ai pas de problème d'injection. Si ?


aladdin
WRInaute passionné
WRInaute passionné
 
Messages: 1457
Inscription: 29 Avr 2005

Re: SQL : Plusieurs possibilités pour where

Message le Mer Fév 25, 2009 12:39

pour tester c'est simple

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

Code: Tout sélectionner
mondomaine.com/episode.php?saison=1&episode=1 OR 0=0

lukeskins
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 5
Inscription: 25 Fév 2009

Re: SQL : Plusieurs possibilités pour where

Message le Mer Fév 25, 2009 12:45

Je viens de trouver la solution ultime pour les redirections :
Code: Tout sélectionner
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:


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité