IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Enregistrement dans bdd à partir d'un formulaire


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 29
    Points : 17
    Points
    17
    Par défaut Enregistrement dans bdd à partir d'un formulaire
    Bonjour,

    J'ai écrit un code qui me permet d'afficher des produits d'une base de données dans un tableau. A coté de chaque ligne j'ai ajouté un champ pour rentrer la quantité de produit.
    Un bouton sélectionner permet d'afficher la quantité sélectionnée en face de chaque ligne...Bref tout cela fonctionne.
    J'aimerais maintenant pouvoir enregistrer les lignes sur lesquelles des quantités ont été sélectionnées dans une nouvelle base "enregistrement" qui possède 4 entrée (Id, nom, produit, quantité).

    Je ne gère pas pour l'instant le nom.
    Comment procéderiez vous?

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <title>Tableau html simple</title>
    </head>
    <body>
     
    <table border="1">
    <tbody>
    <?php require('_connexion.php'); ?>
    <form method="post" action="index.php">
    <?php 
    	while($row = mysql_fetch_assoc($bdd)) {
    		 ?>
     
    		<tr><td width=50%> <?php echo $row['titre']; ?> </td> 
    				<td width=10%> <?php echo $row['code']; ?> </td> 
    				<td width=10%> <?php echo $row['conditionnement']; ?> </td> 
    				<td width=5%> <?php echo $row['masse']; ?> </td> 
    				<td width=5%> <?php echo $row['puht']; ?> </td> 
    				<td><input type="text" name="qte<?php echo $row['Id_prod']; ?>" value=""> 
     				<td width=5%></td>
     
    <?php		
    if(isset($_POST['qte'.$row['Id_prod']])) {
       $quantite = $_POST['qte'.$row['Id_prod']];
    }
    else {
       $quantite= 0;
    }
    ?>
    <td width=5%><?php echo $quantite; ?> </td> 
    </tr>
     
    <?php }  ?>
    <input type="submit" value="Sélectionner"/>
    </form>
     
     
    <form method="post" action="index.php">
    <?php $enreg = 'INSERT INTO enregistrement VALUES ("", "valeur2", "valeur2", "5")';
    mysql_query($enreg); ?>
    <input type="submit" value="valider"/>
    </form>
    </tbody>
    </table>
     
    </body>
    </html>

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    il faut être capable d'identifier chaque ligne, donc chaque produit.

    Une solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <td>
    	<input type="text" name="qte[<?php echo $row['Id_prod']; ?>]" value=""> 
    </td>
    A noter les crochets : qte[...]

    A la soumission du formulaire, on récupère $_POST['qte'] :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach( $_POST['qte'] as $Id_prod => $quantite )
    {
       echo 'Pour le produit '. $Id_prod .', la quantité est '. $quantite . '<br />';
    }
    Dernière modification par Invité ; 27/11/2016 à 12h42.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Bonsoir,

    Cela fonctionne bien. Merci beaucoup!
    Par contre j'ai deux autres problèmes :
    1/ lorsque je lance un post il m'insère toutes les lignes dans la bdd et pas seulement celles qui ont été remplis (champ quantité).
    2/ Je n'arrive pas à insérer dans les champ de la bdd les variables $quantite et $Id_prod. J'ai essayé avec "$quantite", '$quantite' et $quantite mais sans succès...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <title>Tableau html simple</title>
    </head>
    <body>
     
    <table border="1">
    <tbody>
    <?php require('_connexion.php'); ?>
    <form method="post" action="index.php">
     
     
    <?php 
    	while($row = mysql_fetch_assoc($bdd)) {
    		 ?>
     
    		<tr><td width=50%> <?php echo $row['titre']; ?> </td> 
    				<td width=10%> <?php echo $row['code']; ?> </td> 
    				<td width=10%> <?php echo $row['conditionnement']; ?> </td> 
    				<td width=5%> <?php echo $row['masse']; ?> </td> 
    				<td width=5%> <?php echo $row['puht']; ?> </td> 
    				<td><input type="text" name="qte[<?php echo $row['Id_prod']; ?>]" value="">
     				<td width=5%></td>
     
    <td width=5%><?php echo $quantite; ?> </td> 
    </tr>
     
    <?php }  ?>
    <input type="submit" value="Sélectionner"/>
     
    </form>
    <?php		
    foreach( $_POST['qte'] as $Id_prod => $quantite )
    {
    	$enreg = 'INSERT INTO enregistrement VALUES ("", "valeur2", "valeur2", $quantite)';
    mysql_query($enreg);
       echo 'Pour le produit '. $Id_prod .', la quantité est '. $quantite . '<br />';
    }
    ?>
     
    </tbody>
    </table>
     
    </body>
    </html>

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    plusieurs choses ne vont pas.
    • à commencer par la REFLEXION et la CONCEPTION (quoi quand où comment)
    • à suivre les outils employés (mysql_ est obslotète depuis belle lurette)
    • enfin l'objectif à atteindre (c'est quoi cette table "enregistrement" ? et à quoi peut-elle bien servir)


    Voici un tutoriel :




    Parmi les erreurs de conception :
    1/ On place le traitement PHP avant le formulaire HTML (ce qui permet de réafficher le résultat).
    2/ (et c'est là où il faut expliquer l'utilité de la table "enregistrement") s'il s'agit de METTRE A JOUR la table, on utilise UPDATE
    3/ Sinon (INSERT de nouvelles entrées dans la table "enregistrement"), on doit mettre une condition (quantité > 0) avant d'enregistrer la ligne


    Enfin, pour comprendre pourquoi ça n'enregisrte pas ce que tu veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	$enreg = 'INSERT INTO enregistrement VALUES ("", "valeur2", "valeur2", $quantite)';
    Voir :


Discussions similaires

  1. Enregistrer données dans table à partir d'un formulaire
    Par carpediem2807 dans le forum VBA Access
    Réponses: 16
    Dernier message: 04/05/2016, 20h53
  2. Réponses: 8
    Dernier message: 22/12/2012, 15h52
  3. Formulaire sur deux pages enregistrement dans bdd pb
    Par faomayma1980 dans le forum Langage
    Réponses: 2
    Dernier message: 05/07/2009, 19h57
  4. Réponses: 3
    Dernier message: 13/07/2006, 18h05
  5. [MySQL] insérer image dans bdd grace a un formulaire
    Par pod1978 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 14/03/2006, 08h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo