A voir également:
- Aide sur PHP
- Easy php - Télécharger - Divers Web & Internet
- \R php ✓ - Forum PHP
- Php if plusieurs conditions ✓ - Forum PHP
- $This php - Forum PHP
- Echo image php ✓ - Forum PHP
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
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