OK, je vais essayer d'expliquer clairement. Voici la structure de la table qui s'appelle l_met_scomp :
id | codemet | codecat | codescomp | niveau | precedent
1 | 2 | 2 | 1 | 4 | 0
2 | 2 | 2 | 2 | 3 | 0
3 | 2 | 3 | 3 | 2 | 0
4 | 2 | 3 | 4 | 2 | 0
5 | 3 | 1 | 2 | 3 | 0
6 | 3 | 1 | 4 | 3 | 0
Voilà le bout de code de la page ou l'utilisateur saisie les valeurs :
<tr>
<th>Catégorie</th>
<th>Compétences spécifiques</th>
<th>Précédente</th>
<th>Evaluation</th>
<th>Cible</th>
</tr>
<?php
$req = $bdd->query('SELECT categorie.libcat, scompetence.libscomp, scompetence.defscomp, l_met_scomp.niveau, l_met_scomp.precedent, l_met_scomp.codecat, l_met_scomp.codescomp, l_met_scomp.id FROM categorie, scompetence, l_met_scomp, metier WHERE l_met_scomp.codemet = '.$_SESSION['met'].' AND l_met_scomp.codemet = metier.codemet AND l_met_scomp.codecat = categorie.codecat AND l_met_scomp.codescomp = scompetence.codescomp');
while ($donnees = $req->fetch())
{
?>
<tr>
<td><?php echo $donnees['libcat']; ?></td>
<td><p onmouseover="montre('<?php echo addslashes($donnees['defscomp']); ?>');" onmouseout="cache();"><?php echo $donnees['libscomp']; ?></td>
<td><?php echo $donnees['precedent']; ?></td>
<td><input type="text" name="eval[]" id="eval[]" size="2" maxlength="1" tabindex="5" /></td>
<td><?php echo $donnees['niveau']; ?></td>
</tr>
<?php
$_SESSION['id']=$donnees['id'];
Donc là l'utilisateur saisie des valeurs sur la ligne <input type="text" name="eval[]" id="eval[]" size="2" maxlength="1" tabindex="5" />.
Ensuite, voilà le bout de code de la page qui fait la mise à jour dans la base :
$eval=$_POST['eval'];
foreach($eval as $element)
{
echo $element.'<br /><br />';
// On se connecte à MySQL
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=test_stage', 'root', '*****', $pdo_options);
$bdd->exec('UPDATE l_met_scomp SET precedent='.$element.' WHERE id='.$_SESSION['id'].'');
A l'éxécution de cette requête j'aimerai que les valeurs qui ont été saisies par l'utilisateur mettent à jour la colonne precedent pour les lignes concernées, hors seul la dernière ligne se met à jour.
Exemple avec la structure de la table que j'ai donné plus haut :
Le nombre de valeur à saisir dépend du métier, donc si on prend le métier qui a pour code 2, l'utilisateur devra saisir 4 valeurs.
Supposons qu'il saisisse 2, 4, 3 et 1, losrqu'il va cliquer sur le bouton valider, seule la dernière ligne (qui a pour identifiant 4 va se mettre à jour).
Voilà j'espère que c'est assez clair et que quelqu'un pourra m'aider.