Insertion au bon endroit d'une nouvelle ligne d'un tableau
Résolu/Fermé
Izzara82
Messages postés
26
Date d'inscription
dimanche 14 mars 2021
Statut
Membre
Dernière intervention
11 janvier 2023
-
Modifié le 17 mars 2022 à 13:42
Izzara82 Messages postés 26 Date d'inscription dimanche 14 mars 2021 Statut Membre Dernière intervention 11 janvier 2023 - 21 mars 2022 à 21:39
Izzara82 Messages postés 26 Date d'inscription dimanche 14 mars 2021 Statut Membre Dernière intervention 11 janvier 2023 - 21 mars 2022 à 21:39
A voir également:
- Insertion au bon endroit d'une nouvelle ligne d'un tableau
- Darkino nouvelle adresse - Guide
- Tableau croisé dynamique - Guide
- Darkino : le grand site pirate change d'adresse et d'interface - Accueil - Services en ligne
- Tableau ascii - Guide
- Comment faire un tableau - Guide
9 réponses
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
18 mars 2022 à 11:13
18 mars 2022 à 11:13
Bonjour,
Il y aurait pleins de petites choses à dire au sujet de ton code .. mais commençons par ta question.
Déjà .. quel est le lien entre les tables procedures et suivi ?
Je pense qu'un suivi doit être rattaché à une procédure (d'après ce que je comprends de ta demande)
hors, il ne me semble pas que tu gères cette données lors de l'insertion en bdd ...
D'ailleurs... as tu prévu, dans ta table suivi, un champ pour stocker cette relation ??
Peux tu nous montrer la structure de tes tables ?
A noter que si tu n'as pas encore mis de champ pour gérer le lien entre ces deux tables... ajoutes le de suite.
Soit le numéro de procédure... soit son id .... ( id_procedure ) a moins qu'on puisse utiliser le keycode que tu sembles avoir ??
Ensuite, dans ton formulaire il faudra ajouter un input hidden qui contiendra cette valeur
Et pour finir .. nul besoin de faire deux requêtes ( c'est même fortement déconseillé...)
A la place, il suffira de faire une seule requête avec une jointure sur ces deux tables..
Il y aurait pleins de petites choses à dire au sujet de ton code .. mais commençons par ta question.
Déjà .. quel est le lien entre les tables procedures et suivi ?
Je pense qu'un suivi doit être rattaché à une procédure (d'après ce que je comprends de ta demande)
hors, il ne me semble pas que tu gères cette données lors de l'insertion en bdd ...
D'ailleurs... as tu prévu, dans ta table suivi, un champ pour stocker cette relation ??
Peux tu nous montrer la structure de tes tables ?
A noter que si tu n'as pas encore mis de champ pour gérer le lien entre ces deux tables... ajoutes le de suite.
Soit le numéro de procédure... soit son id .... ( id_procedure ) a moins qu'on puisse utiliser le keycode que tu sembles avoir ??
Ensuite, dans ton formulaire il faudra ajouter un input hidden qui contiendra cette valeur
Et pour finir .. nul besoin de faire deux requêtes ( c'est même fortement déconseillé...)
A la place, il suffira de faire une seule requête avec une jointure sur ces deux tables..
Izzara82
Messages postés
26
Date d'inscription
dimanche 14 mars 2021
Statut
Membre
Dernière intervention
11 janvier 2023
1
Modifié le 18 mars 2022 à 13:57
Modifié le 18 mars 2022 à 13:57
Bonjour Jordane,
Oui, je me doute bien que mon code est très loin d'être parfait mais j'essaie de m'améliorer avec les conseils que l'on me donne.
Concernant le lien entre ces deux tables :
Sur une page nommée "saisie.php", je rentre les informations d'une procédures qui vont se stocker dans la table "procedures". Je récupère ces informations ce qui me permet d'afficher sur une page nommée "encours.php" la totalité des procédures en cours avec la possibilité de faire une recherche par numéro et de les supprimer lorsqu'elles sont terminées.
La validation d'une saisie, en plus d'alimenter la table "procédure" et la page "encours.php", va créer un tableau dans une page "suivi.php" afin que je puisse confier des missions à mes personnels (Voir screen de mon premier message).
La table "suivi" n'a pas de lien avec la table "procédure" puisque les données sont totalement différentes. Justement c'est ce que je cherche à faire pour que les formulaires de la page "suivi.php" trouvent un lien avec la table "procedures" afin de remplir le bon tableau.
Concernant le keycode, il fait partie des nombreux essais que j'ai fait. Et d'ailleurs, l'erreur est que je l'ai mis dans la table "procédure" au lieu de" suivi". De plus son traitement est assez lourd, donc autant le retirer. Du coup, j'ai rajouté un id_procédure dans ma table "suivi".
Les 2 tables :
Je te communique les codes des pages concernées.
Pour la page saisie.php qui alimente la table "procedures".
Pour la page encours.php qui récupère les données de la table "procedures"
Pour la page suivi.php, celle qui me pose le plus de problèmes à coder
Oui, je me doute bien que mon code est très loin d'être parfait mais j'essaie de m'améliorer avec les conseils que l'on me donne.
Concernant le lien entre ces deux tables :
Sur une page nommée "saisie.php", je rentre les informations d'une procédures qui vont se stocker dans la table "procedures". Je récupère ces informations ce qui me permet d'afficher sur une page nommée "encours.php" la totalité des procédures en cours avec la possibilité de faire une recherche par numéro et de les supprimer lorsqu'elles sont terminées.
La validation d'une saisie, en plus d'alimenter la table "procédure" et la page "encours.php", va créer un tableau dans une page "suivi.php" afin que je puisse confier des missions à mes personnels (Voir screen de mon premier message).
La table "suivi" n'a pas de lien avec la table "procédure" puisque les données sont totalement différentes. Justement c'est ce que je cherche à faire pour que les formulaires de la page "suivi.php" trouvent un lien avec la table "procedures" afin de remplir le bon tableau.
Concernant le keycode, il fait partie des nombreux essais que j'ai fait. Et d'ailleurs, l'erreur est que je l'ai mis dans la table "procédure" au lieu de" suivi". De plus son traitement est assez lourd, donc autant le retirer. Du coup, j'ai rajouté un id_procédure dans ma table "suivi".
Les 2 tables :
Je te communique les codes des pages concernées.
Pour la page saisie.php qui alimente la table "procedures".
<?php // AFFICHAGE DES ERREURS PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); // SAISIE DES DONNEES if(!empty($_POST['datum']) && !empty($_POST['numbers']) && !empty($_POST['synthesis'])) { require_once('src/bddconnect.php'); // CONNEXION BDD // ON STOCK LES DONNEES DANS DES VARIABLES $date = trim($_POST['datum']); $numbers = trim($_POST['numbers']); $synthesis = trim($_POST['synthesis']); // TEST SI NUMERO DE PROCEDURE DEJA SAISI // 1 - PREPARATION DES VARIABLES $sql = 'SELECT COUNT(*) AS numProc FROM procedures WHERE numbers = ?'; $datas = array($numbers); // 2 - REQUETE try { $requete = $bdd->prepare($sql); $requete->execute($datas); // 3 - TEST PRESENCE PROCEDURE while ($consultation = $requete->fetch()) { if ($consultation['numProc'] != 0) { header('location: saisie.php?error=1&message=procédure déjà enregistrée'); // PROCEDURE DEJA ENREGISTREE exit(); } } } catch (Exception $e) { echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } // CREATION DU KEYCODE $key = password_hash($_POST['numbers'], PASSWORD_DEFAULT); // ENVOI DE LA REQUETE - ALIMENTATION DE LA BDD // 1 - PREPARATION DES VARIABLES $sql_proc = 'INSERT INTO procedures(datum, numbers, synthesis, keycode) VALUES(?, ?, ?, ?)'; $datas_proc = array($date, $numbers, $synthesis, $key); // 2 - REQUETE try { $requete = $bdd->prepare($sql_proc); $requete->execute($datas_proc); header('location: saisie.php?success=1'); exit(); } catch (Exception $e) { echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } } ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="design/default.css"> <link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet"> <title>Saisie des données</title> </head> <body> <!-- HEADER --> <?php include "src/header.php" ?> <!-- BARRE NAVIGATION --> <?php include "src/menu.php"; ?> <?php // VERIFICATION DES DONNEES SAISIES // 1 - SI ERREUR, ON L'AFFICHE if(isset($_GET['error'])) { if(isset($_GET['message'])) { echo '<div class="alert_error">'.htmlspecialchars($_GET['message']).'</div>'; } } // 2 - SINON SI LA SAISIE EST CORRECTE ON l'AFFICHE AUSSI else if(isset($_GET['success'])) { echo '<div class="alert_success">Enregistrement réussi</div>'; } ?> <!-- Zone de saisie --> <div class="saisie"> <!-- Page pour la saisie des données des procédures --> <h3>CHAMPS DE SAISIE</h3> <form action="saisie.php" method="POST"> <label>Date d'enregistrement : </label> <input type="date" name="datum" value="<?= date('Y-m-d') ?>" required> <label>Numéro de procédure : </label> <input autocomplete="off" type="text" name="numbers" size="25" placeholder="Format 00000/0000" required> <label>Synthèse : </label> <input autocomplete="off" type="text" name="synthesis" size="50" placeholder="Exposé simple de la mission" required> <div class="transmission"> <button class="trans" type="submit">Transmettre les données</button> <button class="trans" type="reset">Réinitialiser</button> </div> </form> </div> </body> </html>
Pour la page encours.php qui récupère les données de la table "procedures"
<!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="design/default.css"> <link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet"> <title>Procédures enregistrées</title> </head> <body> <!-- HEADER --> <?php include "src/header.php" ?> <!-- Bouton retour haut de page --> <a href="#" class="btn"> <img src="/images/fleche_haut.ico" class="icon"> </a> <!-- BARRE DE NAVIGATION --> <?php include "src/menu.php"; ?> <div class="encours"> <h2>LISTE DES PROCEDURES EN COURS</h2> <?php // CONNEXION BDD require_once('src/bddconnect.php'); // LECTURE DES DONNEES PAR REQUETE try { $requete = $bdd->query('SELECT * FROM procedures ORDER BY numbers'); } catch(Exception $e) { echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } // BARRE DE RECHERCHE if(isset($_GET["rechercher"]) && !empty($_GET["rechercher"])) { $rechercher = htmlspecialchars($_GET["rechercher"]); $requete = $bdd->query('SELECT * FROM procedures WHERE numbers LIKE "%'.$rechercher.'%"'); } ?> <form method="GET" class="recherche"> <input type="search" name="rechercher" placeholder="Rechercher..."> <input type="submit" value="Valider"> <input type="submit" value="Réinitialiser"> </form> <table border class="procedures"> <tr> <th>Date</th> <th>Numéro de procédure</th> <th>Synthèse</th> <th>Suppression</th> </tr> <?php while($donnees = $requete->fetch()) { ?> <tr> <td><?= $donnees['datum'] ?></td> <td><a href="suivi.php#<?= $donnees['numbers']?>"><?= $donnees['numbers']?></a></td> <td><?= $donnees['synthesis']?></td> <td> <!-- Suppression procédure --> <form action="src/supp.php" method="POST"> <input type="hidden" type="submit" name="id" value="<?=$donnees['id'] ?>"> <input type="submit" name="supprimer" value="Supprimer"> </form> </td> </tr> <?php } ?> </table> </div> </body> </html>
Pour la page suivi.php, celle qui me pose le plus de problèmes à coder
<?php // AFFICHAGE DES ERREURS PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); require_once('src/bddconnect.php'); // CONNEXION BDD // DONNEES SAISIE if (!empty($_POST['sous_off']) && !empty($_POST['mission']) && !empty($_POST['created_date'])) { // STOCKAGE DES DONNEES SAISIES DANS LES VARIABLES $sous_off = trim($_POST['sous_off']); $mission = trim($_POST['mission']); $creation_date = $_POST['created_date']; //ALIMENTATION BDD // 1 - PREPARATION DE LA REQUETE $sql_code = 'INSERT INTO suivi(sous_off, mission, created_date) VALUES(?, ?, ?)'; $datas_code = array($sous_off, $mission, $creation_date); // 2 - REQUETE try { $req = $bdd->prepare($sql_code); $req->execute($datas_code); header('location: suivi.php?success=1'); exit(); } catch(Exception $e) { echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas_code); } } ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="design/default.css"> <link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet"> <title>Suivi des procédures</title> </head> <body> <!-- HEADER --> <?php include "src/header.php" ?> <!-- Bouton retour haut de page --> <a href="#" class="btn"> <img src="/images/fleche_haut.ico" class="icon"> </a> <!-- BARRE DE NAVIGATION --> <?php include "src/menu.php"; // REQUETES $requete = $bdd->query('SELECT * FROM procedures ORDER BY numbers'); $requite = $bdd->query('SELECT * FROM suivi'); //LECTURE DES DONNEES DES REQUETES while ($num_proc = $requete->fetch()) { ?> <div class="suivi"> <h4 id="<?= $num_proc["numbers"] ?>">Procédure n° <?= $num_proc["numbers"] ?></h4> <div class="attribution"> <form method="POST" action="suivi.php"> <label>Militaire</label> <input type="text" name="sous_off" placeholder="Militaire" required /> <label>Mission</label> <textarea name="mission" cols="30" rows="1" placeholder="Mission" required></textarea> <label>Date</label> <input type="date" name="created_date" value="<?= date('Y-m-d') ?>" placeholder="Date" required /> <input type="" type="submit" name="id" value="<?=$suivre['id_procedure'] ?>"> <button type="submit" name="ajout_proc" value="Ajouter">Ajouter</button> </form> </div> <table border class="proc"> <tr> <th>Militaires</th> <th>Mission</th> <th>Date Exécution</th> <th>Supression</th> </tr> </table> <?php while ($suivre = $requite->fetch()) { ?> <table border class="proc"> <tr> <td><?= $suivre['sous_off'] ?></td> <td><?= $suivre['mission'] ?></td> <td><?= $suivre['created_date'] ?></td> <td> <!-- Suppression ligne de mission --> <form action="src/supp.php" method="POST"> <input type="hidden" type="submit" name="id" value="<?=$suivre['id'] ?>"> <input type="submit" name="supprimer" value="Supprimer"> </form> </td> </tr> </table> <?php var_dump($suivre['id_procedure']); } ?> </div> <?php } ?> </body> </html>
Izzara82
Messages postés
26
Date d'inscription
dimanche 14 mars 2021
Statut
Membre
Dernière intervention
11 janvier 2023
1
18 mars 2022 à 19:13
18 mars 2022 à 19:13
Bon... j'ai essayé pas mal de choses mais c'est pas encore ça.
J'ai tenté de faire ce que tu m'as demandé, je ne sais pas si c'est bon mais au moins j'aurai essayé :)
Il y a du mieux mais il reste encore un problème concernant l'insertion des lignes. Il m’insère bien une ligne sur le bon numéro de procédure mais pour cela il me cré un nouveau tableau de cette procédure.
Ce que j'ai fait dans le fichier suivi.php
J'ai tenté de faire ce que tu m'as demandé, je ne sais pas si c'est bon mais au moins j'aurai essayé :)
Il y a du mieux mais il reste encore un problème concernant l'insertion des lignes. Il m’insère bien une ligne sur le bon numéro de procédure mais pour cela il me cré un nouveau tableau de cette procédure.
Ce que j'ai fait dans le fichier suivi.php
<?php // AFFICHAGE DES ERREURS PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); require_once('src/bddconnect.php'); // CONNEXION BDD // INSCRIPTION if (!empty($_POST['sous_off']) && !empty($_POST['mission']) && !empty($_POST['created_date']) && !empty($_POST['numbers'])) { // STOCKAGE DES DONNEES SAISIES DANS LES VARIABLES $sous_off = trim($_POST['sous_off']); $mission = trim($_POST['mission']); $creation_date = trim($_POST['created_date']); $id_procedure = trim($_POST['numbers']); //ALIMENTATION BDD // 1 - PREPARATION DE LA REQUETE $sql_code = 'INSERT INTO suivi(id_procedure, sous_off, mission, created_date) VALUES(?, ?, ?, ?)'; $datas_code = array($id_procedure, $sous_off, $mission, $creation_date); // 2 - REQUETE try { $req = $bdd->prepare($sql_code); $req->execute($datas_code); header('location: suivi.php?success=1'); exit(); } catch (Exception $e) { echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas_code); } } ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="design/default.css"> <link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet"> <title>Suivi des procédures</title> </head> <body> <!-- HEADER --> <?php include "src/header.php" ?> <!-- Bouton retour haut de page --> <a href="#" class="btn"> <img src="/images/fleche_haut.ico" class="icon"> </a> <!-- BARRE DE NAVIGATION --> <?php include "src/menu.php"; // LECTURE DES DONNEES DES REQUETES $requete = $bdd->query('SELECT procedures.id, procedures.numbers, suivi.id, id_procedure, sous_off, mission, created_date FROM procedures LEFT JOIN suivi ON procedures.numbers = suivi.id_procedure ORDER BY numbers'); while ($num_proc = $requete->fetch()) { ?> <div class="suivi"> <h4 id="<?= $num_proc["numbers"] ?>">Procédure n° <?= $num_proc["numbers"] ?></h4> <div class="attribution"> <form method="POST" action="suivi.php"> <label>Militaire</label> <input type="text" name="sous_off" placeholder="Militaire" required /> <label>Mission</label> <textarea name="mission" cols="30" rows="1"></textarea> <label>Date</label> <input type="date" name="created_date" value="<?= date('Y-m-d') ?>" required /> <label>Date</label> <input type="text" name="numbers" value="<?= $num_proc["numbers"] ?>" required /> <input type="hidden" name="id_procedure" value="<?= $num_proc["numbers"] ?>" /> <button type="submit" name="Envoyer">Valider</button> </form> </div> <table border class="proc"> <tr> <th>Militaires</th> <th>Mission</th> <th>Date d'exécution</th> <th>Suppression</th> </tr> </table> <table border class="proc"> <tr> <td><?= $num_proc['sous_off'] ?></td> <td><?= $num_proc['mission'] ?></td> <td><?= $num_proc['created_date'] ?></td> <td> <!-- Suppression ligne de mission --> <form action="src/supp.php" method="POST"> <input type="" type="submit" name="id" value="<?= $num_proc['id'] ?>"> <input type="submit" name="suppression" value="Supprimer"> </form> </td> </tr> </table> <?php var_dump($num_proc); var_dump($num_proc['id']); var_dump($num_proc["numbers"]); var_dump($num_proc["id_procedure"]); ?> </div> <?php } ?> </body> </html>
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
19 mars 2022 à 07:14
19 mars 2022 à 07:14
Je ne crois pas que tu l'aies répondu à cette question .. tu utilises mysqli ou PDO ?
Je pense que c'est PDO .. et donc, si c'est bien ça, peux tu modifier ton code pour faire ceci :
ça ne corrigera pas encore ton souci mais ça me permettra de voir réellement ce que contient le résultat de ta requête...
Une fois que ça sera fait, on pourra retravailler l'array $procedures pour que tu puisses facilement recréer tes différents tableaux et refaire tes deux boucles un peu comme tu avais dans ton premier code ( boucles en foreach et non en while ce coup ci )
Je pense que c'est PDO .. et donc, si c'est bien ça, peux tu modifier ton code pour faire ceci :
// LECTURE DES DONNEES DES REQUETES // LECTURE DES DONNEES DES REQUETES $sql = 'SELECT P.id as ID_PROC , P.numbers ,S.id as ID_SUIVI ,S.id_procedure ,S.sous_off, ,S. mission , S.created_date FROM procedures P LEFT JOIN suivi S ON P.numbers = S.id_procedure ORDER BY P.numbers'; try{ $requete = $bdd->query($sql); //on stocke le résultat dans un array $procedures = $requete->fetchAll(); }catch(Exception $e){ // en cas d'erreur dans la requête // voir : https://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs echo "Erreur " . $e->getMessage(); exit; } //le temps des tests echo "<pre>Procedures <br>"; var_dump($procedures); echo "</pre>"; //on boucle sur l'array ( ça remplace le while) foreach ($procedures as $num_proc) {
ça ne corrigera pas encore ton souci mais ça me permettra de voir réellement ce que contient le résultat de ta requête...
Une fois que ça sera fait, on pourra retravailler l'array $procedures pour que tu puisses facilement recréer tes différents tableaux et refaire tes deux boucles un peu comme tu avais dans ton premier code ( boucles en foreach et non en while ce coup ci )
Izzara82
Messages postés
26
Date d'inscription
dimanche 14 mars 2021
Statut
Membre
Dernière intervention
11 janvier 2023
1
19 mars 2022 à 09:56
19 mars 2022 à 09:56
Bonjour Jordane,
Oui j’utilise bien PDO.
Je suis au boulot donc je vois tout ça ce soir d’un œil plus averti.
Oui j’utilise bien PDO.
Je suis au boulot donc je vois tout ça ce soir d’un œil plus averti.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Izzara82
Messages postés
26
Date d'inscription
dimanche 14 mars 2021
Statut
Membre
Dernière intervention
11 janvier 2023
1
Modifié le 19 mars 2022 à 18:33
Modifié le 19 mars 2022 à 18:33
Bon, j'ai modifié le code comme tu me l'as demandé.
Problème, quand je vais sur la page suivi.php, aucune erreur détectée mais rien ne s'affiche. Aucune des procédures saisies n'apparaît sous forme de tableau.
J'ai laissé la boucle foreach et j'ai remis la jointure que j'avais faite et ça marche de nouveau, les tableaux sont revenus.
Donc, il semblerait que ce problème d'affichage vienne de la nouvelle jointure que tu m'as demandé d'insérer. Bizarre car à sa lecture, rien ne m'a choqué, je regarde de plus près pour voir.
Problème, quand je vais sur la page suivi.php, aucune erreur détectée mais rien ne s'affiche. Aucune des procédures saisies n'apparaît sous forme de tableau.
J'ai laissé la boucle foreach et j'ai remis la jointure que j'avais faite et ça marche de nouveau, les tableaux sont revenus.
Donc, il semblerait que ce problème d'affichage vienne de la nouvelle jointure que tu m'as demandé d'insérer. Bizarre car à sa lecture, rien ne m'a choqué, je regarde de plus près pour voir.
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
19 mars 2022 à 18:25
19 mars 2022 à 18:25
As-tu appliqué les consignes données dans le lien qui se trouve en commentaire du code que je t'ai donné ?
Izzara82
Messages postés
26
Date d'inscription
dimanche 14 mars 2021
Statut
Membre
Dernière intervention
11 janvier 2023
1
>
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
Modifié le 19 mars 2022 à 19:34
Modifié le 19 mars 2022 à 19:34
Oui toujours depuis une remarque que tu m'avais faite dans une précédent sujet.
Mon code de connexion à ma bdd.
Mon code de connexion à ma bdd.
<?php try { $bdd = new PDO('mysql:host=localhost;dbname=cob_valence;charset=utf8', 'root', ''); // Connection à la Base de Données $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch (PDOException $e) { die('Erreur : ' . $e->getMessage()); } ?>
Izzara82
Messages postés
26
Date d'inscription
dimanche 14 mars 2021
Statut
Membre
Dernière intervention
11 janvier 2023
1
Modifié le 19 mars 2022 à 18:43
Modifié le 19 mars 2022 à 18:43
Izzara82
Messages postés
26
Date d'inscription
dimanche 14 mars 2021
Statut
Membre
Dernière intervention
11 janvier 2023
1
21 mars 2022 à 18:51
21 mars 2022 à 18:51
Bon, je tourne toujours en rond.
J'ai essayé pas mal de combinaisons, de comparaisons mais rien y fait. Toujours un tableau entier qui s'affiche lorsque je fais une nouvelle saisie.
J'ai essayé pas mal de combinaisons, de comparaisons mais rien y fait. Toujours un tableau entier qui s'affiche lorsque je fais une nouvelle saisie.
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
21 mars 2022 à 19:28
21 mars 2022 à 19:28
Si tu me colles le var_dump ici ( au lieu d'une image)
je pourrais l'utiliser pour te proposer du code...
mais là, j'ai la flemme de réécrire les données depuis ta capture écran.
je pourrais l'utiliser pour te proposer du code...
mais là, j'ai la flemme de réécrire les données depuis ta capture écran.
Izzara82
Messages postés
26
Date d'inscription
dimanche 14 mars 2021
Statut
Membre
Dernière intervention
11 janvier 2023
1
>
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
21 mars 2022 à 19:42
21 mars 2022 à 19:42
Ah pas de soucis.
array (size=2)
0 =>
array (size=7)
'ID_PROC' => string '9' (length=1)
'numbers' => string '000885/2022' (length=11)
'ID_SUIVI' => string '37' (length=2)
'id_procedure' => string '000885/2022' (length=11)
'sous_off' => string 'PIERRE' (length=6)
'mission' => string 'TEST 000' (length=8)
'created_date' => string '2022-03-21' (length=10)
1 =>
array (size=7)
'ID_PROC' => string '10' (length=2)
'numbers' => string '00125/2022' (length=10)
'ID_SUIVI' => string '38' (length=2)
'id_procedure' => string '00125/2022' (length=10)
'sous_off' => string 'JEAN' (length=4)
'mission' => string 'TEST 111' (length=8)
'created_date' => string '2022-03-21' (length=10)
array (size=2)
0 =>
array (size=7)
'ID_PROC' => string '9' (length=1)
'numbers' => string '000885/2022' (length=11)
'ID_SUIVI' => string '37' (length=2)
'id_procedure' => string '000885/2022' (length=11)
'sous_off' => string 'PIERRE' (length=6)
'mission' => string 'TEST 000' (length=8)
'created_date' => string '2022-03-21' (length=10)
1 =>
array (size=7)
'ID_PROC' => string '10' (length=2)
'numbers' => string '00125/2022' (length=10)
'ID_SUIVI' => string '38' (length=2)
'id_procedure' => string '00125/2022' (length=10)
'sous_off' => string 'JEAN' (length=4)
'mission' => string 'TEST 111' (length=8)
'created_date' => string '2022-03-21' (length=10)
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
>
Izzara82
Messages postés
26
Date d'inscription
dimanche 14 mars 2021
Statut
Membre
Dernière intervention
11 janvier 2023
Modifié le 21 mars 2022 à 19:56
Modifié le 21 mars 2022 à 19:56
on retravaille l'array pour en faire un array à 2 dimensions.
Ensuite, dans ton code, tu peux faire deux boucles imbriquées
par exemple : (je te laisse refaire la structure que tu veux pour tes tableaux.. )
// $procFinal = []; foreach( $procedures as $P ){ $procFinal[$P['numbers']][$P['ID_SUIVI']] = ['sous_off'=>$P['sous_off'],'mission'=>$P['mission'],'created_date'=>$P['created_date']]; }
Ensuite, dans ton code, tu peux faire deux boucles imbriquées
par exemple : (je te laisse refaire la structure que tu veux pour tes tableaux.. )
foreach($procFinal as $numbers=>$V ){ echo "Numbers :" . $numbers; echo "<table>"; foreach($V as $ID_SUIVI=>$SP) { echo "<tr>"; echo "<td>".$SP['sous_off']."</td>"; echo "<td>".$SP['mission']."</td>"; echo "<td>".$SP['created_date']."</td>"; echo '<td> <!-- Suppression ligne de mission --> <form action="src/supp.php" method="POST"> <input type="" type="submit" name="id" value="'.$ID_SUIVI['id'].'"> <input type="submit" name="suppression" value="Supprimer"> </form></td>'; echo "</tr>"; } echo "</table>"; }
Izzara82
Messages postés
26
Date d'inscription
dimanche 14 mars 2021
Statut
Membre
Dernière intervention
11 janvier 2023
1
21 mars 2022 à 21:07
21 mars 2022 à 21:07
Merci pour ton aide efficace Jordane mais malheureusement, je n'ai pas encore les connaissances suffisantes pour pouvoir comprendre intégralement ce que tu m'as proposé.
Par conséquent, je ne te cache pas que, malgré une lecture attentive et plusieurs tentatives, je n'ai toujours pas réussi à intégrer tes codes dans ma page suivi.php afin d'en voir le fonctionnement.
Je te remets mon code de la page suivi.php, pour voir si tu peux me guider.
Merci d'avance
Par conséquent, je ne te cache pas que, malgré une lecture attentive et plusieurs tentatives, je n'ai toujours pas réussi à intégrer tes codes dans ma page suivi.php afin d'en voir le fonctionnement.
Je te remets mon code de la page suivi.php, pour voir si tu peux me guider.
Merci d'avance
<?php // AFFICHAGE DES ERREURS PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); require_once('src/bddconnect.php'); // CONNEXION BDD // INSCRIPTION if (!empty($_POST['sous_off']) && !empty($_POST['mission']) && !empty($_POST['created_date']) && !empty($_POST['numbers'])) { // STOCKAGE DES DONNEES SAISIES DANS LES VARIABLES $sous_off = htmlspecialchars(trim($_POST['sous_off'])); $mission = htmlspecialchars(trim($_POST['mission'])); $creation_date = htmlspecialchars(trim($_POST['created_date'])); $id_procedure = htmlspecialchars(trim($_POST['numbers'])); //ALIMENTATION BDD // 1 - PREPARATION DE LA REQUETE $sql_code = 'INSERT INTO suivi(id_procedure, sous_off, mission, created_date) VALUES(?, ?, ?, ?)'; $datas_code = array($id_procedure, $sous_off, $mission, $creation_date); // 2 - REQUETE try { $req = $bdd->prepare($sql_code); $req->execute($datas_code); header('location: suivi.php?success=1'); exit(); } catch (Exception $e) { echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas_code); } } ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="design/default.css"> <link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet"> <title>Suivi des procédures</title> </head> <body> <!-- HEADER --> <?php include "src/header.php" ?> <!-- Bouton retour haut de page --> <a href="#" class="btn"> <img src="/images/fleche_haut.ico" class="icon"> </a> <!-- BARRE DE NAVIGATION --> <?php include "src/menu.php"; // LECTURE DES DONNEES DES REQUETES $sql = 'SELECT P.id as ID_PROC , P.numbers , S.id as ID_SUIVI , S.id_procedure , S.sous_off , S.mission , S.created_date FROM procedures P LEFT JOIN suivi S ON P.numbers = S.id_procedure ORDER BY P.numbers'; try{ $requete = $bdd->query($sql); //on stocke le résultat dans un array $procedures = $requete->fetchAll(); }catch(Exception $e){ echo "Erreur " . $e->getMessage(); exit; } //le temps des tests echo "<pre>Procedures <br>"; var_dump($procedures); echo "</pre>"; //on boucle sur l'array ( ça remplace le while) foreach ($procedures as $num_proc) { ?> <div class="suivi"> <h4 id="<?= $num_proc['numbers'] ?>">Procédure n° <?= $num_proc['numbers'] ?></h4> <div class="attribution"> <form method="POST" action="suivi.php"> <label>Militaire</label> <input type="text" name="sous_off" placeholder="Militaire" required /> <label>Mission</label> <textarea name="mission" cols="30" rows="1"></textarea> <label>Date</label> <input type="date" name="created_date" value="<?= date('Y-m-d') ?>" required /> <input type="hidden" type="text" name="numbers" value="<?= $num_proc['numbers'] ?>" required /> <input type="hidden" name="id_procedure" value="<?= $num_proc['numbers'] ?>" /> <button type="submit" name="Envoyer">Valider</button> </form> </div> <table border class="proc"> <tr> <th>Militaires</th> <th>Mission</th> <th>Date d'exécution</th> <th>Suppression</th> </tr> </table> <table border class="proc"> <tr> <td><?= $num_proc['sous_off'] ?></td> <td><?= $num_proc['mission'] ?></td> <td><?= $num_proc['created_date'] ?></td> <td> <!-- Suppression ligne de mission --> <form action="src/supp.php" method="POST"> <input type="hidden" type="submit" name="id" value="<?= $num_proc['ID_SUIVI'] ?>"> <input type="submit" name="suppression" value="Supprimer"> </form> <!-- Saisie pour édition PDF --> <form action="src/pagePDF.php" method="POST"> <input type="submit" name="edition" value="Edition du PDF"> </form> </td> </tr> </table> </div> <?php } ?> </body> </html>
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
21 mars 2022 à 21:13
21 mars 2022 à 21:13
ça devrait ressembler à un truc du genre
<?php // AFFICHAGE DES ERREURS PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); require_once('src/bddconnect.php'); // CONNEXION BDD // INSCRIPTION if (!empty($_POST['sous_off']) && !empty($_POST['mission']) && !empty($_POST['created_date']) && !empty($_POST['numbers'])) { // STOCKAGE DES DONNEES SAISIES DANS LES VARIABLES $sous_off = htmlspecialchars(trim($_POST['sous_off'])); $mission = htmlspecialchars(trim($_POST['mission'])); $creation_date = htmlspecialchars(trim($_POST['created_date'])); $id_procedure = htmlspecialchars(trim($_POST['numbers'])); //ALIMENTATION BDD // 1 - PREPARATION DE LA REQUETE $sql_code = 'INSERT INTO suivi(id_procedure, sous_off, mission, created_date) VALUES(?, ?, ?, ?)'; $datas_code = array($id_procedure, $sous_off, $mission, $creation_date); // 2 - REQUETE try { $req = $bdd->prepare($sql_code); $req->execute($datas_code); header('location: suivi.php?success=1'); exit(); } catch (Exception $e) { echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas_code); } } // LECTURE DES DONNEES DES REQUETES $sql = 'SELECT P.id as ID_PROC , P.numbers , S.id as ID_SUIVI , S.id_procedure , S.sous_off , S.mission , S.created_date FROM procedures P LEFT JOIN suivi S ON P.numbers = S.id_procedure ORDER BY P.numbers'; try{ $requete = $bdd->query($sql); //on stocke le résultat dans un array $procedures = $requete->fetchAll(); //le temps des tests echo "<pre>Procedures <br>"; var_dump($procedures); echo "</pre>"; $procFinal = []; foreach( $procedures as $P ){ $procFinal[$P['numbers']][$P['ID_SUIVI']] = ['sous_off'=>$P['sous_off'],'mission'=>$P['mission'],'created_date'=>$P['created_date']]; } }catch(Exception $e){ echo "Erreur " . $e->getMessage(); exit; } ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="design/default.css"> <link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet"> <title>Suivi des procédures</title> </head> <body> <!-- HEADER --> <?php include "src/header.php" ?> <!-- Bouton retour haut de page --> <a href="#" class="btn"> <img src="/images/fleche_haut.ico" class="icon"> </a> <!-- BARRE DE NAVIGATION --> <?php include "src/menu.php"; foreach($procFinal as $numbers=>$V ){ ?> <div class="suivi"> <h4 id="<?= $numbers ?>">Procédure n° <?= $numbers ?></h4> <div class="attribution"> <form method="POST" action="suivi.php"> <label>Militaire</label> <input type="text" name="sous_off" placeholder="Militaire" required /> <label>Mission</label> <textarea name="mission" cols="30" rows="1"></textarea> <label>Date</label> <input type="date" name="created_date" value="<?= date('Y-m-d') ?>" required /> <input type="hidden" type="text" name="numbers" value="<?= $numbers ?>" required /> <input type="hidden" name="id_procedure" value="<?= $numbers ?>" /> <button type="submit" name="Envoyer">Valider</button> </form> </div> <table border class="proc"> <tr> <th>Militaires</th> <th>Mission</th> <th>Date d'exécution</th> <th>Suppression</th> </tr> </table> <?php foreach($V as $ID_SUIVI=>$SP) { ?> <table border class="proc"> <tr> <td><?= $SP['sous_off'] ?></td> <td><?= $SP['mission'] ?></td> <td><?= $SP['created_date'] ?></td> <td> <!-- Suppression ligne de mission --> <form action="src/supp.php" method="POST"> <input type="hidden" type="submit" name="id" value="<?= $ID_SUIVI ?>"> <input type="submit" name="suppression" value="Supprimer"> </form> <!-- Saisie pour édition PDF --> <form action="src/pagePDF.php" method="POST"> <input type="submit" name="edition" value="Edition du PDF"> </form> </td> </tr> </table> <?php } ?> </div> <?php } ?> </body> </html>*
Izzara82
Messages postés
26
Date d'inscription
dimanche 14 mars 2021
Statut
Membre
Dernière intervention
11 janvier 2023
1
21 mars 2022 à 21:39
21 mars 2022 à 21:39
Un grand merci à toi pour avoir pris le temps de résoudre mon problème.
Je vais me pencher sur ce code pour le comprendre afin de progresser dans mon apprentissage.
Je te souhaite une excellente fin de soirée et encore un grand merci.
Je vais me pencher sur ce code pour le comprendre afin de progresser dans mon apprentissage.
Je te souhaite une excellente fin de soirée et encore un grand merci.