Bonjour,
Je ne suis pas d'accord avec psychadelic.
On peut très bien modifier les valeurs en base de données à partir d'un click dans une cases.
Pour cela, il faut utiliser un script JavaScript/jQuery qui :
- modifiera l'aspect du bouton dans la table (oui<-->non)
- via Ajax, appellera un fichier PHP externe qui se chargera de modifier la valeur en bdd.
Par contre, il faut pouvoir identifier quelle ligne et quelle valeur il faut modifier !
Pour ça, il faut un "identifiant" au niveau de la case du tableau
Au fait :
1 2 3 4 5 6 7 8
| <td> <?php if ( $row['banane'] == 'oui' )
{
echo '<div class="oui">'.$row['banane'].'</div>';
}
elseif ( $row['banane'] == 'non' )
{
echo '<div class="non">'.$row['banane'].'</div>';
} ?></td> |
Puisque $row['banane'] prend les valeurs 'oui' et 'non', ça s'écrit tout simplement :
<td><div class="<?php echo $row['banane']; ?>"><?php echo $row['banane']; ?></div></td>
On peut alors écrire (par exemple) :
<td><div class="<?php echo $row['banane']; ?>" data-id="<?php echo $row['id']; ?>" data-col="banane" data-val="<?php echo $row['banane']; ?>" onclick="changeValueBdd(this);"><?php echo $row['banane']; ?></div></td>
Et la fonction JavaScript :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| function changeValueBdd( div )
{
// div : ce div (qui a été clické)
// --------------------
// id : index auto-incrémenté de la ligne à modifier
var id = div.dataset.id;
// col : nom de la colonne à modifier
var col = div.dataset.col;
// oldval : ancienne valeur
var oldval = div.dataset.val;
// newval : nouvelle valeur
var newval = (oldval == 'oui')? 'non' : 'oui';
// --------------------
// 1- on fait appel à Ajax : on transmet id, col et newval au fichier PHP qui effectuera l UPDATE en Bdd
// ...
// --------------------
// 2- on modifie le bouton
div.textContent = newval;
div.classList.toggle('non');
div.classList.toggle('oui');
div.setAttribute('data-val',newval);
// --------------------
} |
Pour l'appel Ajax, je te renvoie aux cours : cours et tutoriels pour apprendre l'AJAX
Partager