Bonjour à toutes et à tous,
j'essaye de faire une requête triée en fonction de deux champs et je n'y arrive pas.
voici mon script :
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
 
<?php
	/* ------------------------------------------------------------------------------------------------------------------------------------------- */
	/* Requête d'extraction d'une table identifiée par l'argument '$NomTabEntr' dans la base $nom_du_serveur = "mysql:host=localhost;dbname=MaBase"; */
	/* ------------------------------------------------------------------------------------------------------------------------------------------- */
	function RequeteExtrac($NomTabEntr, $Champ1, $Champ2)
	{
		$TabRslt = Array();		// Création et initialisation de variable qui contiendra le résultat de la requête
		$TabRenv = Array();		// Création et initialisation de variable qui contiendra la table renvoyée par la fonction
		$LignPHP = Array();		// Création et initialisation de variable : 1 ligne de la table
		$Tretour = Array(); 	// création et initialisation de la variable de retour de la fonction
 
		/*-----------------------------------------------------*/
		/* Informations pour la connexion à la base de données */
		/*-----------------------------------------------------*/
		$nom_du_serveur  = "mysql:host=localhost;dbname=MaBase";
		$nom_utilisateur = "MonUtilisateur";
		$mot_de_passe    = "MonMotDePasse";
 
		 $options         = array(
			PDO::MYSQL_ATTR_INIT_COMMAND => "set names utf8",
			PDO::ATTR_CASE               => PDO::CASE_LOWER,
		);
 
		// Si tout va bien, on peut continuer
		/*---------------------------------------*/
		/* Connexion au Serveur en utilisant PDO */
		/*---------------------------------------*/
		try //  PHP essaie d'exécuter les instructions à l'intérieur du bloc try. S'il y a une erreur, il rentre dans le bloc catch et fait ce qu'on lui demande (ici, on arrête l'exécution de la page en affichant un message décrivant l'erreur).
		{
			$bdd = new PDO($nom_du_serveur, $nom_utilisateur, $mot_de_passe, $options); // Instance de l'objet PDO (notre connexion)
		}
		catch (Exception $e) // S'il y a une erreur, il rentre dans le bloc catch et fait ce qu'on lui demande (ici, on arrête l'exécution de la page en affichant un message décrivant l'erreur).
		{
			echo "Connection à MySql impossible : ", $e->getMessage();
			die();    // En cas d'erreur, on affiche un message et on arrête tout
		}
 
		// Si tout va bien, on peut continuer
					// NomTabEntr	: nom de la table MySQL : 'MaTable'
					// $Champ1		: Nom du champ de 1er tri 'NOM'
					// $Champ2		: Nom du champ de 2ème tri 'PRENOM'
		$TabRslt = $bdd->query('SELECT * FROM '.$NomTabEntr.' ORDER BY '.$Champ1.','.$Champ2);// On récupère tout le contenu de la table '$NomTabEntr' reçue en paramètre par la fonction et triée en fonction des champs '$Champ1' puis '$Champ2'
		$TabRslt->setFetchMode(PDO::FETCH_ASSOC);
 
		// les deux boucles imbriquées 'foreach', ci-dessous, servent à créer un tableau PHP '$TabRenv' contenant la table demandée à la fonction
		// Le premier foreach() lit chaque ligne du tableau
		foreach($TabRslt as $LignTab) 			// la boucle foreach : à chaque tour de boucle, la valeur de l'élément suivant, du tableau $TabRslt, est mise dans la variable $LignTab (qui est elle même un tableau).
		{
			// Le deuxième foreach() lit chaque tableau de chaque ligne. On accède à ses propriétés et à ses valeurs avec les variables $cle et $valeur.
			//foreach($LignTab as $cle=>$valeur) 		// la boucle foreach : à chaque tour de boucle, la valeur de l'élément suivant, du tableau $LignTab, est mise dans la variable $element.
			foreach($LignTab as $valeur) 		// la boucle foreach : à chaque tour de boucle, la valeur de l'élément suivant, du tableau $LignTab, est mise dans la variable $valeur.
			{
				Array_push($LignPHP,$valeur);	// Je rentre la valeur contenue dans '$valeur' dans '$LignPHP' 
			}
			Array_push($TabRenv,$LignPHP); 		// Je rentre la valeur contenue dans '$LignPHP' dans '$TabRenv'
			$LignPHP = Array();					// pour vider mon tableau de ligne je le redéfinis
		}
 
		$TabRslt->closeCursor(); 				// Termine le traitement de la requête
 
		$Tretour = json_encode($TabRenv);		// json_encode() Retourne la représentation JSON d'une valeur (Toutes les chaînes doivent être encodées UTF-8). Retourne une chaîne encodé JSON ou FALSE si une erreur survient. 
		return $Tretour;
	}
	/* ---------------------------------------------------------------------------------------------------------------- */
	/* Fin de la Requête d'extraction d'une table identifiée par l'argument '$NomTabEntr' dans la base $nom_du_serveur = "MaBase"; */
	/* ---------------------------------------------------------------------------------------------------------------- */
 
?>
mon appel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
<?php
	// 'MaTable'	: nom de la table MySQL
	// 'NOM'		: Nom du champ de 1er tri
	// 'PRENOM'		: Nom du champ de 2ème tri
	$Tattendue = json_decode(RequeteExtrac('MaTable', 'NOM', 'PRENOM')); 	//json_decode — Décode une chaîne JSON (Cette fonction ne traite qu'avec des chaînes encodées avec UTF-8). Récupère une chaîne encodée JSON et la convertit en une variable PHP. Retourne la valeur encodée dans le paramètre json dans le type PHP approprié.
?>
je récupère ma table, mais elle n'est pas triée. D’où vient mon erreur ?
merci