Formulaire mysql /php

Résolu/Fermé
eroselrey Messages postés 9 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 4 novembre 2006 - 3 nov. 2006 à 10:40
 meabdelouahed - 10 avril 2009 à 17:54
Bonjour,

Je suis entrain de créer un formulaire "liste déroulante pour des produits lié avec mysql.

Je souhiate faire parraitre sur la meme page le prix et la réference du produit sélectioné :

<?php
//on se connecte à la base de donnée
$SQL = mysql_connect('localhost','root','') or die ("erreur de connexion");print ("Connexion réussie.");

//on selectionne votre base
mysql_select_db('lcompresseurs',$SQL) or die ("erreur de connexion base");

$result=mysql_query("SELECT Ref,Compresseur,Prix,Design FROM dixair");
mysql_close();
?>

<p>Veuillez choisir votre compresseur :</p>

<SELECT NAME="compresseur">
<?
while($val=mysql_fetch_array($result))
{
echo "<OPTION VALUE='".$val["Compresseur"]."'>".$val["Compresseur"]."</option>";
}
?>
</SELECT>
<input type="submit" value="Vérifier le prix" />

Jusque la tout fonctionne ma liste est reprise de mysql mais je n'arrive pas a affiché un résultat quand la personne choisi le produit.

Pouvez vous m'aider ?????

Merci
A voir également:

9 réponses

P@ Messages postés 1709 Date d'inscription vendredi 7 juillet 2000 Statut Membre Dernière intervention 24 mars 2009 185
3 nov. 2006 à 11:35
tu as fait une page de traitement ???
Tu as bien mis une balise form avec l'action ???

Tu as fait quoi pour montrer le prix ??
0
eroselrey Messages postés 9 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 4 novembre 2006
3 nov. 2006 à 11:55
Oui j'ai mis sur :

<form action="Resultat_Dixair.php" method="post">

<SELECT NAME="compresseur">
<?
while($val=mysql_fetch_array($result))
{
echo "<OPTION VALUE='".$val["Compresseur"]."'>".$val["Compresseur"]."</option>";
...

Sur la seconde page pour afficher les résultats, je ne sais comment continuer

As tu une idée ?

Merci pour ton aide
0
P@ Messages postés 1709 Date d'inscription vendredi 7 juillet 2000 Statut Membre Dernière intervention 24 mars 2009 185
3 nov. 2006 à 12:05
dans Resultat_Dixair.php, tu récuperes les données de ton formulaire et tu les affiche comme tu le sent.
Si dans ton formulaire tu n'as que ta liste déroulante alors tu va recevoir le compresseur à toi de faire la requete en base pour aller en chercher le prix avec cette données. :D

Normalement, le bouton submit te renvoie sur la page d'action avec les données récolté par le formulaire
0
eroselrey Messages postés 9 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 4 novembre 2006
3 nov. 2006 à 12:50
Tu n'as pas un exemple par hasard ?

je débute...et je n'ai pas tout assimilé encore...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
P@ Messages postés 1709 Date d'inscription vendredi 7 juillet 2000 Statut Membre Dernière intervention 24 mars 2009 185
3 nov. 2006 à 13:42
tu créer ta page Resultat_Dixair.php

tu fais une requete du type
$cherchePrix = mysql_query("select prix, compresseur from matable where compresseur = $compresseur");
$quelPrix = mysql_num_rows($cherchePrix);
for ($x=0;$x<$quelPrix;$x++){
$prix = mysql_result($cherchePrix,$x,'prix');
echo "le prix de $compresseur est $prix";
}


c'est plus clair ???
0
eroselrey Messages postés 9 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 4 novembre 2006
3 nov. 2006 à 19:34
En effet j'ai avancer...

mais j'ai toujours un petit souci : le programme m'annonce ceci :
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in

et je n'arrive pas a comprendre la formule for

Peux tu m'expliquer ?

Merci...vraiment désolé
0
eroselrey Messages postés 9 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 4 novembre 2006
3 nov. 2006 à 22:34
Bonsoir,

Quelqu'un a t'il une idée sur mon petit problème ?

Merci à tous
0
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
4 nov. 2006 à 19:07
Bsr

En clair PHP t'indique que tu as passé à la fonction mysql_num_rows() un argument (un paramètre si tu préfères) qui ne correspond pas à une ressource MySQL.

Qu'est-ce qu'une ressource MySQL ?

C'est une variable d'un type bien particulier que créé PHP afin de
pouvoir identifier et manipuler des objets de différentes natures : fichiers ouverts, connexion à MySQL, résultats d'une requête etc ...

C'est la fonction mysql_query() qui te retourne normalement une ressource MySQL : attention cependant si la requête échoue mysql_query() ne retourne plus une ressource mais une FALSE donc une variable booléenne.

Et c'est ce qui se produit ici : $cherchePrix ne contient pas une ressource MySQL mais bien FALSE !!!!

Jusqu'ici ce n'est pas trop gênant.

Cependant lorsqu'ensuite PHP appelle la fonction mysql_num_rows($cherchePrix) : il se produit alors l'erreur à laquelle tu es confrontée .

L'origine de l'erreur est donc à rechercher dans l'instruction :

$cherchePrix = mysql_query("select prix, compresseur from matable where compresseur = $compresseur");


Bref en gros tu executes une requête non valide.

En effet si le champ compresseur est de type chaîne (string) dans ta table alors ajoute des apostrophes et écrit ceci :
$cherchePrix = mysql_query("select prix, compresseur from matable where compresseur = '".$compresseur."'");



j'espère aussi qu'avant d'utiliser $compresseur tu as bien pensé à écrire en PHP :

$compresseur = "";
if (isset($_POST["compresseur"])) $compresseur =$_POST["compresseur"] ;


En effet toutes les variables passées par des formulaires via la méthodes "post" se retrouve dans le tableau $_POST[] prédéfini.

En aucun cas PHP n'initialisera directement pour toi la variable $compresseur ni aucune autre variable passée par POST : tu dois mettre le code ci-dessus.


Syntaxe pour for
Ex :
var $i;

for($i=0; $i <10; $i++)
{
// Instructions ...
}

Ce qui peut se traduire par : pour i de 0 à 9 par pas de 1 effectue toutes les instructions.



1 : $i=0
Signifie initialise la variable $i à zéro : n'est effectué qu'une seule fois au départ

2 : $i < 10
l'expression est évaluée à TRUE ou FALSE
si c'est vrai alors les instructions sont toutes exécutées
si c'est faux alors on sort de la boucle et le for est terminé

3 : $i++
cette expression est évaluée
normalement ici il faut faire varier $i sans quoi la boucle ne s'arrête jamais
$i++ est équivalent à $i=$i+1 donc on ajoute 1 à $i

Ensuite on retourne à l'étape 2 et ainsi de suite d'où le terme de boucle.



Est-ce plus clair ?
0
eroselrey Messages postés 9 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 4 novembre 2006
4 nov. 2006 à 20:56
Bonsoir,

Je te remercie enormement pour ce cours magistral.

Je vais allez vérifier cela des demain.

En tout cas ça me parle beaucoup plus.

Je te remercie PHP

;)
0
meabdelouahed
10 avril 2009 à 17:54
salut,il faut connecter php avec mysql,
<?php
$conexion=mysql_conect('localhost','root','.');
if (!$conexion
{
die('Non connecté : ' . mysql_error());
}
?>
se connecter a la base de donner
$db_nom base = mysql_select_db('nom base', $serveur);
0