Problème syntaxe requete sql couplée avec php.

anthony428 Messages postés 102 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 29 mai 2012 - 26 août 2009 à 11:54
anthony428 Messages postés 102 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 29 mai 2012 - 26 août 2009 à 18:50
Salut,
j'essai d'adapter un script qui me permet de rechercher dans ma base de données en fonction des mots clés tapés dans un moteur de recherche.
Le problème est que je voudrais ajouter une condition à ma requete sql et que je n'y arrive pas.

Voici la fonction :
Code PHP :


function requete($table, $champs, $select, $order, $sens, $limit_start, $limit_nb, $count = '')

{

// option de recherche

$option = $_POST['option'];

// texte de recherche

$search = $_POST['search'];



// si c'est le premier appel de la fonction

if(!isset($fonction_requete))

{

static $fonction_requete = 1;



// si "Rechercher tous les mots" ou "Rechercher un de ces mots"

if($option 'all' || $option 'one')

{

// liste des mots

$mots = explode(' ', $search);



// spararateur

if($option == 'all')

$sep = ' AND ';

else

$sep = ' OR ';

} // if($option 'all' || $option 'one')

// "Rechercher l'expression exacte"

else

{

$mots = $search;

$sep = '';

}

} // if(!isset($fonction_requete))



if(!is_array($champs))

$champs = array($champs);



if($option 'all' || $option 'one')

{

// pour savoir si on en est la premire itration ou non

$i = 0;



// pour tous les mots

foreach($mots as $mot)

{

if(!$i)

{

$search = '~#^!|!^#~ LIKE \'%' . $mot . '%\'';

$i = 1;

}

else

$search .= $sep . '~#^!|!^#~ LIKE \'%' . $mot . '%\'';

} // foreach($mots as $mot)

} // if($option 'all' || $option 'one')

else if($option == 'sentence')

$search = '~#^!|!^#~ LIKE \'%' . $mots . '%\'';



$i = 0;



// dbut de requte

if(empty($count))

$req_search = 'SELECT ' . $select . ' FROM ' . $table . ' WHERE ' ;

else

$req_search = 'SELECT count(' . $count . ') FROM ' . $table . ' WHERE ' ;



// ajout des champs

foreach($champs as $champ)

{

if(!$i)

{

$req_search .= '( ' . str_replace('~#^!|!^#~', $champ, $search) .' ) ';

$i = 1;

}

else

$req_search .= 'OR ( ' . str_replace('~#^!|!^#~', $champ, $search) .' ) ';

}



if(empty($count))

{

$req_search .= "ORDER BY $order $sens LIMIT $limit_start, $limit_nb";



return $req_search;



} }



Je ne comprends pas comment adapter ma requête.
Je voudrais que ma requête affiche le même résultat mais seulement si le champ auteur = $login
En théorie, je devrais donc rajouter à la fin de ma requete :

WHERE auteur = '$login';

Cette syntaxe SQL fonctionne en direct sur ma base mais pas lorsque j'essai de l'adapter dans mon code.

J'ai essayé de l'adapter ici mais cela ne fonctionne pas :
Code PHP :



$req_search 'SELECT ' . $select . ' FROM ' . $table . ' WHERE auteur '$login'' ;



Est ce que quelqu'un pourrait m'aider à y voir plus clair ?
Merci d'avance.

1 réponse

anthony428 Messages postés 102 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 29 mai 2012
26 août 2009 à 18:50
0
Rejoignez-nous