Gestion absence probléme

PrimFX

PrimFX Le 17 août 2020 à 18:21

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

Megasouf

Megasouf Le 17 août 2020 à 18:34

J'ai édité mon message. Merci

PrimFX

PrimFX Le 17 août 2020 à 19:08

Merci !

Je vois déjà quelques points qui mériteraient d'être revus / ajustés dans ton code :

  1. 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
  2. Ton if(isset($_POST['Marquer'])) ne sera malheureusement jamais vrai : si tu souhaites vérifier si le formulaire a été posté, c'est plutôt if(isset($_POST['submit'])) que tu devrais faire. Je te conseille d'ajouter un var_dump($_POST) juste après ton session_start(): ça pourra t'aider à débugguer 😉
  3. 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'attribut value="<?= $allinfo['ID'] ?>".
  4. 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>) ...).
  5. 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").
  6. 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

Megasouf

Megasouf Le 17 août 2020 à 19:31

ça marche Merci Bien !! 😃 😃

Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte