Aide sur PHP

Fermé
another_men - 10 nov. 2001 à 13:24
 another_men - 10 nov. 2001 à 21:54
Hello tout le monde,

Je cherche un script PHP pour afficher un renseignement a partir d'un bouton recherche par exemple. Je m'explique : j'ai une table (sous mysql) avec les champs nom, adresse et telephone. J'ai un champ sur ma page web dans le quel j'ecris un nom quelconque. Je cherche un script qui me permette en cliquant sur un bouton pour valider ma recherche d'afficher uiquement les renseignements concernant ce nom et si celui-ci ne figure pas dans la table, un message ("il n'y a aucune réponse correpondant a la recherche"). Un grand merci a la personne qui me depannera car je galere depuis plusieurs jours sur ce script.
A voir également:

2 réponses

Slt Another_men,

Un petit pb avec Php et MySql ?


Je considère que ma base MySql est locale :
hostname : localhost
username : ""
password : ""


Rappel syntaxe de mysql_connect() :

mysql_connect(string hostname:port, string username, string password)


nom de la base de données : essai
nom de la table : personne
nom des champs dans cette table :
- nom
- adresse
- telephone




Well, well, well ... [:)

Let's go !


D'abord l'interface avec la base MySql et la récupération des données :


<?php
// 1) Connexion au serveur MySql
$link=mysql_connect("localhost","","") or die("Impossible de se connecter au serveur MySql");

// 2) Connexion à la base de données
mysql_select_db("essai",$link) or die("Impossible d'ouvrir la base de données !");

