Bonjour,
En guise de hobby j'apprend php , mysql.
J'ai créé une page avec un tableau html dans lequel j'inscris les données issues d'un SELECT, avec un FOREACH.
J'ai une fonction qui va chercher les infos, dans laquelle j'ai un switch car 'ai ajouté des boutons pour classer les données.
J'ai plusieurs requêtes avec ORDER BY qui varient pour chaque cas du switch.
Tout fonctionne.
J'ai aussi essayé avec array_multisort et dans ce cas là je n'ai plus qu'une seule requête que je manipule avec array_multisort.
Celà fonctionne aussi, simplement je ne sais pas si c'est correct, ce qui convient le mieux ou pas !
Si quelqu'un peut m'éclaicir l'esprit et me dire ce qui est logique ou pas les erreurs que j'ai pu faire même si les bons résultats s'affichent.

Voici mes codes.

multi requete
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
74
75
76
77
78
79
80
81
82
83
84
 
function produits()
{	
           $tableau = '';
	$ordre = $_GET['ordre'];
	switch($ordre)
	{
/*1*/	case 'desc' :
		$pdo = PDO2::getInstance();
		$sql = $pdo->prepare('SELECT reference, description, prix, marqueINT, sousCatINT FROM articles
		WHERE sousCatINT=:souscat ORDER BY prix DESC');
		$sql->bindValue(':souscat', $_GET['sousCat']);
		$sql->execute();
		if($result = $sql->fetchAll(PDO::FETCH_ASSOC))
                       {
                       include  VUE.'tableau_produits.php';
                       } 
		break;
/*2*/	case 'asc' :
		$pdo = PDO2::getInstance();
		$sql = $pdo->prepare('SELECT reference, description, prix, marqueINT, sousCatINT FROM articles
			WHERE sousCatINT=:souscat ORDER BY prix ASC');
		$sql->bindValue(':souscat', $_GET['sousCat']);
		$sql->execute();
		if($result = $sql->fetchAll(PDO::FETCH_ASSOC))
                       {
                       include  VUE.'tableau_produits.php';
                       } 
		break;
/*3*/	case 'descm' :
		$pdo = PDO2::getInstance();
		$sql = $pdo->prepare('SELECT reference, description, prix, marqueINT, sousCatINT FROM articles
			WHERE sousCatINT=:souscat ORDER BY marqueINT DESC, prix DESC');
		$sql->bindValue(':souscat', $_GET['sousCat']);
		$sql->execute();
		if($result = $sql->fetchAll(PDO::FETCH_ASSOC))
                       {
                       include  VUE.'tableau_produits.php';
                       } 
		break;
/*4*/	case 'ascm' :
		$pdo = PDO2::getInstance();
		$sql = $pdo->prepare('SELECT reference, description, prix, marqueINT, sousCatINT FROM articles
			WHERE sousCatINT=:souscat ORDER BY marqueINT ASC, prix ASC');
		$sql->bindValue(':souscat', $_GET['sousCat']);
		$sql->execute();
		if($result = $sql->fetchAll(PDO::FETCH_ASSOC))
                       {
                       include  VUE.'tableau_produits.php';
                       } 
		break;
/*5*/	default :
		$pdo = PDO2::getInstance();
		$sql = $pdo->prepare('SELECT reference, description, prix, marqueINT, sousCatINT FROM articles
			WHERE sousCatINT=:souscat ORDER BY reference');
		$sql->bindValue(':souscat', $_GET['sousCat']);
		$sql->execute();
		$result = $sql->fetchAll(PDO::FETCH_ASSOC);
		$sql->closeCursor();
		if (count($result)==0)
			{	
				$tableau ='<tr>Aucun article en stock...</tr>';
 
			}
			if (count($result))
			{				
				foreach( $result as $articles) 
				{
 
				$tableau .='<tr>';
				$tableau .='<td>'.$articles['marqueINT'].'</td>';				
				$tableau .='<td>'.$articles['reference'].'</td>';
				$tableau .='<td><a href="#" class="colornone">'.$articles['description'].'</a></td>';			
				$tableau .='<td>'.$articles['prix'].' €</td>';
				$tableau .='</tr>';
				}
				//echo '<pre>'.print_r($result).'</pre>';
			}
		break;		
	}
	return $tableau;
 
}
include VUE.'articles.php';
attay_multisort
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
 
<?php
function produits()
{	
	$pdo = PDO2::getInstance();
	$sql = $pdo->prepare('SELECT reference, description, prix, marqueINT, sousCatINT 
			        FROM articles
			        WHERE sousCatINT=:souscat 
						  ORDER BY reference');
	$sql->bindValue(':souscat', $_GET['sousCat']);
	$sql->execute();
	$result = $sql->fetchAll(PDO::FETCH_ASSOC);
	$sql->closeCursor();
	$ordre = $_GET['ordre'];
	$tableau = '';
	switch($ordre)
	{
/*1*/	case 'desc' :
		foreach( $result as $key =>$article) 
		{
			$prix[$key]  = $article['prix'];
			$mark[$key] = $article['marqueINT'];
			//$ref[$key] = $article['reference'];
			//$descrip[$key] = $article['description'];
 
		} 
		array_multisort($prix, SORT_DESC, $result);
		include  VUE.'tableau_produits.php';
		break;
/*2*/	case 'asc' :
		foreach( $result as $key =>$article) 
		{
			$prix[$key]  = $article['prix'];
			$mark[$key] = $article['marqueINT'];
			//$ref[$key] = $article['reference'];
			//$descrip[$key] = $article['description'];
		} 
		array_multisort($prix, SORT_ASC, $result);
		include VUE.'tableau_produits.php';
		break;
/*3*/	case 'descm' :
		foreach( $result as $key =>$article) 
		{
			$prix[$key]  = $article['prix'];
			$mark[$key] = $article['marqueINT'];
			//$ref[$key] = $article['reference'];
			//$descrip[$key] = $article['description'];
		} 
		array_multisort($mark, SORT_STRING, $prix, SORT_DESC, $result);
		include  VUE.'tableau_produits.php';
		break;
/*4*/	case 'ascm' :
		foreach( $result as $key =>$article) 
		{
			$prix[$key]  = $article['prix'];
			$mark[$key] = $article['marqueINT'];
			//$ref[$key] = $article['reference'];
			//$descrip[$key] = $article['description'];
		} 
		array_multisort($mark, SORT_STRING, $prix, SORT_ASC, $result);
		include VUE.'tableau_produits.php';
		break;
/*5*/	default :
		$pdo = PDO2::getInstance();
		$sql = $pdo->prepare('SELECT reference, description, prix, marqueINT, sousCatINT FROM articles
							WHERE sousCatINT=:souscat ORDER BY reference');
		$sql->bindValue(':souscat', $_GET['sousCat']);
		$sql->execute();
		$tableau ='';
		$result = $sql->fetchAll(PDO::FETCH_ASSOC);
 
 
			$sql->closeCursor();
		if (count($result)==0)
			{	
				$tableau ='<tr>Aucun article en stock...</tr>';
 
			}
			if (count($result))
			{				
				foreach( $result as $articles) 
				{
				$tableau .='<tr>';
				$tableau .='<td>'.$articles['marqueINT'].'</td>';				
				$tableau .='<td>'.$articles['reference'].'</td>';
				$tableau .='<td><a href="#" class="colornone">'.$articles['description'].'</a></td>';			
				$tableau .='<td>'.$articles['prix'].' €</td>';
				$tableau .='</tr>';
				}
				//echo '<pre>'.print_r($result).'</pre>';
			}
		break;		
	}
	return $tableau;
 
}
include VUE.'articles.php';
tabeau_produits
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
foreach( $result as $articles) 
			{
				$tableau .='<tr>';
				$tableau .='<td>'.$articles['marqueINT'].'</td>';				
				$tableau .='<td>'.$articles['reference'].'</td>';
				$tableau .='<td><a href="#" class="colornone">'.$articles['description'].'</a></td>';			
				$tableau .='<td>'.$articles['prix'].' €</td>';
				$tableau .='</tr>';
 
			}

Voilà, j'espère que mon message est clair, je découvre la programmation depuis 2 mois, j'aime apprendre mais y'en a des choses ...
Par avance merci !