Moteur de recherche en 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 en PHP

Re: Moteur de recherche en PHP

par Sabrina tech » 03 janv. 2011, 16:35

HELLOOO,

J'ai réussi à faire ma recherche dans mes 3 tables =D>

Mais j'arrive pas à terminer mon code pour faire ma recherche selon le champs saisi, c à d en saisissant le titre, l'auteur ou un mots clés ou les 3 au mêmes temps (dans les champs nécessaires) #-o

j'attends vos réponses Si quel qu'un à une idée
MERCIIIIIIIIIIIIIIIIIIII :priere:

Re: Moteur de recherche en PHP

par Sabrina tech » 03 janv. 2011, 16:07

Merci bien ca marche, l'erreur était == au lieu de = à la deuxième if
Donc le résultat m'affiche un message d'erreur si la base est fausse.
CA C'EST BON :) Mais c'est pas mon but :(
Mon bute est de faire la recherche dans la table sélectionné (catégorie = "Nom de la table")

Avez vous une idée s'il vous plait pour continuer mon script ???

J'attends vos idées
Merci d'avance

Re: Moteur de recherche en PHP

par telnes » 03 janv. 2011, 15:41

hello

en regardant rapidement

le deuxième if est pas bon = au lieu de ==

ensuite les paramètres passé à la requète ne sont pas filtré cf mysql_real_escape_string()

corrige déjà ca :)

http://fr2.php.net/manual/fr/function.m ... string.php

++

Moteur de recherche en PHP

par Sabrina tech » 03 janv. 2011, 11:47

Bjr, J'ai un programme de bibliothéque et j'essaye de faire un moteur de recherche pour afficher les titres de livres selon des mots saisis.
J'ai essayé par un script dont je vais vous monter ci dessous mais j'ai pas arriver à un résultat complet :
Voila mon script :


<?php
 
$host="localhost";
$login="root";
$pass="";
$bd="biblio";
$cat=$_POST['categorie'];

if (isset($_POST['titre']) and  isset($_POST['auteur']))
{
  $titre=$_POST['titre'];
  $auteur=$_POST['auteur'];
  $motscles=$_POST['motscles'];

  //Connexion à la base de donnée
  $link= mysql_connect($host,$login,$pass) or exit(mysql_error());
  $datab = mysql_select_db($bd, $link) or exit(mysql_error());
  

if ($cat = 'livre') 
{
 if   (($titre == "")&&($auteur == "")&&($motscles == "")) 
   {
       // Si aucun mot clé n'a été saisi,le script demande à l'utilisateur de bien vouloir préciser un mot clé
?>
	 
	 <script language="javascript"> 
        alert('Veuillez entrez un mot clé si vous voulez');
     </script>  
<?php 
   }

else 
   {
       // On selectionne les enregistrements contenant le mot clé dans les Titre ou l'auteur
	    $query = "SELECT distinct count(Titre) FROM livres
	     WHERE (titre LIKE \"%$titre%\") OR (titre LIKE \"$titre%\") OR (titre LIKE \"%$titre\")";
	 

	 $result = mysql_query($query);

     $row = mysql_fetch_row($result);

	 $Nombre = $row[0];

    
	// Si aucun enregistrement n'est retourné, on affiche un message adéquat
    
	if ($Nombre == "0") 
	{
?>
	 
	 <script language="javascript"> 
        alert('Aucun résultat ne correspond à votre recherche');
     </script>  
<?php 

    }

   // Sinon, on affiche le nombre d'enregistrements correspondant et les résultats eux-mêmes
    else 
    {
	   $query = "SELECT distinct Cote,Auteur,Titre FROM livres
	    WHERE (titre LIKE \"%$titre%\")  or (titre LIKE \"$titre%\")  or (titre LIKE \"%$titre\" ) 
	    ORDER by titre ASC";

	   $result = mysql_query($query);

	   // Si un seul enregistrement est trouvé, on affiche un message au singulier
	   if ($Nombre == "1") 
	   {
?>
		<div class="header_01">
      	 <P>  <?php  echo "  <a name=\"#resultat\"><h2><p> &nbsp; </p>&nbsp; <p>Un résultat trouvé</P></h2></a>	<p>"; ?> </P>
        </div>

<?php 
	    }
	
	    // Dans le cas contraire le message est au pluriel...
       else 
	   {
?>
		<div class="header_01">
		      <p>  <?php  echo "   <a name=\"#resultat\"><h2>Résultat: $Nombre résultats trouvés</h2></a>	<p>"; ?>  </p>
		</div>
              
			  <p>
<?php 
	   }

while($row = mysql_fetch_row($result))
	{
		echo "	<p>\n
		         <p align = justify><ul> <li><b>$row[2]</b></li></ul></p>   <p>&nbsp;</p>   \n
		         <p>\n
             ";
	}
}
}
}
}
else {echo "la table n est pas livre"; }

?>


Quand je saisi un mot dans la zone du titre, ca marche c à dire elle m'affiche le résultat, mais mon problème consiste à :
1. j'ai fais un teste pour la catégorie mais ca ne marche pas :( c à d mon résultat s'affiche pour n'importe quel catégorie (livres, diplômes ou articles)
2. je veux aussi ajouter un test pour saisir un auteur et des mots clés

MONT BUT est :
faire la recherche selon ces critères : voir ce formulaire pour mieux comprendre :
<form method="post" action="recherche.php">
		<p>
                Titre 		<input type="text" name="titre" maxlength="200" size="50" />
                
                 <select name="categorie"> 
                                       <option value="livre">Livre</option>
                                        <option value="article">Article</option>
                                       <option value="diplome">Diplome</option>
                   </select>
					
		Auteur       <input type="text" name="auteur" maxlength="200" size="50" />
					
		Mots Clés  <input type="text" name="motscles" size="50" />
			     
			        <input type="submit" value="rechercher" name="rechercher" />
		 </p>
        	</p>
</form>
Veuillez m'aider s'il vous plait à résoudre mon problème
J'attends vos réponses
Merci