Problème débutant PHP

Snoop_dogg Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   -  
Snoop_dogg Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je suis plutôt à l'aise en html/css, mais voila, j'ai du apprendre PHP/SQL pour une demande d'un de nos commerciaux au boulot...

Je souhaiterais faire un formulaire permettant le calcul du prix de revente d'un de nos produits.
J'ai pour cela différentes options ou il faut cliquer oui/non(boutons radio), pour choisir.
En fonction de la réponse, on additionne.
J'ai commencer un bout de code, mais je pense qu'il n'est pas très juste (je suis sûr même)

<php
$reponse = $bdd->query('SELECT * FROM `Krampe Big body 550 carrier`'); // récupération des données
$array = array ('id','option','detail','prix'); // construction d'un tableau structurant mes données

?>
form method="post" id="formulaire_benne" action="" >
<fieldset>
<legend><strong>Formulaire de calcul du prix d'une benne KRAMPE</strong></legend>

<? while ($donnees = $reponse->fetch())
{
?>
Numéro de l'option : <strong><?php echo $donnees['option']; ?>
</strong><label for="<?php $donnees['id']; ?>"><?php echo $donnees['detail']; ?></label><br/>
<input type="radio" name="<?php $donnees['id']; ?>" value="true" id="oui" />oui <!-- je peux sélectionner oui ET non, donc je pense que name=... est faux? -->
<input type="radio" name="<?php $donnees['id']; ?>" value="false" id="non" />non
<br/><br/>Prix :<strong> <?php echo $donnees['prix']; ?> € </strong> <br/><hr/><br/>

<?php
}

$reponse->closeCursor();

?>

<br/><br/><input type="submit" value="Calculer" name="ok"/>

</fieldset>
</form>


<?php
if(!empty($_POST['option'])){ //on récupère ici les options qui ne sont pas vide
var_dump($_POST['option']);


foreach ($array as $donnees) { //pour chaque $donnees dans le tableau
if (id == oui){ // si leur id = oui
$reponse = $bdd->query('SELECT * SUM(prix) AS prix_total FROM Krampe Big body 550 carrier ');
//alors on additionne les prix
echo '$prix_total'; };
};

}?>


Si quelqu'un voudrait bien jeter un coup d’œil, je lui en serait reconnaissant!
Merci d'avance,
A voir également:

4 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Si le but est de faire la somme des prix des "options" sélectionnées....
Je verrai bien quelque chose de ce genre :
<?php
//--------------------------------------------------------------------//
// Requete pour construire les boutons RADIO
//--------------------------------------------------------------------//
try{
  $sql = "SELECT * FROM `Krampe Big body 550 carrier` ";
  $reponse = $bdd->query($sql); // récupération des données
 //on stocke le résultat dans un array
 $result = $reponse->fetchAll();
 //on ferme la connexion
 $reponse->closeCursor();
} catch (Exception $e){
  die('Erreur : ' . $e->getMessage());
}
 
 
 //--------------------------------------------------------------------//
 //Traitement du SUBMIT
 //--------------------------------------------------------------------//
 
 $prix_total_selection = 0;
 
//récupération "propre" des variables
 $options = !empty($_POST['option']) ? $_POST['option'] : NULL;
 
 if($options){ //on récupère ici les options qui ne sont pas vide
   
    //le temps des tests :
     print_r($options);
     
    //on boucle sur les "options" selectionnées
     foreach($options as $O){
       $prix_total_selection += (float)$O; 
     }
 }
 
?>
<form method="post" id="formulaire_benne" action="" >
     <fieldset>
     <legend><strong>Formulaire de calcul du prix d'une benne KRAMPE</strong></legend>
      
    <? foreach($result as $donnees){
           $id = $donnees['id'];
           $prix = $donnees['prix'];
           $option = $donnees['option'];
           $detail = $donnees['detail'];
           echo  "Numéro de l'option : <strong> $option </strong>
                    <label> $detail </label><br/>
                    <input type='radio' name='$option' value='$prix'  id='oui' />oui 
                    <input type='radio' name='$option' value='0' id='non' />non
                    <br/><br/>Prix :<strong>$prix € </strong> 
                    <br/><hr/><br/> ";
 }
    ?>
    <br/><br/>
    <input type="submit" value="Calculer" name="ok"/>   
 </fieldset> 
</form>
 
 
<?php
   echo " Total selection :".$prix_total_selection ; 
 ?>


Cordialement, 
Jordane                                                                 
0
Snoop_dogg Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   7
 
Wow! Quelle rapidité! Chapeau!

Par contre, total sélection reste toujours à 0
C'est normal?
Dois-je récupérer la variable sur une autre page?

(action = ...)
0
Snoop_dogg Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   7
 
