Bonjour,
Je suis débutante et je viens d'écrire un code qui doit permettre à un user d'obtenir des infos sur une machine en fonction de ses choix : nom_machine (zone de texte), type_machine (liste déroulante basée sur une sélection) et le nom_fournisseur (liste déroulante basée sur une sélection).Les deux premiers éléments correspondent à une table Machine et le dernier à une table Fournisseur dans une base MySQL.
J'ai donc écrit deux fichiers :
- un pour définir le formulaire de choix : il s'agit d'obtenir des informations sur une machine et sur le fournisseur. "selection2.php"
- un pour le résultat de la requete. "ExMyPHP2BIS.php"
J'ai deux questions :
- quand j'effectue ma recherche, le message d'erreur suivant apparait dans la case Nom du Fournisseur de mon tableau : mysql_fetch_object(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\exmyphp2bis.php on line 42 ... je ne comprends pas du tout pourquoi.
Pouvez-vous m'aider à trouver une solution ?
- comment afficher un champ "Tous" dans une liste déroulante ? c'est-à-dire que j'aimerais, en plus de ma sélection sur ma table ajouter une ligne avec Tous. Cela permettrait une recherche plus "générale"
Je vous remercie d'avance. C'est très important pour moi (cadre d'une stage)
Voici mon code :
"selection2.php"
<HTML>
<HEAD>
<TITLE> Formulaire de recherche d'informations à propos d'une machine </TITLE>
<LINK REL =stylesheet HREF='film3.css' TYPE='text/css'>
</HEAD>
<BODY>
<H1> Formulaire de recherche d'informations à propos d'une machine </H1>
<FORM ACTION="ExMyPHP2BIS.php" METHOD=POST>
Ce Formulaire vous permet d'indiquer des paramètres pour la recherche d'informations à propos d'une machine :
<P>
<TABLE BORDER=3>
<TR><TD>Nom de la machine :
<TD> <INPUT TYPE=TEXT SIZE=20 NAME='nom_machine' VALUE='Tous'>
</TR>
</TABLE>
<P>
Type de la machine :
<select name="type_machine">
<?php
require_once("Connect.php");
// connexion au serveur et accès à la base
$connexion = mysql_pconnect (SERVEUR, NOM, PASSE);
mysql_select_db (BASE, $connexion);
$typeliste = mysql_query("SELECT DISTINCT type_machine FROM Machine");
while($type_machine = mysql_fetch_array($typeliste))
{
echo '<option value="'.$type_machine['type_machine'].'">'.$type_machine['type_machine'].'</option>';};
?>
</select>
<P>
Nom du fournisseur :
<select name="nom_fournisseur">
<?php
require_once("Connect.php");
// connexion au serveur et accès à la base
$connexion = mysql_pconnect (SERVEUR, NOM, PASSE);
mysql_select_db (BASE, $connexion);
$fournisseurliste = mysql_query("SELECT DISTINCT nom_fournisseur FROM Fournisseur");
while($nom_fournisseur = mysql_fetch_array($fournisseurliste))
{
echo '<option value="'.$nom_fournisseur['nom_fournisseur'].'">'.$nom_fournisseur['nom_fournisseur'].'</option>';};
?>
</select>
<P>
<input type="submit">
</FORM>
</BODY></HTML>
"ExMyPHP2BIS.php"
<HTML>
<HEAD>
<TITLE> Résultat de votre recherche </TITLE>
<LINK REL =stylesheet HREF='film3.css' TYPE='text/css'>
</HEAD>
<BODY>
<H1> Résultat de l'interrogation par formulaire </H1>
<?php
require("Connect.php");
// Prenons les variables dans le tableau. C'est surement le bon endroit pour effectuer les contrôles.
$nom_machine = $_POST['nom_machine'];
$type_machine = $_POST['type_machine'];
$nom_fournisseur = $_POST['nom_fournisseur'];
//Connexion au serveur et accès à la base
$connexion = mysql_pconnect (SERVEUR, NOM, PASSE);
mysql_select_db (BASE, $connexion);
if($nom_machine == "Tous")
$requete = "SELECT nom_machine, type_machine, constructeur_machine, nom_fournisseur FROM Machine, Fournisseur WHERE type_machine=$type_machine AND nom_fournisseur=$nom_fournisseur AND Machine.id_fournisseur=Fournisseur.id_fournisseur";
else
$requete = "SELECT nom_machine, type_machine, constructeur_machine, nom_fournisseur FROM Machine, Fournisseur WHERE nom_machine LIKE '%$nom_machine%' AND type_machine=$type_machine AND nom_fournisseur=$nom_fournisseur AND Machine.id_fournisseur=Fournisseur.id_fournisseur";
// Exécution et affichage de la requête
$resultat = mysql_query($requete, $connexion);
echo "<CENTER><TABLE BORDER=4 CELLSPACING=2 CELLPADDING=2>"
."<CAPTION ALIGN=bottom>Table <I>Machine</I></CAPTION>"
."<TR><TH>Nom de la machine<TH>Type de la machine<TH>Constructeur de la machine<TH>Nom du fournisseur</TR>\n";
while ($machine = mysql_fetch_object($resultat))
{
echo "<TR><TD>$machine->nom_machine<TD>$machine->type_machine<TD>"
."$machine->constructeur_machine<TD>$machine->nom_fournisseur\n";
}
echo "</TABLE></CENTER>\n";
?>
</BODY>
</HTML>