neji_44
Messages postés7Date d'inscriptionvendredi 27 mai 2005StatutMembreDernière intervention13 juin 2005
-
27 mai 2005 à 12:12
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 2007
-
28 mai 2005 à 13:56
Bonjour, je suis un petit nouveau en PHP (je m'y
suis mis il y a seulement 3 semaine) et je suis en train de faire un
systeme de recherche pour un site que je suis en train de faire,
malheureusement lorsque je tape un mot existant, la recherche me
renvoie un message me disant qu'aucun film ne correspond dans la base
de données qui, elle, contient ce mot j'en suis sur! Pouvez-vous
m'aider
$sql = \"SELECT acceuil.accueil,
materiel.Description_materiel, pieces.Description_piece FROM acceuil,
materiel, pieces WHERE acceuil.accueil LIKE %\".$sujet.\"% OR
materiel.Description_materiel LIKE %\".$sujet.\"% OR
pieces.Description_piece LIKE %\".$sujet.\"%\";
vince1415
Messages postés88Date d'inscriptiondimanche 19 octobre 2003StatutMembreDernière intervention24 janvier 2006 27 mai 2005 à 13:04
Bonjour,
deja ta requéte n'est pas super il faudrait ke tu fasse les jointures
entre les tables que tu inclu sinon ca renvoie pas forcement ce qu'on
souhaite et c'est un peu génant.
Tu peut également enlever les guillemet et les points pour la concatenation, les variables sont interprété dans le texte.
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 27 mai 2005 à 14:53
Salut,
remplace <? par <?php et if ($_POST['sujet']= ="") par if(!isset($_POST['sujet']) OR empty($_POST['sujet']))
Ensuite je vois ça :
echo '<tr>';
echo '<td>';
echo '</tr>';
echo '<tr>';
echo '<td>'.result.'</td>';
echo '</tr>';
tu peux le remplacer par ça :
echo '<tr></tr>
<tr><td>',$result,'</td>
</tr>';
Ensuite ton mot à rechercher contient des accents ou des mots html ? si
oui sous quel format est-il stocké dans la base de données (ton mot est
encodé en HTML ou est sous forme brute avec les accents ?)
Ensuite vince je vois pas en quoi mettre une jointure dans la requête va te donner plus de résultats...
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 28 mai 2005 à 11:14
Hello,
une jointure, pourquoi faire en effet...? Il recherche juste un mot dans 3 tables differentes, on se fiche des jointures.
Tu fais un htmlentities et un addslashes sur ta variable post : bref,
tu y ajoutes des \ et tu transformes les entites en leur code. Est-ce
que tes textes sont enregistres ainsi dans ta base ?
mysql_real_escape-string() est a privilegier dans des cas d'insertions dans une base mysql, au passage.
Et, cela m'etonne qu'Antho n'en ai pas parle, mais les index FULLTEXT de mysql sont plus adaptes a des recherches.
Vous n’avez pas trouvé la réponse que vous recherchez ?
vince1415
Messages postés88Date d'inscriptiondimanche 19 octobre 2003StatutMembreDernière intervention24 janvier 2006 28 mai 2005 à 13:37
Bein la jointure permet de ne pas récupérer des résultats qui n'ont
aucun rapport, il fait une requéte sur 3 tables et affiche un attribut
de chaque table. Si il n'y a pas de jointure le SGBD fait tous les
assemblages possibles ce qui risque de ramener des informations entre
les 3 tables qui n'on aucun rapport.
enfin bon si vous dites que ca sert a rien tant mieux moi je pense
autre choses. Je dois dire que je conné mal mysql j'ai l'habitude de
travailler sous oracle bien plus puissant !!
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 28 mai 2005 à 13:56
" Et, cela m'etonne qu'Antho n'en ai pas parle, mais les index FULLTEXT de mysql sont plus adaptes a des recherches."
A force de le dire, on oublie... (lol)
Bah les indexs FULLTEXT sont meilleurs si ta table contient beaucoup
d'enregistrements (ils permettent aussi une meilleure précision que les
LIKE pourris). Le problème des indexs FULLTEXT est qu'ils prennent
énormément de place dans la base.