moteur de recherche php

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : moteur de recherche php

Re: moteur de recherche php

par highwog78 » 21 févr. 2012, 12:59

merci beaucoup je vais tester tout de suite :) !!

Re: moteur de recherche php

par Thibaud C » 21 févr. 2012, 12:56

Admettons que l'utilisateur recherche "rose vert"
dans ton script tu récupères ta variable $_POST['titre']
la tu fais un
explode()
de ta variable avec comme délimiter " " ( l'espace )
Ceci va te donner un tableau formé de la manière suivante :

array(0=>rose,
1=>vert)

Maintenant tu entame ta requete
$mareq="select * from matable where";

la tu foreach le tableau contenant les recherches
foreach( $tab as $key=>$value)
et tu ajoutes a chaque boucle
$mareq.=" OR champs like '%$value%'"; ( tu vérifie si la clé ( $key ) est à 0, il ne faut pas mettre le OR

une fois sorti de ta boucle tu execute ta requète avec un query, car dans ce cas la le prepare n'est pas conseiller ;).
En espérant avoir été clair !

Re: moteur de recherche php

par highwog78 » 21 févr. 2012, 12:48

merci pour ta réponse :) ça fume dans le bureau j'ai pas tout compris :)

Re: moteur de recherche php

par Thibaud C » 21 févr. 2012, 12:44

Hello,
tu devrais explode ta variable que tu reçois ( la recherche de l'utilisateur ) à l'espace, et sur chaque mot tu fais titre like {mot1} OR titre like {mot2} OR titre like {mot3} etc..
Bien-sur étant donné que tu ne connais pas le nombre de mot à l'avance il va falloir faire un foreach sur le tableau crée par l'explode :)

moteur de recherche php

par highwog78 » 21 févr. 2012, 12:41

Bonjour,

Je tente de créer un moteur de recherche. J'ai crée une base de données contenant une table avec le nom d'un fichier son type, son contenu, sa date de création ...

Lorsqu'un utilisateur entre une chaîne dans la zone de recherche ma requête sql marche. Par contre je n'arrive pas a faire en sorte que cela marche si l'utilisateur entre plusieurs mot clés . Cela pose problème si le fichier est nommé avec des espaces (ex: fichier de configuration)

Voici mon code:

<?php
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=ibsi_ged', 'root', '', $pdo_options);

$req = $bdd->prepare('SELECT DISTINCT * FROM t_fiches WHERE titre LIKE ?');
$req->execute(array($_POST['titre'].'%'));

//? OR fileContent LIKE ?
//, $_POST['titre'].'%'


echo '<ul>';
while ($donnees = $req->fetch())
{
echo 'titre du fichier: <li>' . $donnees['titre'] . 'contenu:' . $donnees['fileContent'] . ' </li>';
}
echo '</ul>';

$req->closeCursor();
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}

Pouvez vous m'aider ?
Merci beaucoup