Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1311 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  choix multiple et traitement des données

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

choix multiple et traitement des données

n°2272766
abdoulayec​oumba
Posté le 05-01-2016 à 12:41:10  profilanswer
 

Bonjour,
 J'ai créé une table contenant trois colonnes ;
 Noms (il s'agit de noms de fruits ), Saison , Prix
 
 J'ai créé un formulaire contenant une liste déroulante des différents noms de fruits qui me permet d'aller extraire au niveau de la table le Prix et la Saison et les afficher . Jusque là tout fonctionne comme je le veux .
 Maintenant je voudrais augmenter à souhait le prix du fruit affiché comment ? En créant dans une autre page un nouveau formulaire contenant un seul champs de saisie intitulé '' Montant à augmenter '' et qui devra s'afficher en dessous de l'affichage du prix et de la saison .
 Je voudrais à partir de ce formulaire saisir le montant que je voudrais augmenter sur le prix puis exporter au niveau de la table le nouveau prix c'est à ce niveau ou j’éprouve toute les difficultés du monde car malgré le fait que le deuxième formulaire s'affiche correctement wamp me signale à ce niveau deux erreurs :
 Notice: Undefined index: montantaug in C:\wamp\www\Nouveau dossier (2)\programme_recherche2\liste2.php on line 23
 Notice: Undefined variable: prix in C:\wamp\www\Nouveau dossier (2)\programme_recherche2\liste2.php on line 3
 Et puis je souhaiterais savoir pourquoi aprés avoir valider le montant à augmenter tout le contenu de l'ecran disparaît seul s'affiche le deuxieme formulaire .
 Cette difficulté me pourrit la vie depuis bientôt dix jours j'ai beau essayer de piocher une solution sur le net mais je ne trouve pas de solution .
 Je me suis rendu compte que si je réunis tout dans un seul formulaire ca marche nickel, mais moi je tiens à avoir deux formulaires distincts.
 Je rappelle je suis débutant je ne connais que le html et le PHP je connais absolument rien en Java script voici mon code :
 
-------------------------------------------------------------------------------------------
le contenu du fichier liste2.php
-------------------------------------------------------------------------------------------
 
<html >  
 
<body>  
   
<?php  
           
    try  
       {  
        $bdd = new PDO('mysql:host=localhost;dbname=productions','root','',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));  
       }  
    catch(Exception $e)  
       {  
        die('Erreur : '.$e->getMessage());  
       }  
     
     
     
  ?>  
  // Liste déroulante  
   
    <form method="POST" action="liste.php">  
        <label for="fruits">Choisir le type de fruit que vous voulez changer le prix</label><br><br/>  
            <select name="fruits" id="fruits">  
<?php  
        $reponse = $bdd->query('SELECT * FROM fruits');  
    while ($donnees = $reponse->fetch())  
       {  
  ?>  
        <option value="<?php echo $donnees['nom'];?>"> <?php echo $donnees['nom'];?> </option>  
<?php  
       }  
     
?>  
            </select>
   
            <br><br/>
   <input type="submit" name="valider" value="VALIDER"/><br><br/>
   
    </form>  
 
 
<?php  
 
 
 
    // Recherche dans la table du prix actuel et affichage de celui ci
 
   if( isset( $_POST['fruits'] ))
               
  {  
                    $param_rech = $_POST['fruits'];
     
                     
?>  
 
 
<?php  
         
    $req = $bdd->prepare('SELECT * FROM fruits WHERE nom = :nom_fruit');
    $req->execute(array(
 
           ':nom_fruit' => $param_rech,
 
           ));
     
     
     while ($result = $req->fetch())
 
 
            {
       
             echo 'Le prix actuel de '.''.$param_rech.''. 'est de :'.''.$result['prix'].''.$result['saison'].'<br><br />';
     
             $prix = $result['prix'];
                 
      }
 
            $req->closeCursor();
   
   
   
   require_once "liste2.php";    
        }
   
   
   
 
   
   
?>  
 
     
   
 
 
 
</body>  
</html>
 
-------------------------------------------------------------------------------------------
le contenu du fichier liste2.php
-------------------------------------------------------------------------------------------
 
 
<html >  
<body>  
 
 
 
<form  method='POST' action='liste2.php'>  
    <input type="hidden" name="fruits" id="input_cache_fruits" value="$param_rech">  
 
     <label for="montantaug">Montant augmentation</label>
     <br>      
     <input type="text" name="montantaug" id="montantaug">  
   <br><br>
     <input type="submit" name="valider" value="VALIDER LE MONTANT A AUGMENTER"/>
  </form>
   
 
   
