Le problème avec ce type de notation c'est de savoir ou tu en ai. À priori tu peux pas savoir ou tu commence ni ou faut s'arrêter.
Ce n'est une bonne idée que lorsque le nom n'est pas trop significatif.
Utilisé plutôt la notation tableau (par exemple name="etat[]" et name="idTache[]")
À partir de la tu obtient des tableaux dans $_POST ($_POST['etat'] et $_POST['idTache']).
Le traitement du formulaire est "simple" tu parcourt l'un des tableaux avec la boucle foreach et fait un update dans la boucle.
exemple
<form action="" method="post">
<input type="hidden" name="idTache[]" value=" ...." />
<select name="etat[]"><option value="en cours">en cours</option><option value="finie">finie</option>
</select>
<input type="submit" />
</form>
validation
<?php
if (!empty($_POST['etat']) && !empty($_POST['idTache'])) {
if (is_array($_POST['etat'])) && is_array($_POST['idTache']){
foreach($_POST[idTache'] as $id => $key) {
// requete SQL le mieux c'est une requete préparée
}
}
}
?>
Autre possibilité tu force les clefs du tableau et les utilisent pour la requete
par exemple
<form action="" method="post">
<?php
// requete sql
while($data = mysql_query($sql)) {
echo $data['truc'].'<br />';
echo '<select name="etat['.$data['idTache'] .']"><option value="en cours">en cours</option><option value="finie">finie</option></select><br />';
}
?>
<input type="submit" />
</form>
Validation
<?php
if (!empty($_POST['etat']) && is_array($_POST['etat'])) {
$pdo = new PDO('mysql:host=leserveurmysql;dbname=leNomDeLaBase;','user','passwd');
$stmt = $pdo->prepare('update table set etat=:etat where idTache=:idTache');
foreach($_POST['etat'] as $key => $value) {
$stmt->execute(array(
':etat'=>$value,
':idTache'=>$key
));
}
}
?>
Perso j'utiliserais plutôt une Checkbox pour indiquer s'il faut changer d'état afin d'éviter les requête inutile.
@+
Le problème avec ce type de notation c'est de savoir ou tu en ai. À priori tu peux pas savoir ou tu commence ni ou faut s'arrêter.
Ce n'est une bonne idée que lorsque le nom n'est pas trop significatif.
Utilisé plutôt la notation tableau (par exemple name="etat[]" et name="idTache[]")
À partir de la tu obtient des tableaux dans $_POST ($_POST['etat'] et $_POST['idTache']).
Le traitement du formulaire est "simple" tu parcourt l'un des tableaux avec la boucle foreach et fait un update dans la boucle.
exemple
[html]
<form action="" method="post">
<input type="hidden" name="idTache[]" value=" ...." />
<select name="etat[]"><option value="en cours">en cours</option><option value="finie">finie</option>
</select>
<input type="submit" />
</form>
[/html]
validation
[php]
<?php
if (!empty($_POST['etat']) && !empty($_POST['idTache'])) {
if (is_array($_POST['etat'])) && is_array($_POST['idTache']){
foreach($_POST[idTache'] as $id => $key) {
// requete SQL le mieux c'est une requete préparée
}
}
}
?>
[/php]
Autre possibilité tu force les clefs du tableau et les utilisent pour la requete
par exemple
[php]
<form action="" method="post">
<?php
// requete sql
while($data = mysql_query($sql)) {
echo $data['truc'].'<br />';
echo '<select name="etat['.$data['idTache'] .']"><option value="en cours">en cours</option><option value="finie">finie</option></select><br />';
}
?>
<input type="submit" />
</form>
Validation
<?php
if (!empty($_POST['etat']) && is_array($_POST['etat'])) {
$pdo = new PDO('mysql:host=leserveurmysql;dbname=leNomDeLaBase;','user','passwd');
$stmt = $pdo->prepare('update table set etat=:etat where idTache=:idTache');
foreach($_POST['etat'] as $key => $value) {
$stmt->execute(array(
':etat'=>$value,
':idTache'=>$key
));
}
}
?>
[/php]
Perso j'utiliserais plutôt une Checkbox pour indiquer s'il faut changer d'état afin d'éviter les requête inutile.
@+