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

PHP & Base de données Discussion :

Mise à jour table via formulaire


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2020
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2020
    Messages : 54
    Par défaut Mise à jour table via formulaire
    Bonjour,

    Je suis en train de créer un formulaire de mise à jour de mes articles pour la partie quantité, le reste est en disabled

    Mais lorsque que je clique sur submit je ne récupère pas les valeurs de mes variables.

    Ma page formulaire :
    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    <form action='modification.php' method='POST'>
     
    <?php
     
     $query = "SELECT * FROM ARTICLE 
    	   INNER JOIN FOURNISSEUR 
    	   ON ARTICLE.num_four=FOURNISSEUR.num_four 
    	   WHERE num_article = $variable ";
     $result = mysqli_query($connexion, $query);
     
     // Afficher les lignes du tableau en fonction de la réponse à la requête
     if ($result) {
      if (mysqli_num_rows($result) > 0) {
       while($row = mysqli_fetch_assoc($result)) {
     
    	echo "<tr>";
    	echo "</br></br>";
    	echo "<td height='1%' align='right'></td>";
    	echo "<td height='1%' align='left'><font size='6'>Mettre à jour un article</font></td>";
    	echo "</tr>";
     
     
    	echo "<tr>";
    	echo "</br></br>";
    	echo "<td height='1%' align='right'>R&eacute;f&eacute;rence de l'article : </td><td><input type='text' disabled='disabled' name='ref' value='".$row['ref_article']."'/></td>";
    	echo "</tr>";
     
    	echo "</br></br>";
    	echo "<tr>";
    	echo "<td height='1%' align='right'>Description de l'article : </td><td><textarea disabled='disabled' name='nomart' rows='5' cols='50'>".$row['nom_article']."</textarea></td>";
    	echo "</tr>";
     
    	echo "</br></br>";
    	echo "<tr>";
    	echo "<td height='1%' align='right'>Quantit&eacute; de Vincent :</td> <td><input type='text' name='qtevince' value='".$row['qte_vincent']."'/></td>";
    	echo "</tr>";
     
    	echo "</br></br>";
    	echo "<tr>";
    	echo "<td height='1%' align='right'>Quantit&eacute; de Peggy :</td> <td><input type='text' name='qtepeggy' value='".$row['qte_peggy']."'/></td>";
    	echo "</tr>";
     
    	echo "</br></br>";
    	echo "<tr>";
    	echo "<td height='1%' align='right'>Quantit&eacute; de Benoit :</td><td> <input type='text' name='qtebenoit' value='".$row['qte_benoit']."'/></td>";
    	echo "</tr>";
     
    	echo "</br></br>";
    	echo "<tr>";
    	echo "<td height='1%' align='right'>Image :</td><td> <input type='text' disabled='disabled' name='imgart' value='".$row['img_article']."'/></td>";
    	echo "</tr>";
     
    	echo "</br></br>";
    	echo "<tr>";
    	echo "<td height='1%' align='right'>Fournisseur :</td>";
    	echo "<td height='1%' align='left'>
    		<input disabled='disabled' type='text' name='fournisseur' value='".$row['nom_four']."'/>
    	      </td>";
    	echo "</tr>";
     
    	echo "<tr height='1'>";
    	echo "<input type='hidden' name='numarticle' value='".$row['num_article']."'/>";
    	echo "</tr>";
     
     	echo "</br></br>";
    	echo "<tr>";
    	echo "<td height='1%' align='right'><input name='submit' type='submit' value='Envoyer'></td>";
    	echo "</tr>";
       }
      }
     }
     
    ?>
    </form>
    et ma page d'exécution de la requête de mise à jour (pour le moment j'essai d'afficher les valeurs de mes variables pour voir si je récup les bonnes valeurs.

    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
    <?php 
     
    if(isset($_POST['submit'])) {
       // Réecriture des variables
       $ref_article=$_POST['ref'];
       $nom_article=$_POST['nomart'];
       $qte_vincent=$_POST['qtevince'];
       $qte_peggy=$_POST['qtepeggy'];
       $qte_benoit=$_POST['qtebenoit'];
       $img_article=$_POST['imgart'];
       $num_article=$_POST['numarticle'];
     
    echo .$ref_article.;
    echo .$qte_vincent.;
     
    }
     
    ?>
    Merci d'avance

  2. #2
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Par défaut
    Bonjour,

    tu as un seul <form>, mais autant de <input> (type="submit", name="...") que de lignes.
    Ça ne peut pas fonctionner.
    Tel quel, tu ne peux récupérer que les données de la 1ère ligne.

    Généralement, on met un lien sur chaque ligne, avec l'id de la ligne à modifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	echo "<a href='modifier_article.php?id=".$row['id_article']."'/>Modifier</a>";
    Et dans modifier_article.php :
    • on récupère l'id avec $_GET['id'],
    • on récupère les données de CET article dans la Bdd
    • on affiche le formulaire

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2020
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2020
    Messages : 54
    Par défaut
    Je ne récupère même pas les données de la premiere ligne.

    Et il faut que je crée un form par colonne de ma table article ?

    Car ce formulaire sert a mettre à jour l'article de ma table article.

  4. #4
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Par défaut
    1- Affichage de TOUS les articles :



    2- Au clic sur un lien -> dans modifier_article.php :

    • on récupère l'id de l'article à modifier avec $id_article = $_GET['id'],
    • on récupère les données de CET article dans la Bdd
    • on affiche un formulaire :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <form method="post" action="traiter_article.php">
       <input type="hidden" name="id_article" value="<?= $id_article; ?>" />
    ...
     <!-- affichage des autres <input>,... pour les autres données de l'article -->
    ...
    </form>
    3- Traitement du formulaire

    • on récupère l'id de l'article à modifier avec $id_article = $_POST['id'],
    • ainsi que les autres champs via $_POST
    • UPDATE SQL

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2020
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2020
    Messages : 54
    Par défaut
    Merci pour le coup de main

    Donc si je reprends ce que tu me dis.

    Je récupère les articles dans ma table ARTICLE (page stock.php) et je les affiches

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    <html>
    <head>
    <style>
    td {
    	border-left: 1px solid #2471A3;
    	border-right: 1px solid #2471A3;
    	border-top: 1px solid #2471A3;
    	border-bottom: 1px solid #2471A3;
    }
    </style>
    </head>
    <body width="1920" align="center">
     
    <h2 align="center">Etat des stocks</h2>	
    	<table width="100%" border="0" colspan="0" leftmargin="0">
    	<td width='15%' align='center'><b>Ref Article</b></td>
    	<td width='50%' align='center'><b>Nom Article</b></td>
    	<td width='10%' align='center'><b>Image</b></td>
    	<td width='7%' align='center'><b>Qte Vincent</b></td>
    	<td width='7%' align='center'><b>Qte Peggy</b></td>
    	<td width='7%' align='center'><b>Qte Benoit</b></td>
    	<td width='4%' align='center'><b>Action</b></td>
     
    <?php 
     
    $serverName = "localhost";     
    $userName = "root";  
    $password = "xxxxxxxxxx"; 
    $dbName = "consommables";  
    $connexion = mysqli_connect($serverName, $userName, $password, $dbName);
    if ($connexion) {
     // Effectuer la requête
    $variable = $_GET['param'];
     $query = "SELECT * FROM ARTICLE INNER JOIN FOURNISSEUR 
    	   ON ARTICLE.num_four=FOURNISSEUR.num_four 
    	   WHERE ARTICLE.num_four=$variable";
     $result = mysqli_query($connexion, $query);
     
    // Afficher les lignes du tableau en fonction de la réponse à la requête
     if ($result) {
      if (mysqli_num_rows($result) > 0) {
       while($row = mysqli_fetch_assoc($result)) {
     
    	echo "<table width='100%' border='0'>";
    	echo "<tr>";
    	echo "</br>";
    	echo "<td width='15%'>".$row['ref_article']."</td>";
    	echo "<td width='50%' align='left'>".$row['nom_article']."</td>";
    	echo "<td width='10%' align='center'><img src='images/".$row['nom_four']."/".$row['img_article']."'></td>";
    	echo "<td width='7%' align='center'>".$row['qte_vincent']."</td>";
    	echo "<td width='7%' align='center'>".$row['qte_peggy']."</td>";
    	echo "<td width='7%' align='center'>".$row['qte_benoit']."</td>";
    	echo "<td width='4%' align='center'><a href='modif.php?param=".$row['num_article']."'><img src='images/update.png' title='Mettre &agrave; jour les quantit&eacute;s'></a></td>";
    	echo "</tr>";
    	echo "</table>";
    }
    }
    }
     
    }
    ?>
    </table> 
    </body>
    </html>
    J'ai mis un lien en bout de ligne sur une image qui m'envoie vers la page modif.php, sur cette page je récupère le numéro de l'article à modifier et j'affiche les champs (seul les champs quantité sont modifiables)

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    <html>
    <body>
    <table width="1024" height="768" align="center" border="0">
    <td align="center">		
    <table width="1000" height="300" border="0">
     
    <?php
     
    $serverName = "localhost";     
    $userName = "root";  
    $password = "xxxxxxxxx"; 
    $dbName = "consommables";  
    $connexion = mysqli_connect($serverName, $userName, $password, $dbName);
    if ($connexion) {
     // Effectuer la requête
    $variable = $_GET['param'];
    ?>
     
    <form action='modification.php' method='POST'>
     
    <?php
     
     $query = "SELECT * FROM ARTICLE 
    	   INNER JOIN FOURNISSEUR 
    	   ON ARTICLE.num_four=FOURNISSEUR.num_four 
    	   WHERE num_article = $variable ";
     $result = mysqli_query($connexion, $query);
     
     // Afficher les lignes du tableau en fonction de la réponse à la requête
     if ($result) {
      if (mysqli_num_rows($result) > 0) {
       while($row = mysqli_fetch_assoc($result)) {
     
    	echo "<tr>";
    	echo "</br></br>";
    	echo "<td height='1%' align='right'></td>";
    	echo "<td height='1%' align='left'><font size='6'>Mettre &agrave; jour un article</font></td>";
    	echo "</tr>";
     
     
    	echo "<tr>";
    	echo "</br></br>";
    	echo "<td height='1%' align='right'>R&eacute;f&eacute;rence de l'article : </td><td><input type='text' disabled='disabled' name='ref' value='".$row['ref_article']."'/></td>";
    	echo "</tr>";
     
    	echo "</br></br>";
    	echo "<tr>";
    	echo "<td height='1%' align='right'>Description de l'article : </td><td><textarea disabled='disabled' name='nomart' rows='5' cols='50'>".$row['nom_article']."</textarea></td>";
    	echo "</tr>";
     
    	echo "</br></br>";
    	echo "<tr>";
    	echo "<td height='1%' align='right'>Quantit&eacute; de Vincent :</td> <td><input type='text' name='qtevince' value='".$row['qte_vincent']."'/></td>";
    	echo "</tr>";
     
    	echo "</br></br>";
    	echo "<tr>";
    	echo "<td height='1%' align='right'>Quantit&eacute; de Peggy :</td> <td><input type='text' name='qtepeggy' value='".$row['qte_peggy']."'/></td>";
    	echo "</tr>";
     
    	echo "</br></br>";
    	echo "<tr>";
    	echo "<td height='1%' align='right'>Quantit&eacute; de Benoit :</td><td> <input type='text' name='qtebenoit' value='".$row['qte_benoit']."'/></td>";
    	echo "</tr>";
     
    	echo "</br></br>";
    	echo "<tr>";
    	echo "<td height='1%' align='right'>Image :</td><td> <input type='text' disabled='disabled' name='imgart' value='".$row['img_article']."'/></td>";
    	echo "</tr>";
     
    	echo "</br></br>";
    	echo "<tr>";
    	echo "<td height='1%' align='right'>Fournisseur :</td>";
    	echo "<td height='1%' align='left'>
    		<input disabled='disabled' type='text' name='fournisseur' value='".$row['nom_four']."'/>
    	      </td>";
    	echo "</tr>";
     
    	echo "<tr height='1'>";
    	echo "<input type='hidden' name='numarticle' value='".$row['num_article']."'/>";
    	echo "</tr>";
     
     	echo "</br></br>";
    	echo "<tr>";
    	echo "<td height='1%' align='right'><input name='submit' type='submit' value='Envoyer'></td>";
    	echo "</tr>";
       }
      }
     }
     
    ?>
    </form>
     
    <?php 
     // Fermer la connexion
     mysqli_close($connexion);
    }
    ?>
     
    </table> 
    </td>
    </table>
    </body>
    </html>
    et pour finir dans ma page d'envoi des modifications quand j'essaies d'afficher mes variables pour voir si tout se passe bien , rien ne s'affiche.

    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
    <?php 
     
    if(isset($_POST['submit'])) {
       // Réecriture des variables
       $ref_article=$_POST['ref'];
       $nom_article=$_POST['nomart'];
       $qte_vincent=$_POST['qtevince'];
       $qte_peggy=$_POST['qtepeggy'];
       $qte_benoit=$_POST['qtebenoit'];
       $img_article=$_POST['imgart'];
       $num_article=$_POST['numarticle'];
     
    echo .$ref_article.;
    echo .$qte_vincent.;
     
    }
     
    ?>
    C'est un test que je veux faire avant de faire mon UPDATE pour voir si tout se déroule bien.

  6. #6
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Par défaut
    Bonjour,

    1- il faut revoir la structure d'une <table> HTML.
    (pas de <br/> entre <tr> et <td> !)

    2- Pourquoi utiliser mysqli_, alors que PDO est le standard ?



    3- $variable = $_GET['param']; il s'agit de num_article !
    Reste cohérent dans les noms des variables !

Discussions similaires

  1. [AC-2007] Mise à jour table via fichiers Excel differents
    Par sebing dans le forum VBA Access
    Réponses: 3
    Dernier message: 06/07/2011, 22h36
  2. Réponses: 1
    Dernier message: 19/11/2007, 19h27
  3. Mise a jour Tables via Formulaire
    Par farma dans le forum Modélisation
    Réponses: 4
    Dernier message: 24/07/2007, 17h49
  4. annuler mise à jour table à partir formulaire
    Par Daniel MOREAU dans le forum VBA Access
    Réponses: 3
    Dernier message: 05/07/2007, 06h57
  5. Mise à jour de tables via formulaire
    Par sunwind dans le forum IHM
    Réponses: 4
    Dernier message: 09/12/2006, 20h09

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