Aide pour optimiser l'écriture d'une requete PHP/MYSQL

  • Auteur de la discussion Auteur de la discussion the386mmx
  • Date de début Date de début
Nouveau WRInaute
Bonjour,

je débute en programmation php & mySQL, et j'aurai besoin de conseils...

Ma base est constituée de champs titres, description, date (etc.) et je souhaite pouvoir faire une recherche sur titre / description et par chronologie (anMin et anMax).

Les données sont saisies par un formulaire qui renvoie les variables à Recherche.php

Ma requête est la suivante :
$resultat = mysql_query ("SELECT * FROM refs_tbl WHERE titre LIKE '%$titre%'"
. " AND description LIKE '%$description%'"
." AND date BETWEEN '$anMin' AND '$anMax'"
, $connexion);

L'affichage des résultats se fait par :
while ($docs=mysql_fetch_object ($resultat))
{
echo '<tr>';
print $titre=$docs->titre;
[...]

Les défauts sont multiples :
- ça fonctionne mais pas si j'utilise deux mots dans le formulaire ;
exemple : je cherche chateau seul OK ; sable seul OK ; chateau de sable NON :-(
- On m'a déconseillé le SELECT * (ça Ok je peux changer facilement en mettant les champs qui m'interressent)
- On m'a dit que c'est 'dangereux' à cause des risques d'injection de codes malveillants -> dans ce cas, puis-je traiter les chaines saisies dans le formulaire avant l'execution de la requete ?
- Ce qui est le plus difficile pour moi, on m'a conseillé d'utiliser la recherche avec MATCH et AGAINST ; mais je n'ai pas réussi à faire quelquechose de fonctionnel :-(

Pourriez-vous me donner un exemple pour :
Je cherche dans la $table, dans les champs description et titre, ce qui ressemble à $saisie ? et affichage de résultat ?

Un grand merci d'avance à tous.

Nico.
 
WRInaute passionné
the386mmx a dit:
- On m'a dit que c'est 'dangereux' à cause des risques d'injection de codes malveillants -> dans ce cas, puis-je traiter les chaines saisies dans le formulaire avant l'execution de la requete ?
Utilise la fonction PHP mysql_real_escape_string() qui est faite justement pour éviter ces codes injectés.

Pour match() against(), fais une recherche sur les clefs FULLTEXT, on en a même parlé récemment sur WRI.
 
Discussions similaires
Haut