Faire un UPDATE uniquement pour les checkbox modifiées
Posté : 27 févr. 2012, 10:53
Bonjour,
Je cherche une méthode pour faire un update via PHP mais uniquement des checkbox que la personne aura modifiés pas de l'ensemble des checkbox.
Voilà à quoi ressemble le formulaire:

Voilà à quoi ressemble ma base de données :

Et voilà mon code :
Donc pour la partie :
Comment arriver à ne faire l'UPDATE que sur les valeurs qui sont modifiées ?
Parce que là je vous ai simplifié le formulaire mais dans la réalité j'ai environ 50 checkbox différente et il serait inutile et lourd de faire l'update sur les 50 systématiquement. De plus je veux pouvoir envoyer un email d'information qui avertira des changements et uniquement des changements.
Comment faire ?
Merci d'avance.
Je cherche une méthode pour faire un update via PHP mais uniquement des checkbox que la personne aura modifiés pas de l'ensemble des checkbox.
Voilà à quoi ressemble le formulaire:

Voilà à quoi ressemble ma base de données :

Et voilà mon code :
Code : Tout sélectionner
<?php
include('include/cnx_mysql.php');
// ON VERIFIE SI IL Y A DEJA DES DONNEES POUR CETTE PERSONNE
$sql = 'SELECT COUNT(*) FROM test WHERE id_user = "5"';
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$data_count = mysql_fetch_row($req);
$number_of_rows = $data_count[0];
mysql_free_result($req);
// ON RECUPERE LES DONNEES POUR COCHER LES CASES DEJA ENREGISTREES
if(isset($_POST['id_user'])) {
if (isset($_POST['plage1'])) {$plage1 = 1;} else {$plage1 = 0;}
if (isset($_POST['plage2'])) {$plage2 = 1;} else {$plage2 = 0;}
if (isset($_POST['plage3'])) {$plage3 = 1;} else {$plage3 = 0;}
if (isset($_POST['plage4'])) {$plage4 = 1;} else {$plage4 = 0;}
// SI LA PERSONNE A DEJA DES DONNEES ON FAIT UN UPDATE
if ($number_of_rows !=0) {
$sql = 'UPDATE test SET plage1="'.$plage1.'", plage2="'.$plage2.'", plage3="'.$plage3.'", plage4="'.$plage4.'" WHERE id_user=5';
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
mysql_close();
echo "Modification effectuée";
}
// SI NON ON FAIT UN INSERT
else {
$sql = 'INSERT INTO test(id,id_user,plage1,plage2,plage3,plage4) VALUES("","5","'.$plage1.'","'.$plage2.'","'.$plage3.'","'.$$plage4.'")';
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
mysql_close();
echo "Enregistrement effectué";
}}
if ($number_of_rows !=0) {
include('include/cnx_mysql.php');
$sql = 'SELECT * FROM test WHERE id_user = "5"';
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$data = mysql_fetch_assoc($req);
mysql_close();
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<title>Test</title>
</head>
<body>
<form method="post" action="<?php echo $_SERVER['REQUEST_URI'];?>">
<p>
Cocher vos disponibilités :<br />
<input type="checkbox" name="plage1" id="plage1" <?php if ($data['plage1'] == 1) {echo "checked";} ?> /> <label for="plage1">00h - 06h</label><br />
<input type="checkbox" name="plage2" id="plage2" <?php if ($data['plage2'] == 1) {echo "checked";} ?> /> <label for="plage2">06h - 12h</label><br />
<input type="checkbox" name="plage3" id="plage3" <?php if ($data['plage3'] == 1) {echo "checked";} ?> /> <label for="plage3">12h - 18h</label><br />
<input type="checkbox" name="plage4" id="plage4" <?php if ($data['plage4'] == 1) {echo "checked";} ?> /> <label for="plage4">18h - 00h</label><br />
<input type="hidden" name="id_user" id="id_user" />
<input type="submit" value="Envoyer" />
</p>
</form>
</body>
</html>
Code : Tout sélectionner
$sql = 'UPDATE test SET plage1="'.$plage1.'", plage2="'.$plage2.'", plage3="'.$plage3.'", plage4="'.$plage4.'" WHERE id_user=5'; Parce que là je vous ai simplifié le formulaire mais dans la réalité j'ai environ 50 checkbox différente et il serait inutile et lourd de faire l'update sur les 50 systématiquement. De plus je veux pouvoir envoyer un email d'information qui avertira des changements et uniquement des changements.
Comment faire ?
Merci d'avance.