<?php  
  if( isset( $_POST['montantaug'] ))
               
  {  
                    $param_rech = $_POST['fruits'];
     $montantaug = $_POST['montantaug'];
     
  // Calcul du nouveau prix
   
                         function calculaugmentation($prix, $montantaug)
                       {
                            $nouvprix = $prix + $montantaug;// calcul du nouveau prix
                            return $nouvprix; // indique la valeur à renvoyer, ici le nouveau prix
                       }
 
                            $nouvprix = calculaugmentation($prix, $montantaug);
   
                   
 
                     echo 'Le nouveau prix de '.''.$param_rech.''. 'est de :'.''.$nouvprix.''.'<br><br />';          
}
?>  
 
</body>  
</html>
 

mood
Publicité
Posté le 05-01-2016 à 12:41:10  profilanswer
 

n°2273474
vodkadream
Posté le 15-01-2016 à 12:44:18  profilanswer
 

Salut,
Essaies de récupérer les données $fruit et $montantaug avec des $_SESSION.
 
Par exemple:

Code :
  1. session_start();
  2. $_SESSION['fruit'] = $_POST['fruits'];
  3. $_SESSION['montant'] = $_POST['montantaug'];


Je pense que la variable est perdue lors du refresh de la page. Avec $_SESSION tu risques pas de la perdre.

n°2274409
abdoulayec​oumba
Posté le 27-01-2016 à 13:44:35  profilanswer
 

Merci vodkadream d'abord excusez moi de répondre très tardivement à votre proposition ; je pense comme vous que les variables de session peuvent être une piste , je vais essayer de voire merci beaucoup

n°2274464
MaybeEijOr​Not
but someone at least
Posté le 27-01-2016 à 21:17:23  profilanswer
 

Salut,
 
Personnellement je ne comprends pas tout, déjà les deux fichiers sont nommés liste2.php, bon ça c'est juste une petite erreur mais par contre le deuxième fichier est un mystère complet :
 

Code :
  1. <input type="hidden" name="fruits" id="input_cache_fruits" value="$param_rech">


Variable php dans le html?
 

Code :
  1. $param_rech = $_POST['fruits'];


Du coup $param_rech renvoie la chaîne de caractères "$param_rech"?
 

Code :
  1. $nouvprix = calculaugmentation($prix, $montantaug);


Elle est instanciée où cette variable $prix? Quand liste2.php est appelé dans liste.php ça va, mais sinon $prix n'existe pas.
 
 
C'est normal que seul le deuxième formulaire apparaisse après validation du changement de prix puisque c'est ce qui est demandé :

Code :
  1. <form  method='POST' action='liste2.php'>


 
 
Bref c'est mal conçu, il faut garder qu'un fichier de traitement des formulaires qui en fonction de la variable $_POST passée ou non affiche un contenu HTML ou un autre. Sachant que dans le deuxième formulaire il faut repasser dans ta variable POST le fruit ainsi que son prix. Après le mieux c'est toujours de bien séparer le HTML du php dans des fichiers différents afin de ne pas se perdre.
À l'heure d'aujourd'hui le plus adapté serait les requêtes Ajax mais si tu ne veux pas te lancer dans le Javascript alors c'est mort.
Donc moi à ta place je ne garderai qu'un fichier et je distinguerai bien ce qu'il faut afficher en fonction de :
- premier formulaire envoyé ou non
- deuxième formulaire envoyé ou non
 
Ce qui donne 3 affichages différents :
- aucun formulaire validé (pas de variable $_POST définie)
- formulaire 1 validé (variable $_POST["fruits"] définie mais pas $_POST["montantaug"])
- formulaire 2 valide (variable $_POST["montantaug"] définie)
 
Donc on peut traite le premier cas par défaut sans écrire de condition si ce n'est dans la boucle des options où l'on peut ajouter dans les <option> l'attribut "selected" quand le fruit vaut $_POST["fruits"] (ajouter dans la condition ET si la variable est définie afin d'éviter une erreur). Cela permet de ne pas retaper le premier formulaire partout.
Dans le cas où le formulaire 1 est validé tu ajoutes la requête de prix et le formulaire d'augmentation du prix (en récupérant dans des champs cachés $_POST["fruits"] et $prix tout en gardant les noms correspondant).
Dans le cas où le formulaire 2 est validé tu réaffiches le prix (pas besoin de requête puisque tu dois l'avoir en variable POST) puis tu lances ta fonction avec pour paramètres $_POST["prix"] et $_POST["montantaug"].


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  choix multiple et traitement des données

 

Sujets relatifs
[AIDE] Choix site tourné commercialChanger la valeur d'un champs par choix multiple
Publipostage Word en PDF avec base de données ExcelExcel : Code macro pour aller chercher les données d'un autre fichier
sed : remplacer valeurs batch sur 2 gigas de données[SQL] Select un nbre max de données = selectionner une ligne sur n.
Recherche de données excel sur 2 tableaux à la foisChoix du temps avant un reload
Plus de sujets relatifs à : choix multiple et traitement des données


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR