par
vicente » 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.
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]
<?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();
}
?>
[/code]
1/ extrait de code du formulaire :
[code]
<?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>
[/code]
puis....
[code]
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>
[/code]
Merci pour l'aide apportée.