Problème variables !

Rechercher

Problème variables !

Par apis87  -  11 reponses  -  Le 06/03/2012 18:00  -  Editer  - 

Bonjour,

Je suis en train de tourner en rond concernant un résultat en voulant multiplier des variables sachant qu'il existe 3 choix, je m'explique :

ci-joint code ci-dessous ( il se répète x3 normalement ):

nbr **de pots ** 1 2 3 4 5 6 7 8 9 10 250 g (4 ¬ ) 500 g (6 ¬ ) 1 kg (10 ¬ )

**Variables qui nous intéressent : **

nb_pots ; nb_pots1 ; nb_pots2

Je fais une requète pour récupérer des éléments sur les champs : type0, type1 et type2:


$query **

= "SELECT * FROM miel WHERE id"; $result = mysql_query($query) or die ("selection impossible avec '$query' : ".mysql_error()); **if (mysql_num_rows($result)==){ echo "Aucune référence dans la base de donnees\n"; } elseif (mysql_num_rows($result)!= ){ while ($row **= **mysql_fetch_array($result)){ $type0 = $row["type0"]; $type1 = $row["type1"]; $type2 = $row["type2"]; } }
 

J'effectue ces opérations de variables sachant que l'on a 9 possibilités et seulement 3 choix :


$poid = ($nb_pots *** **$type0 ) OR ($nb_pots *** **$type1) OR ($nb_pots *** **$type2); $poid1 = ($nb_pots1 *** **$type0) OR ($nb_pots1 *** **$type1) OR ($nb_pots1 *** **$type2); $poid2 = ($nb_pots2 *** **$type0) OR ($nb_pots2 *** **$type1) OR ($nb_pots2 *** **$type2); $poids = $poid + $poid1 + $poid2; echo isset($poids); **

Je veux connaître le poids total des (3 choix) éléments choisis par le menu déroulant et la table (variable : nb_pots & via la table miel.sql champ : type0, type1 et type2).

une Erreur dans le résultat des multiplications des variables, pourquoi ?

J'espère que vous avez suivi mon cheminement !

Merci d'avance,

Bien ncordialement,

 

Réponses apportées à cette discussion

Par Cyrano  -  Le 06/03/2012 19:14  -  Haut de page  - 

a sent l'apiculture, je devrais être sur mon terrain... même si je n'ai plus touché à une ruche depuis bien longtemps :p

Par contre, j'essaye de compndre ce que tu veux faire et ça m'échappe un peu. Si je me fie au formulaire, on a un choix de quantité dans une liste déroulante, et un bouton radio permettant de choisir la taille des pots, donc 250g, 500g ou 1kg. Mais de toute évidence, il manque un bout du code. Comment sont récupérées les données du formulaire ? C'est à ce niveau là que ça semble flou, parce qu'une fois ce soucis reglé, l'opération se fera en une simple ligne.

Un détail : pour afficher du code, au lieu de mettre ça en gras en cliquant sur le [B] utilise donc plutôt le [] et sélectionne le langage approprié, ce sera plus propre et plus facile à relire.

 
Par apis87  -  Le 06/03/2012 19:31  -  Haut de page  - 

Je vais résumer mon problème en ne joignant que la fin du code qui ne fonctionne pas :

je récupère les données de : nb_pots, nb_pots1, nb_pots2 ainsi que type0, type1 et type2. Pour chaque ensemble (paquets de 3) je ne dois avoir qu'un seul résultat et que j'additionne à la fin.

$poid= ($nb_pots *** **$type0); $poidA= ($nb_pots *** **$type1); $poidB= ($nb_pots *** **$type2); $poid1 = ($nb_pots1 *** **$type0); $poid1A = ($nb_pots1 *** **$type1); $poid1B = ($nb_pots1 *** **$type2); $poid2 = ($nb_pots2 *** **$type0); $poid2A = ($nb_pots2 *** **$type1); $poid2B = ($nb_pots2 *** **$type2); $poids = ($poid **OR **$poidA OR $poidB) + ($poid1 **OR **$poid1A OR $poid1B) + ($poid2 **OR **$poid2A OR $poid2B); echo isset($poids);

Est-ce que c'est plus clair !

 
Par Cyrano  -  Le 06/03/2012 19:39  -  Haut de page  - 

Non parce que c'est précisément cette partie là qui pose problème : tu récupères les données, ok... mais comment ?? À quoi correspondent $type0, $type1 et $type2 ainsi que les différentes déclinaisons de $poid ? Comme je ne visualise pas le formulaire dans son ensemble, il me manque des éléments que je ne peux pas deviner sans risque de passer complètement à coté.

Et encore une fois, ne met pas ton code en gras, il y a un outil pour afficher du code avec une coloration syntaxique, utilise le, c'est pénible à lire comme ça.

 
Par apis87  -  Le 06/03/2012 20:04  -  Haut de page  - 

Je n'arrive pas à insérer le code via , je propose de l'envoyer par mail, ok !

 
Par Cyrano  -  Le 06/03/2012 20:14  -  Haut de page  - 

Curieux, d'habitude ça fonctionne bien. Laisse tomber pour le mail.

Explique-moi plutôt comment tu récupères les données du formulaire et comment tu initialises tes variables pour pouvoir faire tes calculs. L'idée générale, c'est que si je peux visualiser ce que tu as compris du fonctionnement du PHP et des formulaire, je saurais comment te remettre sur la route plus précisément.

 
Par apis87  -  Le 06/03/2012 20:26  -  Haut de page  - 

je récupère les données (nb_pots, nb_pots1 et nb_pots2) par une requête et que j'insère dans une table (new_client.sql).

J'ai une autre table que j'ai indiquée ci-dessus (miel.sql) avec les champs type0, type1 et type2.

Donc, ayant ces informations je les récupère, et je veux calculer le poids total ($poids) du nbre de pots (nb__pots, etc) x le poids des pots (type0, etc).

@+

 
Par Cyrano  -  Le 06/03/2012 21:52  -  Haut de page  - 

Mouais, c'est pas beaucoup plus clair... un truc qu'il est important de bien assimiler en programmation, c'est que pour résoudre un problème, il est impératif de commencer par bien le comprendre. En PHP comme dans n'importe quel langage de programmation, il y a une chronologie dans le déroulement d'un code.

Là, nous avons trois parties : la base de données, le formulaire et un traitement pour effectuer des calculs. Il faut commencer par placer les choses dans l'ordre où elles interviennent. Si on part du formulaire, au moment où l'utilisateur clique sur un bouton pour envoyer les données, celles-ci sont récupérées au début de la page cible, celle indiquée dans l'attribut « action » de la balise . De là, les données sont traitées et ensuite, selon le cas, enregistrent ou non des informations dans la base de données, puis le code qui suit reconstruit la page avec de nouvelles informations avec s'il y a lieu un message d'erreur pour le cas où les données envoyées sont invalides.

Un autre détail particulier, ce bout de code :

$poids  = ($poid OR $poidA OR $poidB) +
          ($poid1 OR $poid1A OR $poid1B) +
          ($poid2 OR $poid2A OR $poid2B);

Par curiosité, tu t'attends à quel résultat ? Plus précisément, que retourne selon toi l'expression

($poid1 OR $poid1A OR $poid1B)

?

 

 
Par apis87  -  Le 06/03/2012 22:06  -  Haut de page  - 

Le résultat que j'attends c'est qu'il calcule le poids total des 3 choix qui ont été sélectionnés au départ par le bouton radio et la liste déroulante.

Je suppose qu'il faille valider les variables : nb_pots, nb_pots1 et nb_pots2 en vérifiant qu'elles soient = 0 ou = 1 et de comptabiliser celles qui sont = 1 et ensuite les multiplier par les variables : type0, type 1 et type2 et faire la somme.

Ai-je bien répondu au prof ?

@+

 
Par Cyrano  -  Le 06/03/2012 22:15  -  Haut de page  - 

Ben non :-p 

($poid1 OR $poid1A OR $poid1B)

va retourner un booléen, donc 0 ou 1 : ce qui signifie qu'au mieux avec ce code, $poids vaudra au maximum , ce qui n'a aucun rapport avec le poids de tes pots qu'ils soient de 250g, 500g ou 1kg.

Donc, il faut remonter d'un cran dans la chronologie du code : comment récupères-tu les valeurs du formulaire envoyé ? Cette partie du code est importante mais je ne l'ai pas vue pour l'instant...

 
Par apis87  -  Le 06/03/2012 23:02  -  Haut de page  - 

 

**Première requête : **

include_once****(*"connect-bd-Adh.inc"*****); $query = "SELECT * FROM miel WHERE id"; $result = mysql_query($query) or die (*"selection impossible avec '$query' : ".mysql_error()); *// Si pas de resultat ***if (mysql_num_rows($result)==){ echo *"Aucun adhrent dans la base de donnes\n"*****; }**** elseif (mysql_num_rows($result)!= ){ while ($row = mysql_fetch_array($result)){ $type0 ****= $row[*"type0"*****]; $type1 ****= $row[*"type1"*****]; $type2 ****= $row[*"type2"*****]; }**** ****}

2e requête :
 

$query = "SELECT * FROM bulletin_client ORDER BY num_adh DESC LIMIT 0, 1"; $resultat = mysql_query($query) or die ("Requete '$query' invalide"); *// Si pas de resultat ***if (mysql_num_rows($resultat) == ){ **print

 
Par Cyrano  -  Le 06/03/2012 23:11  -  Haut de page  - 

Pas du tout : ta balise doit avoir un attribut « method » : Tu devrais donc théoriquement récupérer les valeur du formulaire dans $_GET ou dans $_POST : c'est cette partie qui m'intéresse pour le moment.

Je note toutefois un autre problème : ta requête SQL de départ ne doit pas retourner grand chose parce que la clause WHERE est incomplète. Grosso modo, ton code est bizarre, je n'arrive toujours pas à situer ton degré de compréhension du fonctionnement de tout l'ensemble...

 

Ajouter une réponse à la discussion

Seuls les membres connectés sont autorisés à poster dans les forums !

Identifiez-vous
Join |  ID/MDP? |