J'ai aussi oublier de préciser, en haut dans try {}, j'ai rajouter :
$bdd = new PDO("'');
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Que donne la ligne print_r($options); ?
0
Snoop_dogg Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   7
 
Rien :/
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Et si tu mets un print_r($_POST); placé au début du script ?
(après avoir coché des radios puis avoir cliqué sur le submit bien sûr...)
0
Snoop_dogg Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   7
 
Array ( [10157] => 25590 [35174] => 0 [35338] => 2350 [35390] => 0 [32934] => 2620 [12730] => 1250 [13082] => 0 [12390] => 0 [16500] => 0 [18100] => 0 [16052] => 0 [16100] => 0 [15590] => 0 [20210] => 0 [20032] => 60 [20400] => 0 [11332] => 2160 [11109] => 180 [23754] => 2160 [7011] => 0 [ok] => Calculer ) Total selection :0
0
Snoop_dogg Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   7
 
Oui mais javascript je connais encore moins :/
Il me renvoi une erreur :

Parse error: syntax error, unexpected '"._oui' />oui ' (T_CONSTANT_ENCAPSED_STRING), expecting ',' or ';' on line 75

Qui correspond a ces deux lignes

<input type='radio' name='radio_".$option."' value='$prix' id='".$option"._oui' />oui
<input type='radio' name='radio_".$option."' value='0' id='".$option"._non' />non


En tout cas merci beaucoup pour le temps accordé !
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
J'ai fait une erreur de copier/coller.
Le "." est mal placé
id='".$option."_oui' 
id='".$option."_non' 
0
Snoop_dogg Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   7
 
 //le temps des tests
echo "<br>Option selectionnée : ".$optionId. " valeur :".$value;


ne s'affiche pas...

$prix_total_selection reste a 0

Par contre ton array retourne bien les résultats

Array
(
[radio_10157] => 25590
[radio_35174] => 0
[radio_35338] => 0
[radio_35390] => 0
[radio_32934] => 0
[radio_12730] => 0
[radio_13082] => 0
[radio_12390] => 0
[radio_16500] => 0
[radio_18100] => 0
[radio_16052] => 0
[radio_16100] => 0
[radio_15590] => 0
[radio_20210] => 0
[radio_20032] => 0
[radio_20400] => 0
[radio_11332] => 0
[radio_11109] => 0
[radio_23754] => 0
[radio_7011] => 0
[ok] => Calculer
)
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
J'ai du me tromper quelque part...
Peux tu modifier le code de la boucle comme ceci :
 if(!empty($_POST)){
	 
  foreach($_POST as $K=>$value){
     echo "<br> k = ".$K. " - value = ".$value;
		//on regarde si le name correspond à un bouton radio : name='radio_".$option."'
                $substrOpt = substr($K,0,5);
                 echo "<br> substrOpt => ".$substrOpt;

		if($substrOpt=="radio_"){
			 //on récupère l'option 
			 $optionId = str_replace("radio_","",$K);
			 
			 //le temps des tests
			 echo "<br>Option selectionnée : ".$optionId. "  valeur :".$value;
			 
			 //on additionne les montants :
			 $prix_total_selection += $value;
			 
		}
  }
0
Snoop_dogg Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   7
 


Çà donne un truc un peu bizarre
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

Çà donne un truc un peu bizarre

Ce n'est pas bizarre... c'est pile poile ce que je lui ai demandé d'afficher....

Il ne reste qu'à changer la ligne :
$substrOpt = substr($K,0,5);

par :
$substrOpt = substr($K,0,6);


et à commenter les lignes de ECHO que j'avais ajouté pour les tests
et ça devrait être ok.

Donc, modifie le code comme ceci :
 if(!empty($_POST)){
	 
  foreach($_POST as $K=>$value){
      // echo "<br> k = ".$K. " - value = ".$value;
     //on regarde si le name correspond à un bouton radio : name='radio_".$option."'
      $substrOpt = substr($K,0,6);
      // echo "<br> substrOpt => ".$substrOpt;
     if($substrOpt=="radio_"){
	 //on récupère l'option 
	 $optionId = str_replace("radio_","",$K);
		 
	 //le temps des tests
	 echo "<br>Option selectionnée : ".$optionId. "  valeur :".$value;
			 
	 //on additionne les montants :
	 $prix_total_selection += $value;
		 
     }
  }
0
Snoop_dogg Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   7
 
Youhouuuu ça fonctionne à merveille !
Mille merci, et chapeau ;) quelle rapidité !
0
Snoop_dogg Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   7
 
Une dernière petite question...
Si je veux récupérer toutes les lignes ou "oui" a été sélectionné, je pense que le code devrait ressembler à ça :
<? echo "<br>Option selectionnée : ".$optionId. "Détail :" . $detail ."  valeur :".$value;?><br/>


Seulement, je ne sais pas ou le placer... De plus il ne m'affiche qu'une seule ligne (la 1ere), et pas les détails...
0
Snoop_dogg Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   7
 
Désolé de vous déranger encore, mais je n'y arrive décidément pas...
J'essaye de comprendre le code mais bon :/ pas évident pour un débutant.
0