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
Ce script se compose de deux parties :
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'; }
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 !
Partager