Bonjour ,

Je sollicite votre aide car je dois complexifier un script php avec une requête sql .

Je vous mets le code et les explications en dessous

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
 
<?php
    if (!empty($_POST))
    {
 
 
        include 'bsd.php';
        include 'index.php';
        $date = $_POST['date'];
        $activiteComment = " ";
        $encadrant = $_SESSION['Prenom'];
        $activite = $_POST['activite'];
        $eleve = $_POST['elevesValidatActi'];
        $req = $bdd->prepare('INSERT INTO activitedone(activiteNom , datework , eleveNom) VALUES(:activiteNom , :datework , :eleveNom)');
 
        $req->execute(array(
                'activiteNom' => $activite,
                'datework'=> $date,
                'eleveNom' => $eleve
 
    ));
 
 
 
        $requete = "SELECT activiteAttente1,activiteAttente2,activiteAttente3,activiteAttente4,activiteAttente5,activiteAttente6,activiteAttente7,activiteAttente8,activiteAttente9,activiteAttente10 FROM activite WHERE activiteNom = :activite";
        $stmt = $bdd ->prepare($requete);
        $stmt->bindValue('activite',$_POST['activite']);
        $stmt->execute();
        $dataActiviteAttente = $stmt->fetch(PDO::FETCH_ASSOC);
        $stmt->closeCursor();
 
        $avancement = $bdd->query("SELECT * FROM attenteswork WHERE attentesNom = 'activiteAttente1' AND eleveNom = '$eleve'");
        $donnees = $avancement->fetch();
        // Voici mon probleme
        if (empty($donnees)){
        $essai = "1";
         }else
        {
        $essai = $donnees['essai'] + '1';
        }
 
 
        $stmt = $bdd->prepare('INSERT INTO attenteswork(eleveNom, attentesNom, essai, datework , comments , encadrant , activiteID) VALUES(:eleves, :attentes,:essai ,:datework ,:comments ,:encadrant ,:activiteID)');
 
        //Maintenant on boucle sur les résultats:
        foreach ($dataActiviteAttente AS $activiteAttente)
        {
            $stmt->execute(array(
                'eleves' => $_POST['elevesValidatActi'],
                'attentes' => $activiteAttente,
                'essai' => $essai,
                'datework' => $date,
                'comments' =>  $activiteComment,
                'encadrant' => $encadrant,
                'activiteID' => $_POST['activite'],
                ));
        $avancement->closeCursor();
            if ($stmt->rowCount() != 1) 
            {
                echo 'Erreur insertion : '.$_POST['elevesValidatActi'].' / '.$activiteAttente.' / '.$date;
            }
        }
 
        include 'footer.php';
        echo '<script>alert("L\'\activité a bien été validée !");
        document.location.href="validation2.php";
        </script>';
 
    } 
 
    else {
        echo 'Formulaire vide';
    }
Ce script se compose de deux parties :

La première est l'insertion de l’activité dans une table activitedone avec les différents renseignements dont j'ai besoin ( Aucun problème de fonctionnement )
La deuxième partie est l'insertion du détail de l'activité dans une table attenteswork , sachant que chaque activité que je rentre peut avoir entre 1 à 10 attentes ( représenter par les activiteAttente 1 , 2 ... )
A l'heure actuelle , quand je valide ce script , la première partie fonctionne et la deuxième m'insère chaque activiteAttente dans cette table .

Seulement voilà , c'est pas bon

Il y a une variable $essai auquel je souhaiterais donner une valeur progressive , je m'explique :

Quand je valide une activiteAttente , je souhaiterais que sa valeur $essai augmente par rapport à la valeur la plus haute enregistré pour son nom dans la table attenteswork ( Je ne sais pas si je suis clair ) et ce pour chaque activiteAttente(1,2,3 ... ) que j'insère via la boucle foreach .

J'avais pensé à un update seulement voila , je dois garder toutes les attentes que je valide et je ne peux pas en avoir juste une dans la table avec une valeur qui s’incrémente ( Il s'agit d'un suivi d'enseignement )
J'ai également pu trouver une requête sql Max() que je n'ai pas tester .
La partie ci-dessous présente dans le code ci-dessus est un test que j'avais fait , mais qui ne fonctionne pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
        $avancement = $bdd->query("SELECT * FROM attenteswork WHERE attentesNom = 'activiteAttente1' AND eleveNom = '$eleve'");
        $donnees = $avancement->fetch();
        // Voici mon probleme
        if (empty($donnees)){
        $essai = "1";
         }else
        {
        $essai = $donnees['essai'] + '1';
        }

Si quelqu'un peut me donner une solution ou du moins m’aiguiller sur la piste , ce serait génial !

Merci d'avance !