recherche a partir de lien

Eléphant du PHP | 111 Messages

22 oct. 2011, 21:55

Bonsoir a tous,
j'ai un script php qui me permet de faire des recherches à partir de mots clés il fonctionne parfaitement mais je voudrais l'améliorer pour pouvoir effectuer les recherche directement à partir des liens d'un menu.
Voici le code de mon moteur :
<?php
if(isset($_POST['submit']))
{
//On nettoie un peut la requête
$requete = trim(stripcslashes(htmlspecialchars($_POST['requete'])));
 
//On se connecte à la base de données
//include('connexion_bd.php');
 
mysql_connect("localhost","root","");
mysql_select_db("site") or die('Impossible de s&eacute;lectionner une base de donn&eacute;e. Assurez vous d\'avoir correctement remplit les donn&eacute;es du fichier connexion_bd.php.');
 
$query = mysql_query("SELECT id,societe,descriptif,activites FROM adherent WHERE societe 
REGEXP '[[:<:]]".mysql_real_escape_string($requete)."[[:>:]]' OR descriptif 
REGEXP '[[:<:]]".mysql_real_escape_string($requete)."[[:>:]]' OR activites 
REGEXP '[[:<:]]".mysql_real_escape_string($requete)."[[:>:]]' ORDER BY id ASC") 
or die (mysql_error()); 
 
//On utilise la fonction mysql_num_rows pour compter les résultats
$nb_resultats = mysql_num_rows($query); 
//Si le nombre de résultats est différent de 0, on continue
if($nb_resultats != 0) 
{
//On affiche le nombre de résultats 
echo 'Il existe <b>'.$nb_resultats.'</b>'; 
if($nb_resultats > 1) 
// on vérifie le nombre de résultats pour orthographier correctement. 
{ 
echo ' r&eacute;sultats'; 
} 
else 
{ 
echo ' r&eacute;sultat'; 
} 
echo ' pour votre recherche "<b>'.$requete.'</b>" trouv&eacute; :<br/>';
//On attribue un chiffre pour chaque enregistrement trouvé
$i = "1";
//On boucle pour afficher la liste des enregistrements trouvés
while($donnees = mysql_fetch_array($query)) 
{
echo '<div class="cadre"><big><big>'.$i.'-<a title="'.$donnees['societe'].'" href="page.php?id='.$donnees['id'].'">'.$donnees['societe'].'</a></big></big><br/><p>'.$donnees['descriptif'].'</p></div>';
$i++;
}
//on ferme if($nb_resultats > 1)
}
//Si il n'y a rien
else {
echo '<p>Nous n\'avons trouv&eacute; aucun r&eacute;sultats pour votre recherche "<b>
'.$requete.'</b>" !</p>';
}
//On ferme if(isset($_POST['requete'])
}
//On ferme mysql

?>

<h1>Recherches</h1>
<form method="post" action="rech.php">
<p><input size="20" name="requete" value="" type="text"/>
<input value="Rechercher" name="submit" type="submit"/></p>
</form>
</div>
Voilas si vous pouviez me donner quelques explications pour créer çà, ca serais super.
Merci a vous

ViPHP
xTG
ViPHP | 7331 Messages

23 oct. 2011, 08:32

En gros tu ne veux plus passer par un formulaire mais par un lien avec une variable de recherche qui serait statique ?
Il suffit d'exploiter une variable $_GET au lieu de $_POST et de mettre dans ton lien la valeur de recherche. :)

Eléphant du PHP | 111 Messages

23 oct. 2011, 12:52

merci pour ta réponse c'est vrais que j'y avais pas pensé!! :D
Voilas mon nouveau code ca peu etre aider quelqu'un d'autre
<?php
if(isset($_GET['idProfession']))
{
$pro = $_GET['idProfession'];	
//On nettoie un peut la requête
//$requete = trim(stripcslashes(htmlspecialchars($_POST['requete'])));
 
//On se connecte à la base de données
//include('connexion_bd.php');
 
mysql_connect("localhost","root","");
mysql_select_db("site") or die('Impossible de s&eacute;lectionner une base de donn&eacute;e. Assurez vous d\'avoir correctement remplit les donn&eacute;es du fichier connexion_bd.php.');
 
$sql = "SELECT id,societe,adresse,ville FROM adherent WHERE idProfession LIKE '%$pro%'";
$query = mysql_query($sql) or die (mysql_error());
 
//On utilise la fonction mysql_num_rows pour compter les résultats
$nb_resultats = mysql_num_rows($query);
//Si le nombre de résultats est différent de 0, on continue
if($nb_resultats != 0)
{
//On affiche le nombre de résultats
echo 'Il existe <b>'.$nb_resultats.'</b>';
if($nb_resultats > 1)
// on vérifie le nombre de résultats pour orthographier correctement.
{
echo ' r&eacute;sultats';
}
else
{
echo ' r&eacute;sultat';
}
echo ' pour votre recherche "<b>'.$requete.'</b>" trouv&eacute; :<br/>';
//On attribue un chiffre pour chaque enregistrement trouvé
$i = "1";
//On boucle pour afficher la liste des enregistrements trouvés
while($donnees = mysql_fetch_array($query))
{
echo '<div class="cadre"><big><big>'.$i.'-<a title="'.$donnees['societe'].'" href="vitrine.php?id='.$donnees['id'].'">'.$donnees['societe'].'</a></big></big><br/><p>'.$donnees['descriptif'].'</p></div>';
$i++;
}
//on ferme if($nb_resultats > 1)
}
//Si il n'y a rien
else {
echo '<p>Nous n\'avons trouv&eacute; aucun r&eacute;sultats pour votre recherche "<b>
'.$requete.'</b>" !</p>';
}
//On ferme if(isset($_POST['requete'])
}
//On ferme mysql

?>

<a href="rech.php?idProfession=407">Sport</a>

Eléphant du PHP | 111 Messages

25 oct. 2011, 22:22

Alors je voudrais faire evoluer mon script tel qu'il est actuellement quand je clique sur mon lien j'affiche le contenue de ma catégorie. Ce que je voudrais pouvoir afficher le contenue de ma sous catégorie sur ce même script.
Ma table contiens les champs suivant : id, nom, idprofession
idprofession contiens l'id de son parent pour les sous catégorie.

J'ai essayer de mettre un 2eme $_get mais ca ne fonctionne que pouvez vous me conseiller?
merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

26 oct. 2011, 14:23

salut,

tu veux afficher automatiquement les sous catégories en fonction du choix ?

tu peux soit faire une auto jointure (peux propre dans ce cas car tu récupère aussi le nom du père pour chaque enfant.)
exemple :
select pere.id idpere,pere.nom nompere, enfant.id idenfant, enfant.nom nom enfant 
from adherent pere
left join adherent enfant on pere.id = enfant.id_profession;
si j'me suis pas gouré :)

soit simplement une seconde requête avec un where qui spécifie le père.

Après lorsque tu a la sous catégorie tu a forcément le père.

j'espère pas être trop a coté de la plaque, la question étant pas trop claire ;)


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 111 Messages

26 oct. 2011, 17:03

Merci pour ta réponse mais je n'est pas tout compris pour le code :
SELECT pere.id idpere,pere.nom nompere, enfant.id idenfant, enfant.nom nom enfant
FROM adherent pere
LEFT JOIN adherent enfant ON pere.id = enfant.id_profession;
Je dois m'en servir comment de cette requette ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

27 oct. 2011, 16:25

heu t'a compris ce que fait la requête ?

autant commencer par la :)

@+
Il en faut peu pour être heureux ......