Problème de liste déroulante

Résolu
paulinett Messages postés 51 Date d'inscription lundi 1 août 2005 Statut Membre Dernière intervention 17 octobre 2005 - 5 août 2005 à 11:39
cs_lotr Messages postés 128 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 12 août 2005 - 5 août 2005 à 14:35
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>




Formulaire de recherche d'informations à propos d'une machine


<FORM ACTION="ExMyPHP2BIS.php" METHOD=POST>


Ce Formulaire vous permet d'indiquer des paramètres pour la recherche d'informations à propos d'une machine :

Nom de la machine :,



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>




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>



</FORM>
</HTML>

"ExMyPHP2BIS.php"

<HTML>


<HEAD>
<TITLE> Résultat de votre recherche </TITLE>
<LINK REL =stylesheet HREF= 'film3.css' TYPE='text/css'>
</HEAD>




Résultat de l'interrogation par formulaire


<?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>\"
.\"<CAPTION ALIGN=bottom>Table Machine </CAPTION>\"
.\"----
Nom de la machine |Type de la machineConstructeur de la machine |Nom du fournisseur\n\";

while ($machine = mysql_fetch_object($resultat))
{
echo \"----
$machine->nom_machine, $machine->type_machine"
."$machine->constructeur_machine, $machine->nom_fournisseur\n\";
}

echo "
</CENTER>\n";
?>



</HTML>

3 réponses

cs_lotr Messages postés 128 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 12 août 2005
5 août 2005 à 12:21
Bonjour,

"supplied argument is not a valid MySQL result resource in ..." signifie que ta requête comporte une erreur.
Pour savoir laquelle, utilise ce bout de code :
$req = "ici ta requête";
$res = mysql_query($req) or die('Erreur dans la requête : '.$req.'
'.mysql_error());
Le "or die(...)" te permettra de savoir quelle est l'erreur rencontrée.

Pour ton champ "Tous", il suffit que tu l'insères avant le résultat de ta requête.
echo'<select name="nom">';
echo '<option value="tous">Tous</option>';
while($ligne = mysql_fetch_array($res))
{
echo '<option value="'.$ligne['champ'].'">'.$ligne['champ'].'</option>';
}
echo '</select>';
3
paulinett Messages postés 51 Date d'inscription lundi 1 août 2005 Statut Membre Dernière intervention 17 octobre 2005
5 août 2005 à 14:16
Merci beaucoup !!! ca marche !!! c'est génial !
lotr = Lord Of The Ring ? (:

bonne fin de journée
0
cs_lotr Messages postés 128 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 12 août 2005
5 août 2005 à 14:35
>lotr = Lord Of The Ring
Ouaip !
/me grande fan de Tolkien ;)
0
Rejoignez-nous