Gestion absence probléme
- Accueil
- Forum
- Programmation
- PHP
- Gestion absence probléme
PrimFX Le 17 août 2020 à 18:21 (Édité le 1 janvier 1970 à 01:00)
Bonjour @soufiane-zaam,
Est-ce que je peux te demander d'éditer ton message pour y ajouter une petite formule de politesse ainsi que des informations sur le problème que tu rencontres ? Dans le cas contraire, ton topic risque d'être supprimé par la modération du site sous peu (voir Règles du forum) 😕
Merci d'avance 😉
A bientôt,
Boris
PrimFX Le 17 août 2020 à 19:08 (Édité le 1 janvier 1970 à 01:00)
Merci !
Je vois déjà quelques points qui mériteraient d'être revus / ajustés dans ton code :
- Pour éviter toute faute de frappe, je te conseille d'utiliser uniquement des variables sans caractères spéciaux. Par exemple, tu peux remplacer
$présence
par$presence
- Ton
if(isset($_POST['Marquer']))
ne sera malheureusement jamais vrai : si tu souhaites vérifier si le formulaire a été posté, c'est plutôtif(isset($_POST['submit']))
que tu devrais faire. Je te conseille d'ajouter unvar_dump($_POST)
juste après tonsession_start()
: ça pourra t'aider à débugguer 😉 - En faisant
$reqall->execute(array($présence,$_SESSION['ID']));
, tu as deux valeurs dans l'exécution contre un seul?
dans ta requête : ça ne peut pas fonctionner. Il faut également un moyen de passer au tableau$_POST['presence']
l'ID de la ou des personne(s) marquée(s) comme présente(s). Tu peux faire ça en ajoutant par exemple une valeur à tes boutons "option" avec l'attributvalue="<?= $allinfo['ID'] ?>"
. - Puisque plusieurs personnes peuvent être marquées présentes ou absentes d'un coup, il faudra traiter ça dans tes requêtes : tu peux le faire en utilisant des boucles (moins efficace mais plus simple à mettre en place) ou bien avec une requête SQL un peu plus complexe utilisant la clause
IN
(... WHERE ID IN (<ta liste d'IDs>) ...
). - Le mieux serait de récupérer tes utilisateurs de la base de données après avoir fait tes mises à jour des présences et absences (pour que les valeurs soient mises à jour en "temps réel").
- Il me semble que ton
foreach
dans le tableau est au mauvais endroit (il devrait être avant la balise<tr>
)
Voici un petit exemple de ce à quoi pourrait ressembler ton script; je ne l'ai pas testé mais ça te permettra déjà d'avoir plusieurs pistes pour modifier & débugguer le tien 😉
<?php
session_start();
$bdd=new PDO('mysql:host=localhost;dbname=espace_membre;charset=utf8','root','');
var_dump($_POST); // Utile pour débugguer
// Si le formulaire a été soumis (cette condition est en réalité facultative)
if(isset($_POST['submit']))
{
// Si des personnes ont été marquées présentes
if(isset($_POST['presences']))
{
// Pour chaque personne présente, on récupère son ID et on l'incrémente
foreach ($_POST['presences'] as $presenceID)
{
$modif = $bdd->prepare('UPDATE membres SET Nbr_presence=Nbr_presence+1 WHERE ID=?');
$modif->execute(array($presenceID));
}
}
// Si des personnes ont été marquées absentes
if(isset($_POST['absences']))
{
// Pour chaque personne absente, on récupère son ID et on la décrémente
foreach ($_POST['absences'] as $absenceID)
{
$modif = $bdd->prepare('UPDATE membres SET Nbr_presence=Nbr_presence-1 WHERE ID=?');
$modif->execute(array($absenceID));
}
}
}
// On récupère toutes les personnes
$reqall = $bdd->query('SELECT * FROM membres');
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Tous les etudiants</title>
</head>
<body>
<form method="post" action="">
<table border="1" width="1000px">
<tr>
<th>ID</th><th>Pseudo</th><th>Email</th><th>Filiére</th><th>Telephone</th><th>Code Massar</th><th>presence</th>
</tr>
<?php foreach($presence as $allinfo){ ?>
<tr>
<td><?php echo $allinfo['ID']; ?></td>
<td><?php echo $allinfo['pseudo']; ?></td>
<td><?php echo $allinfo['mail'] ;?></td>
<td><?php echo $allinfo['Filiére'] ;?></td>
<td><?php echo $allinfo['Telephone']; ?></td>
<td><?php echo $allinfo['Code_Massar']; ?></td>
<td><?php echo $allinfo['Nbr_presence']; ?></td>
<td>
<input type="radio" name="presences[]" value="<?= $allinfo['ID'] ?>" /><label>Présent</label>
<input type="radio" name="absences[]" value="<?= $allinfo['ID'] ?>" /><label>Absent</label>
</td>
</tr>
<?php } ?>
</table>
<div align="center">
<input type="submit" name="submit" value="Marquer">
</div>
</form>
<a href="profilprof.php?IDprof=<?php echo $_SESSION['IDprof'] ?>">Retour</a>
</body>
</html>
Petite précision : <?= ...
est simplement le raccourci de <?php echo ...
!
En espérant avoir pu t'aider et te donner les pistes nécessaire pour que tu puisses poursuivre le développement de ton outil 😉
A bientôt,
Boris