Affichage des données d'un tableau sur un formulaire

Eléphanteau du PHP | 11 Messages

11 sept. 2022, 10:02

Bonjour,

débutant en php, j'essai de m'initier directement en montant petit une application web.

J'ai réussi à afficher un tableau issu de alimenté dans php admin mais je souhaiterai l'alimenter maintenant avec un formulaire.

Quand j'essai de modifier une ligne du tableau via un bouton modifier, il m'affiche sur le formulaire toujours le même numéro c'est-à-dire la première ligne.

Je vous envoi des morceaux de code pour pouvoir m'aider (ps : le form est loin d'être finalisé, je teste juste sur le premier Input) :

1/ code de connexion (fichier de connexion en php):

Code : Tout sélectionner

<?php $conn = ""; try { $servername = "localhost"; $dbname = "gretaweb"; $username = "root"; $password = ""; $conn = new PDO( "mysql:host=$servername; dbname=gretaweb", $username, $password ); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { echo "Echec de connexion: " . $e->getMessage(); } ?>
1/ extrait de code du formulaire :

Code : Tout sélectionner

<?php require_once('connexion.php'); // modification des données if ($_SERVER['REQUEST_METHOD'] == 'POST') { // création de la requête $sql = "UPDATE fc_conventions SET num_conv = :num_conv WHERE id = :id"; $statement = $db->prepare($sql); // envoi des requêtes foreach ($_POST['id'] as $id) { $num_conv = $_POST['num_conv'][$id] ?? ''; $statement->execute(compact('id', 'num_conv')); } } // création de la requête $sql = "SELECT * FROM fc_conventions"; // envoi de la requête $statement = $conn->prepare($sql); $statement->execute(); $listeConventions = $statement->fetchAll(PDO::FETCH_OBJ); ?> <!DOCTYPE html> <html>
puis....

Code : Tout sélectionner

div class="main-container"> <div class="pd-ltr-20 xs-pd-20-10"> <div class="min-height-200px"> <div class="pd-20 card-box mb-30"> <div class="clearfix"> <h4 class="text-blue h4">Suivi des conventions</h4> <p class="mb-30">Formation Continue</p> </div> <div class="wizard-content"> <form class="tab-wizard wizard-circle wizard" action='' method='post'> <h5>Identification de l'action</h5> <section> <?php foreach ($listeConventions as $convention) { ?> <div class="row"> <input type="hidden" value="<?= $convention->id; ?>" name="id[]" /> <div class="col-md-3"> <div class="form-group"> <label>N° convention :</label> <input type="text" class="form-control" id="num_conv" name='num_conv' data-mask="99999" size="5" maxlength="5" placeholder="Numéro de convention" value="<?= $convention->num_conv; ?>" name="num_conv[<?= $convention->id; ?>]" /> </div> </div>

Merci pour l'aide apportée.

Mammouth du PHP | 2703 Messages

11 sept. 2022, 14:13

que vaut
print_r($listeConventions);
avant le foreach ?

quel est le code html (ctrl + u) généré par ce code php, dans la boucle foreach ?

Eléphanteau du PHP | 11 Messages

11 sept. 2022, 14:28

Cela affiche ceci avec le print_r :

<code>
Array ( [0] => stdClass Object ( [id] => 1 [num_conv] => 0000 [date_debut] => 2022-06-20 [date_fin] => 2022-06-20 [status] => 2 [statut_admin] => 1 [statut_financ] => 1 [contrat_progre] => 0 [pec_opco] => 0 [bc] => 0 [contact_at] => 2 [contact_rd] => 0 [contact_sg] => 1 [delete_flag] => 0 [date_created] => 2022-06-20 22:01:58 [date_updated] => 2022-09-11 09:30:14 ) [1] => stdClass Object ( [id] => 3 [num_conv] => 12999 [date_debut] => 2022-08-01 [date_fin] => 2027-08-25 [status] => 1 [statut_admin] => 0 [statut_financ] => 0 [contrat_progre] => 0 [pec_opco] => 0 [bc] => 0 [contact_at] => 4 [contact_rd] => 0 [contact_sg] => 0 [delete_flag] => 0 [date_created] => 2022-08-19 21:44:35 [date_updated] => 2022-08-23 21:31:49 ) [2] => stdClass Object ( [id] => 4 [num_conv] => 11888 [date_debut] => 2021-09-01 [date_fin] => 2022-09-13 [status] => 1 [statut_admin] => 0 [statut_financ] => 1 [contrat_progre] => 0 [pec_opco] => 0 [bc] => 0 [contact_at] => 9 [contact_rd] => 0 [contact_sg] => 0 [delete_flag] => 0 [date_created] => 2022-08-19 21:46:26 [date_updated] => 2022-09-11 12:02:54 ) [3] => stdClass Object ( [id] => 6 [num_conv] => 14333 [date_debut] => 2022-08-07 [date_fin] => 2022-08-31 [status] => 1 [statut_admin] => 0 [statut_financ] => 0 [contrat_progre] => 0 [pec_opco] => 0 [bc] => 0 [contact_at] => 1 [contact_rd] => 0 [contact_sg] => 0 [delete_flag] => 0 [date_created] => 2022-08-19 21:49:27 [date_updated] => 2022-09-10 19:22:33 ) [4] => stdClass Object ( [id] => 7 [num_conv] => 14556 [date_debut] => 2022-09-15 [date_fin] => 2022-09-29 [status] => 1 [statut_admin] => 0 [statut_financ] => 0 [contrat_progre] => 0 [pec_opco] => 0 [bc] => 0 [contact_at] => 0 [contact_rd] => 0 [contact_sg] => 0 [delete_flag] => 0 [date_created] => 2022-08-19 21:49:27 [date_updated] => 2022-08-19 21:49:27 ) [5] => stdClass Object ( [id] => 8 [num_conv] => 14547 [date_debut] => 2022-08-15 [date_fin] => 2022-08-29 [status] => 1 [statut_admin] => 1 [statut_financ] => 0 [contrat_progre] => 0 [pec_opco] => 0 [bc] => 0 [contact_at] => 3 [contact_rd] => 0 [contact_sg] => 1 [delete_flag] => 0 [date_created] => 2022-08-19 21:50:21 [date_updated] => 2022-09-10 19:22:38 ) [6] => stdClass Object ( [id] => 9 [num_conv] => 12445 [date_debut] => 2022-08-21 [date_fin] => 2022-08-28 [status] => 1 [statut_admin] => 0 [statut_financ] => 0 [contrat_progre] => 0 [pec_opco] => 0 [bc] => 0 [contact_at] => 0 [contact_rd] => 0 [contact_sg] => 0 [delete_flag] => 0 [date_created] => 2022-08-19 21:50:21 [date_updated] => 2022-08-19 21:50:21 ) [7] => stdClass Object ( [id] => 10 [num_conv] => 12000 [date_debut] => 2022-08-07 [date_fin] => 2022-08-07 [status] => 1 [statut_admin] => 0 [statut_financ] => 1 [contrat_progre] => 0 [pec_opco] => 0 [bc] => 0 [contact_at] => 5 [contact_rd] => 0 [contact_sg] => 0 [delete_flag] => 0 [date_created] => 2022-08-19 21:51:06 [date_updated] => 2022-09-10 19:22:45 ) [8] => stdClass Object ( [id] => 11 [num_conv] => 11111 [date_debut] => 2022-08-14 [date_fin] => 2022-08-14 [status] => 1 [statut_admin] => 0 [statut_financ] => 0 [contrat_progre] => 0 [pec_opco] => 0 [bc] => 0 [contact_at] => 0 [contact_rd] => 0 [contact_sg] => 0 [delete_flag] => 0 [date_created] => 2022-08-19 21:51:06 [date_updated] => 2022-08-19 21:51:06 ) [9] => stdClass Object ( [id] => 12 [num_conv] => 12444 [date_debut] => 2022-08-25 [date_fin] => 2022-08-25 [status] => 1 [statut_admin] => 0 [statut_financ] => 0 [contrat_progre] => 0 [pec_opco] => 0 [bc] => 0 [contact_at] => 0 [contact_rd] => 0 [contact_sg] => 0 [delete_flag] => 0 [date_created] => 2022-08-25 21:23:02 [date_updated] => 2022-08-25 21:23:02 ) [10] => stdClass Object ( [id] => 13 [num_conv] => 22222 [date_debut] => 2022-08-25 [date_fin] => 2022-08-25 [status] => 1 [statut_admin] => 0 [statut_financ] => 0 [contrat_progre] => 0 [pec_opco] => 0 [bc] => 0 [contact_at] => 0 [contact_rd] => 0 [contact_sg] => 0 [delete_flag] => 0 [date_created] => 2022-08-25 21:24:01 [date_updated] => 2022-08-25 21:24:01 ) [11] => stdClass Object ( [id] => 14 [num_conv] => 33333 [date_debut] => 2022-08-25 [date_fin] => 2022-08-25 [status] => 1 [statut_admin] => 0 [statut_financ] => 0 [contrat_progre] => 0 [pec_opco] => 0 [bc] => 0 [contact_at] => 0 [contact_rd] => 0 [contact_sg] => 0 [delete_flag] => 0 [date_created] => 2022-08-25 21:24:51 [date_updated] => 2022-08-25 21:24:51 ) [12] => stdClass Object ( [id] => 15 [num_conv] => 41411 [date_debut] => 2022-08-25 [date_fin] => 2022-08-25 [status] => 1 [statut_admin] => 0 [statut_financ] => 0 [contrat_progre] => 0 [pec_opco] => 0 [bc] => 0 [contact_at] => 0 [contact_rd] => 0 [contact_sg] => 0 [delete_flag] => 0 [date_created] => 2022-08-25 21:25:04 [date_updated] => 2022-08-25 21:25:04 ) [13] => stdClass Object ( [id] => 16 [num_conv] => 12345 [date_debut] => 2022-08-25 [date_fin] => 2022-08-25 [status] => 1 [statut_admin] => 0 [statut_financ] => 0 [contrat_progre] => 0 [pec_opco] => 0 [bc] => 0 [contact_at] => 0 [contact_rd] => 0 [contact_sg] => 0 [delete_flag] => 0 [date_created] => 2022-08-25 21:25:15 [date_updated] => 2022-08-25 21:25:15 ) )
</code>

Eléphanteau du PHP | 11 Messages

12 sept. 2022, 19:53

Bonjour,

j'ai changé l'endroit de la fin de la boucle foreach ...

Code : Tout sélectionner

<?php foreach ($listeConventions as $convention) { ?> <input type="hidden" value="<?= $convention->id; ?>" name="id[]" /> <input type="text" class="form-control" id="num_conv" name='num_conv' data-mask="99999" size="5" maxlength="5" placeholder="Numéro de convention" value="<?= $convention->num_conv; ?>" name="num_conv[<?= $convention->id; ?>]" /> <?php } ?>

L'affichage de chaque ligne du tableau sur l'imput se fait bien mais il m'affiche tous les imputs de toutes les lignes du tableau.
Je ne voudrai que cela affiche l'imput correspondant à la ligne que je veux modifier...

Merci.

Mammouth du PHP | 2703 Messages

12 sept. 2022, 20:29

dans ce cas, il faut commencer par faire une liste et pouvoir sélectionner l'item souhaité. enuiste, une page avec le formulaire.

Eléphanteau du PHP | 11 Messages

12 sept. 2022, 20:53

c'est ce que j'ai fait j'ai une page php avec mon tableau et depuis ce tableau j'appelle la page formulaire php.

Pour chaque ligne j'ai un bouton modifier et je voudrai récupérer dans le formulaire chaque donnée de cette ligne pour éventuellement les modifier pour les mettre à jour dans le tableau.

Mammouth du PHP | 2703 Messages

12 sept. 2022, 21:00

$sql = "SELECT * FROM fc_conventions";
// envoi de la requête
$statement = $conn->prepare($sql);
$statement->execute();
$listeConventions = $statement->fetchAll(PDO::FETCH_OBJ);

ça sert à afficher toutes les conventions.

quelque chose comme :
$sql = "SELECT * FROM fc_conventions where id = ?";
// envoi de la requête
$statement = $conn->prepare($sql);
$statement->execute([$id]);
sert à récupérer les données d'une convention, et par exemple, d'afficher un formulaire avec les champs pré-remplis pour une modification.

Eléphanteau du PHP | 11 Messages

13 sept. 2022, 18:22

Bonjour,

merci pour cette réponse.

Et, du coup, au niveau de l'input, je met quoi ?

Désolé mais j'essai d'apprendre en même temps.

Merci pour votre aide.