Recherche dans une BDD Mysql

Fermé
à l'aide d'un formulaire - 4 nov. 2009 à 09:17
 le père - 4 nov. 2009 à 15:02
Bonjour,
Apres avoir suivit le tutoriel sur le PHP, j’ai voulu attaquer avec un petit exemple et la … pb, je n’avance pas du tout.
Je souhaite charger une page (PHP) qui est dans ma base de données à l’aide d’un formulaire. Ma base est structurer comme ci-dessous :
ID Nom Fonction Page

J’ai créé un formulaire qui permet à l’utilisateur d’insérer le nom de la pièce et je voudrais que cela envoie la page.php qui correspond au nom insérer.
Pour inséré la page dans la base de données j’ai utilisé ‘blob ». Je ne sais pas si cela est la bonne méthode.
Voici mon code ;

<html>
<head>
<title> Moteur recherche</title>
</head>
<body>

<form action="moteurrecherche.php" method="post">
<p>
Nom du local: <input type="text" name="Nom"/><br/>
<input type="submit" value="envoyer"/>
</p>
</form>

<?php
if(isset($_POST['Nom']))// si variable existe
{
mysql_connect('localhost', 'root', ''); // conexion à mysql
mysql_select_db('tests'); // selection de la base coursphp
$reponse=mysql_query('SELECT * FROM moteurrecherche ');
$donnees= mysql_fetch_array($reponse)
if ($_POST['Nom']==$donnees['nom'] )// sivariable dans la table
{
echo $donnees['Page'];

}
}
?>

</body>
</html>

Merci d’avance

1 réponse

Bonjour

Drôle d'idée d'avoir utilisé un blob. Ta page, c'est du texte, tu aurais dû utiliser un champ texte.
Tu nous dit ce que tu voudrais, mais pas ce qui ne va pas. Aucun affichage ? Message d'erreur ? Affichage différent de celui que tu attendais ?
Je suppose que c'est l'absence d'affichage en dessous du formulaire.
En effet, tu fais un SELECT * FROM moteurrecherche sans aucune condition. Donc tu récupères TOUS les enregistrements de ta table dans $reponse
Ensuite tu fais $donnees= mysql_fetch_array($reponse) donc tu récupères la première ligne de réponse dans $donnees.
Puis tu testes si c'est bien cette ligne que tu veux. Si c'est oui, tant mieux, tu affiches ; si c'est non, tu n'affiches rien et ton script est terminé.

Tu aurais pu faire une boucle pour tester toutes les lignes successives.

Mais le plus simple est de demander directement à la base la bonne ligne avec une clause WHERE
$reponse=mysql_query('SELECT * FROM moteurrecherche WHERE Nom="'.mysql_real_escape_string($_POST['Nom']).'"');
Et ensuite if faut tester si tu as vraiment une réponse ou pas avant d'afficher:
if ($donnees= mysql_fetch_array($reponse)) echo $donnees(['Page']);
0