Syntaxe requete

Fermé
ladj59 Messages postés 322 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 29 décembre 2008 - 26 mai 2008 à 09:52
macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 - 26 mai 2008 à 10:08
Bonjour,
mon probléme est qu'avec le code suivant, quand je selectionne mon sujet puis que je tape plusieurs auteur cela ne devrait me sortir que l'article dont le sujet est celui que j'ai tapé et qui a été écrit par les auteurs que j'ai mis.
Or cela le fait mais cela me sort aussi les articles dont au moins un auteur correspond à ceux tapés avec un sujet différent de celui tapé.

ou est l'erreur??
merci



Code : PHP
$sql=mysql_query("SELECT DISTINCT sujet FROM base_physique ORDER BY sujet") or die(mysql_error());


while ($ajout = mysql_fetch_array($sql))
{

$laRequete = "SELECT * FROM base_physique WHERE sujet LIKE '%'";

$mots3 = explode(" ", $_POST['auteur']);
$mots4 = explode(",", $_SESSION['subject']);



if( isset( $_SESSION['subject'] ) && $_SESSION['subject'] != "" )
for($rangSujet = 0 ; $rangSujet < sizeof($mots4) ; $rangSujet++)
{
if($rangSujet > 0)
$laRequete .= " OR ";
$laRequete .= " AND sujet LIKE '%" . $mots4[ $rangSujet ] . "%'";
}
}



if( isset( $_POST['auteur'] ) && $_POST['auteur'] != "")
{

for( $rangAuteur = 0 ; $rangAuteur< sizeof($mots3) ; $rangAuteur++ )
{
if ( $rangAuteur > 0)
{
$laRequete .= " OR";
}
else
{
$laRequete .= " AND";
}
$laRequete .= " auteur LIKE '%" . $mots3[ $rangAuteur ] . "%'";
}
}

1 réponse

macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89
26 mai 2008 à 10:08
Bonjour.

Quelques petits trucs :

1. Tu devrais faire un echo de ta requête, histoire de voir ce qu'elle donne (juste pour les tests ;-) )... Ca nous permettrait de mieux voir la requête que tu exécutes...
2.
if($rangSujet > 0)
$laRequete .= " OR ";
$laRequete .= " AND sujet LIKE '%" . $mots4[ $rangSujet ] . "%'"; 

Si je ne me trompe pas, tu te retrouves avec un OR AND, et ce n'est pas bon...
0