// 3) Requête SQL pour retrouver les infos
$result=mysql_query("SELECT *
FROM personne
WHERE nom='$nom'",$link) or die ("Oops ! La requête a échouée !");

// 4) Lecture des résultats et génération du code HTML
// On compte le nbr de lignes retournées par la requête SQL
// (je suppose qu'il n'y a qu'une ligne sinon faut faire une bcl ...)
if (mysql_num_rows($result))
{
// On lit la 1ère ligne retournée par la requête SQL
$row=mysql_fetch_object($result);

// On génère du code HTML pour afficher les informations
echo "<p>Nom = ".$row->nom."<br>\n";
echo "Adresse = ".$row->adresse."<br>\n";
echo "Téléphone = ".$row->telephone."</p>\n";

}
else
{
// On prépare un message d'erreur en HTML

echo "<p>Désolé, aucune information trouvée pour le nom ".$nom." !</p>\n";
}
?>

Ok maintenant qu'on sait lire la base, récupérer les informations voulues et les traduires en code HTML, il ne reste plus qu'à intégrer le tout dans une page .PHP3

Je vais également expliquer la présence de la mystérieuse variable $nom !


Cas avec 2 pages : 1 pour le formulaire et 1 autre pour le résultat

Je nomme test.htm ma page de formulaire et recherche.php3 ma page qui affiche le résultat.

D'abord au niveau du formulaire j'indique la page que je souhaite appeler lorsque le formulaire va être envoyé :
c'est cette page qui va recevoir les données saisies dans mon formulaire, donc recherche.php3

J'indique "POST" comme méthode d'envoi du formulaire

Ensuite dans le formulaire je déclare un champ de type "text" (un champ de saisie) que je nomme "nom" grâce au code name=nom
C'est très important !!!!
En effet PHP va automatiquement récupérer les valeurs de chaque champ définit dans le formulaire et stocker
leur contenu dans une variable portant le même nom.
Ainsi la valeur du champ nommé "nom" se retrouvera automatiquement dans la variable php "$nom" !
C'est bien évidemment dans ma page recherche.php3 que je vais récupérer et utiliser cette variable !



Voici le code pour test.htm :

<html>
<head>
</head>
<body>
<p>Pour tester entrez un nom svp ...</p>
<form method="POST" action="recherche.php3">
Nom <input type=text value="" size=30 name=nom>
<input type="submit" value="Ok">
</form>
</body>
</html>


Et le code de la page recherche.php3


<html>
<head>
</head>
<body>

<?php
// 1) Connexion au serveur MySql
$link=mysql_connect("localhost","","") or die("Impossible de se connecter au serveur MySql");

// 2) Connexion à la base de données
mysql_select_db("personne",$link) or die("Impossible d'ouvrir la base de données !");

// 3) Requête SQL pour retrouver les infos
$result=mysql_query("SELECT *
FROM personne
WHERE nom='$nom'",$link) or die ("Oops ! La requête a échouée !");

// 4) Lecture des résultats et génération du code HTML
// On compte le nbr de lignes retournées par la requête SQL
// (je suppose qu'il n'y a qu'une ligne sinon faut faire une bcl ...)
if (mysql_num_rows($result))
{
// On lit la 1ère ligne retournée par la requête SQL
$row=mysql_fetch_object($result);

// On génère du code HTML pour afficher les informations
echo "<p>Nom = ".$row->nom."<br>\n";
echo "Adresse = ".$row->adresse."<br>\n";
echo "Téléphone = ".$row->telephone."</p>\n";

}
else
{
// On prépare un message d'erreur en HTML

echo "<p>Désolé, aucune information trouvée pour le nom ".$nom." !</p>\n";
}
?>


</body>
</html>







Cas avec 1 seule page pour le formulaire et le résultat :


Dans ce cas j'ai toujours mon formulaire sauf que la page que j'appelle et bien ... c'est elle-même !

Je n'ai plus la page test.htm mais seulement recherche.php3

Et voici le code de la page recherche.php 3:


<html>
<head>
</head>
<body>
<body>
<p>Pour tester entrez un nom svp ...</p>
<form method="POST" action="recherche.php3">
Nom <input type=text value="" size=30 name=nom>
<input type="submit" value="Ok">
</form>


<?php

if (isset($nom))
{

// 1) Connexion au serveur MySql
$link=mysql_connect("localhost","","") or die("Impossible de se connecter au serveur MySql");

// 2) Connexion à la base de données
mysql_select_db("personne",$link) or die("Impossible d'ouvrir la base de données !");

// 3) Requête SQL pour retrouver les infos
$result=mysql_query("SELECT *
FROM personne
WHERE nom='$nom'",$link) or die ("Oops ! La requête a échouée !");

// 4) Lecture des résultats et génération du code HTML
// On compte le nbr de lignes retournées par la requête SQL
// (je suppose qu'il n'y a qu'une ligne sinon faut faire une bcl ...)
if (mysql_num_rows($result))
{
// On lit la 1ère ligne retournée par la requête SQL
$row=mysql_fetch_object($result);

// On génère du code HTML pour afficher les informations
echo "<p>Nom = ".$row->nom."<br>\n";
echo "Adresse = ".$row->adresse."<br>\n";
echo "Téléphone = ".$row->telephone."</p>\n";

}
else
{
// On prépare un message d'erreur en HTML

echo "<p>Désolé, aucune information trouvée pour le nom ".$nom." !</p>\n";
}

}
?>


</body>
</html>


Remarque : j'ai inclus tous le code php à l'intérieur du test :

if (isset($nom))
{
... // Code php

}


En effet l'instruction isset() renvoie true si la variable testée est définie sinon false.
La 1ère fois qu'on charge la page, la variable $nom n'est pas encore définie donc je ne
fais rien.
Ca évite une lecture inutile dans la base MySql et surtout l'affichage du message "Désolé, aucune ...".



ET voilà :)

J'ai été un peu long mais bon ...
J'ai pas testé du tout alors il y a peut être des bugs [:(



@+
Philippe
0
another_men
10 nov. 2001 à 21:54
Je tenais a remercier Philippe pour sa reponse qui m'a bien aide. Je te souhaite une bonne continuation et encore merci d'accepter d'aider aussi spontanément des débutant. A +.
0