Moteur de recherche simple en PHP

Résolu/Fermé
LOLO - 30 mai 2011 à 14:49
 Lolo - 6 juin 2011 à 14:24
Bonjour,

J'apprends tout doucement en autodidacte le langage de programmation PHP et MySql.

Je suis entrain de tenter la mise en place d'un site internet type Album photos.

Je souhaiterais mettre en place un moteur de recherche simple. Il fonctionnerait de la façon suivante : Taper votre recherche dans un formulaire

<p> Rechercher une photo </p>
<form method="post" action="rechercher.php"/>
<input type="text" name="photos"/>
<input type="submit" value="Ok"/>



vous êtes redirigés vers une page nommée rechercher.php qui a pour but de présenter la sélection.

J'ai créé la bdd 'album_photos', table 'cliches'.

Mon problème est : je ne sais pas comment récupérer ma recherche $_POST['photos'] et faire le lien avec la base de données pour qu'il affiche la recherche.

Mon code :

<?php
try
{
// On se connecte à MySQL
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=album_photos', 'root', '', $pdo_options);


$req = $bdd->prepare('SELECT * FROM cliches WHERE nom = ? OR categorie = ? OR prix = ?');
$req->execute(array($_POST['nom'], $_POST['categorie'], $_POST['prix']));

// On affiche chaque entrée une à une
while ($donnees = $req->fetch())
{
?>
<p>

</p>
<?php
}

$req->closeCursor(); // Termine le traitement de la requête

}
catch(Exception $e)
{
// En cas d'erreur précédemment, on affiche un message et on arrête tout
die('Erreur : '.$e->getMessage());
}
?>

Merci pour votre aide...

2 réponses

Utilisateur anonyme
30 mai 2011 à 15:18
Bonjour,

Je ne vois pas trop le lien entre votre formulaire qui ne contient qu'un champ de recherche 'photos' et les données que vous voulez récupérer à savoir $_POST['nom'], $_POST['categorie'], $_POST['prix']
Il faudrait que ces champs là existent dans le formulaire, à la place de
<input type="text" name="photos"/>
mettre trois champs

<input type="text" name="nom"/>
<input type="text" name="categories"/> ou un <select name="categories"></select>
<input type="text" name="prix"/>
0
Merci beaucoup !
Ca semble avoir résolu une partie de mon problème.
J'en ai un autre ;-) :

Qu'en je tente d'ouvrir la page rechercher.php sur mon serveur il indique :


Notice: Undefined index: categorie in C:\wamp\www\album_photos\rechercher.php on line 19
Notice: Undefined index: nom in C:\wamp\www\album_photos\rechercher.php on line 19
Notice: Undefined index: prix in C:\wamp\www\album_photos\rechercher.php on line 19

Pour tant les champs existent dans la bdd ???

Merci pour votre aide encore une fois...
0
Utilisateur anonyme
30 mai 2011 à 15:27
montrez moi la ligne 19 on y verra plus clair 8-)
0
Utilisateur anonyme
30 mai 2011 à 15:28
Ce n'est pas celle-ci ?
$req->execute(array($_POST['nom'], $_POST['categorie'], $_POST['prix']));
0
tout à fait !!!
0
Utilisateur anonyme
30 mai 2011 à 15:41
Ca veut dire que vous n'avez rien posté avec votre formulaire tout simplement.

Vous avez bien une première page du genre index.html qui appelle ensuite une autre page, rechercher.php
<p> Rechercher une photo </p>
<form method="post" action="rechercher.php"/>
<input type="text" name="nom"/>
<input type="text" name="categories"/> o
<input type="text" name="prix"/> 
<input type="submit" value="Ok"/> 
</form>


Vous avez bien fermé le form ?
0
Utilisateur anonyme
5 juin 2011 à 16:19
Bonjour,

S'il n'y a que des ... c'est que votre image n'est pas bonne, du moins le chemin d'accès aux images.
Ceci dit vu le code que j'ai écrit ce n'est pas étonnant... désolé.
Il faut mettre le chemin web, pas le chemin disque de votre machine.

Donc probablement ceci :
echo '<img src="album_photos'.$donnees['chemin'].'" alt="..."/>';
0