Bonjour à tous,
J’ai changé la façon d’aller chercher mes listes en pompant un peux à droite et à gauche, je me permets d’en poser l’exemple fonctionnel ici, Même si je me doute que ce n’est certainement pas la meilleure façon de faire.
Maintenant je cherche à filtrer certaines colonnes de ma table « Objets ».
Clairement mon but serrait d’afficher une fenêtre dans la page PHP, qui permette de cocher les données de la table Objets, et de n’afficher que les données cochées.
Je suis preneur si quelqu’un a une piste sur la sélection de données à afficher.
A savoir, je ne veux pas écrire les données de la fenêtre à la main, je cherche à faire lister les données, en exclure les ID, et afficher les données cochées.
Récupération données -> sélection données -> envois de la requêtes des données sélectionnées -affiche des données
Je suis preneur pour toutes pistes sur ce sujet, merci d’avance
Appelles multiples dans DB et génération de listes déroulantes.
Pour cet exemple je suis parti sur des tables qui ne contiendrons pas plus de 99 chiffres, (à modifier selon besoins)
LA base
Les 3 tables
Le fichier php (index.php, par exemple)
Le fichier php (index.php, par exemple)
Le fichier qui va appeler la 1ere table qui contient les Groupes
Dans cet exemple il doit se nommer :
generer-options-groupe.php
Le fichier qui va appeler la 2ème table qui contient les Sous_Groupes
Dans cet exemple il doit se nommer :
generer-options-sous_groupes.php
Le fichier qui va appeler la 3ème table qui contient la liste les Objets recherchées
Dans cet exemple il doit se nommer :
generer-options-objet.php
Modifié par uniuc (03 May 2023 - 20:20)
J’ai changé la façon d’aller chercher mes listes en pompant un peux à droite et à gauche, je me permets d’en poser l’exemple fonctionnel ici, Même si je me doute que ce n’est certainement pas la meilleure façon de faire.
Maintenant je cherche à filtrer certaines colonnes de ma table « Objets ».
Clairement mon but serrait d’afficher une fenêtre dans la page PHP, qui permette de cocher les données de la table Objets, et de n’afficher que les données cochées.
Je suis preneur si quelqu’un a une piste sur la sélection de données à afficher.
A savoir, je ne veux pas écrire les données de la fenêtre à la main, je cherche à faire lister les données, en exclure les ID, et afficher les données cochées.
Récupération données -> sélection données -> envois de la requêtes des données sélectionnées -affiche des données
Je suis preneur pour toutes pistes sur ce sujet, merci d’avance
Appelles multiples dans DB et génération de listes déroulantes.
Pour cet exemple je suis parti sur des tables qui ne contiendrons pas plus de 99 chiffres, (à modifier selon besoins)
LA base
CREATE DATABASE test ;
Les 3 tables
CREATE TABLE Groupes (
id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
groupe_id INT(2) NOT NULL,
groupe_nom VARCHAR(255)
);
INSERT INTO Groupes (groupe_id, groupe_nom) VALUES (03, 'Ok_Groupe_03');
CREATE TABLE Sous_Groupes (
id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
sous_groupe_groupe_id INT(2) NOT NULL,
sous_groupe_id INT(2) NOT NULL,
sous_groupe_nom VARCHAR(255)
);
INSERT INTO Sous_Groupes (sous_groupe_groupe_id, sous_groupe_id, sous_groupe_nom) VALUES (03, 08,'Ok_S-Grp_08');
CREATE TABLE Objets (
id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
objet_sous_groupe_id INT(2) NOT NULL,
objet_id INT(2) NOT NULL,
objet_nom VARCHAR(255),
donnée_1 INT(2) NOT NULL,
donnée_2 INT(2) NOT NULL,
donnée_3 INT(2) NOT NULL
);
INSERT INTO Objets (objet_sous_groupe_id, objet_id, objet_nom, donnée_1, donnée_2, donnée_3) VALUES (08,01,'Ok_Obj_01',23, 12, 14);
Le fichier php (index.php, par exemple)
Le fichier php (index.php, par exemple)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
<script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
<style type="text/css">
.f1{
display: flex;
flex-direction: column;
margin-top: 100px;
width: 290px;
}
.select{
margin-top: 5px;
}
</style>
</head>
<body>
<form class="f1" method="post">
<label for="groupe">groupe :</label><select name="groupe" id="groupe" required></select>
<label for="sous_groupe">sous_groupe :</label><select name="sous_groupe" id="sous_groupe" required></select>
<label for="objet">objet :</label><select name="objet" id="objet" required></select>
<input type="submit" value="Envoyer" />
</form>
<script>
$(function () {
// dès le chargement de la page, on remplit la liste des groupe
remplirgroupe();
// lorsque le groupe sera changé dans la liste, on charge la liste des sous_groupes ou états correspondants
$("#groupe").change(function (event) {
remplirsous_groupes();
});
// lorsque sous_groupe sera changé dans la liste, on charge la liste des objets ou états correspondants
$("#sous_groupe").change(function (event) {
remplirobjet();
});
});
function remplirgroupe() {
var jqxhr = $.ajax({
type: 'get', // on n'a pas de paramètres à envoyer alors GET est sécuritaire
url: 'generer-options-groupe.php',
dataType: "html", // le fichier php fait un echo de code HTML
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
data: ""
})
.done(function (response, textStatus, jqXHR) {
// Appel réussi : on affiche le code HTML généré par le code serveur
if ("REQUETE" == response) {
$("#groupe").html("<option value=''>Un problème technique nous empêche de retrouver les groupe (code R).</option>");
}
else {
$("#groupe").html("<option value=''>Veuillez choisir...</option>" + response);
}
})
}
function remplirsous_groupes() {
var groupe = $('#groupe').val();
//verbose consol
var dataString = 'groupe=' + groupe;
var jqxhr = $.ajax({
type: 'post',
url: 'generer-options-sous_groupes.php',
dataType: "html", // le fichier php fait un echo de code HTML
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
data: dataString
})
.done(function (response, textStatus, jqXHR) {
// Appel réussi : on affiche le code HTML généré par le code serveur
if ("PARAMETRE" == response) {
$("#sous_groupe").html("<option value=''>Le groupe sélectionné n'est pas valide.</option>");
}
else {
$("#sous_groupe").html("<option value=''>Veuillez choisir...</option>" + response);
}
})
}
function remplirobjet() {
var sous_groupe = $('#sous_groupe').val();
var dataString = 'sous_groupe=' + sous_groupe;
var jqxhr = $.ajax({
type: 'post',
url: 'generer-options-objet.php',
dataType: "html", // le fichier php fait un echo de code HTML
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
data: dataString
})
.done(function (response, textStatus, jqXHR) {
// Appel réussi : on affiche le code HTML généré par le code serveur
if ("PARAMETRE" == response) {
$("#objet").html("<option value=''>Le groupe sélectionné n'est pas valide.</option>");
}
else {
$("#objet").html("<option value=''>Veuillez choisir...</option>" + response);
}
})
}
</script>
</body>
</html>
Le fichier qui va appeler la 1ere table qui contient les Groupes
Dans cet exemple il doit se nommer :
generer-options-groupe.php
<?php
// connexion à la base de données
$mysqli = new mysqli("localhost", "Utilisateur", "MotDePasse", "Nom_De_Base");
// requête pour récupérer les groupe
$requete = "SELECT groupe_id, groupe_nom FROM Groupes ORDER BY groupe_nom";
$resultat = $mysqli->query($requete); // exécution de la requête
if ($resultat && $resultat->num_rows > 0) { // s'il y a des résultats
$options = ""; // initialisation des options pour le select
while ($row = $resultat->fetch_assoc()) { // boucle pour récupérer les données de chaque ligne
$options .= "<option value='{$row['groupe_id']}'>{$row['groupe_nom']}</option>"; // ajout des options au résultat
}
echo $options; // envoi des options en réponse
} else {
echo "AUCUNEDONNEE"; // pas de données retournées par la requête
}
// fermeture de la connexion
$mysqli->close();
?>
Le fichier qui va appeler la 2ème table qui contient les Sous_Groupes
Dans cet exemple il doit se nommer :
generer-options-sous_groupes.php
<?php
// Connexion à la base de données
$mysqli = new mysqli("localhost", "Utilisateur", "MotDePasse", "Nom_De_Base");
// Vérifie si les données nécessaires ont été reçues en paramètre
if (!isset($_POST['groupe']) || $_POST['groupe'] == '') {
echo "PARAMETRE";
exit;
}
// Récupère l'identifiant du groupe sélectionné
$groupe = intval($_POST['groupe']);
// Recherche si l'identifiant du groupe existe dans la BD
$stmt = $mysqli->prepare("SELECT groupe_nom FROM Groupes WHERE groupe_id = ?");
$stmt->bind_param("i", $groupe);
$stmt->execute();
$stmt->store_result();
if ($stmt->num_rows == 0) {
echo "PARAMETRE";
exit;
}
// Récupère les sous_groupes correspondantes au groupe sélectionné
$stmt = $mysqli->prepare("SELECT sous_groupe_id, sous_groupe_nom FROM Sous_Groupes WHERE sous_groupe_groupe_id = ? ORDER BY sous_groupe_nom");
$stmt->bind_param("i", $groupe);
$stmt->execute();
$stmt->store_result();
if ($stmt->num_rows == 0) {
echo "AUCUNEDONNEE";
exit;
}
// Génère les balises <option> correspondantes aux sous_groupes trouvées
$stmt->bind_result($sous_groupe_id, $sous_groupe_nom);
$retour = "";
while ($stmt->fetch()) {
$retour .= "<option value='$sous_groupe_id'>$sous_groupe_nom</option>";
}
echo $retour;
// fermeture de la connexion
$mysqli->close();
?>
Le fichier qui va appeler la 3ème table qui contient la liste les Objets recherchées
Dans cet exemple il doit se nommer :
generer-options-objet.php
<?php
// Connexion à la base de données
$mysqli = new mysqli("localhost", "Utilisateur", "MotDePasse", "Nom_De_Base");
// Vérifie si les données nécessaires ont été reçues en paramètre
if (!isset($_POST['sous_groupe']) || $_POST['sous_groupe'] == '') {
echo "PARAMETRE";
exit;
}
// Récupère l'identifiant du sous_groupe sélectionné
$sous_groupe = intval($_POST['sous_groupe']);
// Recherche si l'identifiant du sous_groupe existe dans la BD
$stmt = $mysqli->prepare("SELECT sous_groupe_nom FROM Sous_Groupes WHERE sous_groupe_id = ?");
$stmt->bind_param("i", $sous_groupe);
$stmt->execute();
$stmt->store_result();
if ($stmt->num_rows == 0) {
echo "PARAMETRE";
exit;
}
// Récupère les objets correspondantes au sous_groupe sélectionné
$stmt = $mysqli->prepare("SELECT objet_id, objet_nom FROM Objets WHERE objet_sous_groupe_id = ? ORDER BY objet_nom");
$stmt->bind_param("i", $sous_groupe);
$stmt->execute();
$stmt->store_result();
if ($stmt->num_rows == 0) {
echo "AUCUNEDONNEE";
exit;
}
// Génère les balises <option> correspondantes aux objets trouvées
$stmt->bind_result($objet_id, $objet_nom);
$retour = "";
while ($stmt->fetch()) {
$retour .= "<option value='$objet_id'>$objet_nom</option>";
}
echo $retour;
// fermeture de la connexion
$mysqli->close();
?>
Modifié par uniuc (03 May 2023 - 20:20)