8797 sujets

Développement web côté serveur, CMS

Bonjour à toute et à tous

je suis en train de faire un moteur de recherche interne a mon site la base de donné est créer et la barre de recherche aussi.

Dans ma barre de recherche j'ai :
<form method="post" action="recherche.php">
  <table width="159" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr> 
      <td width="67"> <div align="center"> 
          <input name="recherche" type="text" size="20">
        </div></td>
      <td width="30"></td>
      <td width="68"><input type="submit" name="Submit" value="Chercher"> </td>
    </tr>
  </table>
  </form>


Dans mon fichier recherche.php j'ai :
<?php
$host = 'localhost'; // entrer vôtre hôte
$login = 'root'; // entrer vôtre login
$pass = ''; // entrer le mot de passe de la base 
$base = 'test'; // entrer le nom de vôtre base
$table= 'recherche'; // entrer le nom de vôtre table

if ($_POST['recherche'] == "" )
   	{
		//on redirige le visiteur sur la page de recherche
		header('location: index.php?msg=Veuillez+indiquer+le+mot+recherché+!');

   	}else{

//on se connecte à la base de donnée
$db = mysql_connect($host,$login,$pass) or die ("erreur de connexion"); 

//selection de vôtre base de donnée
mysql_select_db($base,$db) or die ("erreur de connexion base"); 

//requète de recherche
$req = mysql_query("SELECT url, titre FROM $table WHERE mots_cles LIKE '%".$_POST['recherche']."%' Order by url Asc "); 

//on compte les resultats
$resultat= mysql_numrows($req); 

if(empty($resultat)){

echo'<div align = "center"><font color="#FF0000" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Désolé mais aucun resultat ne correspond à votre demande</strong></font><br><br></div>';
}
 else{

  //on affiche le nombre de resultats
echo'<table width="90%" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr bgcolor="#18447F"> 
    <td colspan="4"> 
<div align="center"><font color="#FFFFFF">Pour le mot </font><em><font color="#FFFFFF" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>'.$_POST['recherche'].'</strong></font></em> 
       <font color="#FFFFFF"> il y\'a : </font><font color="#FFFFFF" size="2" face="Verdana, Arial, Helvetica, sans-serif"><em><strong>';
	   if($resultat <=1)
echo''.$resultat.' resultat';
elseif($resultat >1)
echo''.$resultat.' resultats';
echo'</strong></em> 
      </font></div></td>
  </tr>
  <tr> 
   
  </tr><table/>';
//on ressort les infos par ordres alphabétiques
while( $result = mysql_fetch_array($req))
{
echo'<table width="90%" border="0" align="center" cellpadding="0" cellspacing="0">
  
  <tr> 
    <td height="3"></td>
    <td></td>
    <td></td>
  </tr>
  <tr> 
    <td ><b>Liens vers la page :</b></td>
    <td><a href="'.$result[url].'">'.$result[url].'</a></td>
  </tr>
  <tr> 
    <td height="3"></td>
    <td></td>
    <td></td>
  </tr><hr>';

}
echo'</table><br>';
}

//on ferme la connexion
mysql_close();
}

?> 


j'ai créer une entré en mot test et url test.php

quand je fait une recherche avec un mot quelquonque, tous fonctionne il me dit qu'il a rien trouver. Si par contre je fait la recherche sur test, il ma trouve bien un mot avec l'adresse pour y allez mais par contre j'ai en plus : Notice: Use of undefined constant url - assumed 'url' in recherche.php on line 61
A la ligne 61 j'ai :
<td><a href="'.$result[url].'">'.$result[url].'</a></td>


Cela viend du code ? ou de la façon que je l'ai ecrit url dans la base de donnée sachant que dans url j'ai juste ecrit test.php vu que je suis en local.

Merci a ceux qui pourai m'éclaircir

Amicalement
Bonjour Vincent_nk

Merci d'avoir répondu éffectivement cela fonctionne en transformant url en 0.

Par contre j'aurai une dernière question est t'il possible que la page rechercher s'affiche directement si il a trouver 1 seule page.

Exemple : Mot rechercher = test = 1 réponce trouver.

si il y a 1 seul réponce ouvre directement le liens sous test.php et non la pare recherche.

amicalement
Oui c'est possible je pense...

Tu peux utiliser ta variable resultat si elle vaut 1 , tu lis directement $result = mysql_fetch_array($req) sans faire de boucle et tu rediriges.

Bon Courage,
Vincent_nk
Bonsoir

Je suis pas trop un pro en programation je débute seulement en mysql j'ai fait plusieur essais a entré la commmande
$result = mysql_fetch_array($req)
pour lire directement la page si il y a 1 seul réponce mais je suis tombé que sur des erreurs. je doit le mettre ou se code ?

Amicalement
Modifié par squall049 (26 Oct 2011 - 22:32)