Organiser les résultats d'une requête SQL

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Organiser les résultats d'une requête SQL

par Invité » 06 juin 2007, 18:39

je te remercie ! ça fonctionne impec maintenant !

par Invité » 06 juin 2007, 14:07

Voici ce que j'aurais probablement fait :
<?php

$sql = "SELECT hauteur, largeur, reference, longueur"
	. " FROM table"
	. " ORDER BY hauteur, longeur;";

$result = mysql_query($sql);

while ($row = mysql_fetch_array($result))
{
	$hauteur = $row['hauteur'];
	$longueur = $row['longueur'];

	// On vérifie la présence d'une valeur dans le tableau afin d'ajouter un séparateur (qui ne devra pas se trouver dans les valeurs issues de la requête !
	if ($tab_ref[$hauteur][$longueur]['reference'] != '')
		$tab_ref[$hauteur][$longueur]['reference'] .= "/";
	if ($tab_ref[$hauteur][$longueur]['largeur'] != '')
		$tab_ref[$hauteur][$longueur]['largeur'] .= "/";

	// On concatène les données afin de pouvoir les récupérer sur une seule ligne par la suite
	$tab_ref[$hauteur][$longueur]['reference'] .= $row['reference'];
	$tab_ref[$hauteur][$longueur]['largeur'] .= $row['largeur'];
}

// Pour chaque valeur du tableau $tab_ref ($tab_ref[$key] => $tab_ref[$hauteur])
foreach ($tab_ref as $key => $value)
{
	// Pour chaque valeur du tableau $tab_ref[$key] ($tab_ref[$key][$key2] => $tab_ref[$hauteur][$longueur])
	foreach ($tab_ref as $key2 => $value2)
	{
		echo "<TABLE>";
		/*********************** On insère les valeurs des largeurs : ***********************/
		echo "<TR>";
		echo "<TD><H1>Largeurs&nbsp;:&nbsp;</H1></TD>";
		// On transforme la chaîne de données des références en une variable de type tableau que l'on insère dans le tableau à afficher
		$valeurs = explode ("/", $tab_ref[$key][$key2]['largeur']);
		// On insère chacune des valeurs du tableau dans une cellule différente
		foreach ($valeurs as $values_ref)
		{
			echo "<TD>".$values_ref."</TD>";
		}
		echo "</TR>";
		/*********************** On insère les valeurs des références : ***********************/
		echo "<TR>";
		echo "<TD><H1>R&eacute;f&eacute;rences&nbsp;:&nbsp;</H1></TD>";
		// On transforme la chaîne de données des références en une variable de type tableau que l'on insère dans le tableau à afficher
		$valeurs = explode ("/", $tab_ref[$key][$key2]['reference']);
		// On insère chacune des valeurs du tableau dans une cellule différente
		foreach ($valeurs as $values_ref)
		{
			echo "<TD>".$values_ref."</TD>";
		}
		echo "</TR>";
		echo "</TABLE>";
	}
}
?>
Mais je ne l'ai pas testé, et ce n'est probablement pas la meilleure solution !
Ca te donne au moins une piste :wink:

Bon courage

par Invité » 06 juin 2007, 11:46

Merci beaucoup pour ta réponse.
Alors effectivement, pour chaque couple hauteur/longueur différent (ordre croissant pour les 2), j'aimerais afficher un tableau comprenant les références avec les largeurs en colonne dans un ordre croissant.
Sinon, pour la largeur de la colonne du tableau, non, ça n'a pas du tout d'importance ^^
Je suppose que ça pourrait éventuellement passer par un array, mais je vois pas du tout comment faire...

par Snoops » 06 juin 2007, 11:34

1) Tu veux quoi comme tri ? Parce que d'après ce que je vois : sur la hauteur c'est croissant et sur la longueur décroissant.
2) Tu veux grouper en différents tableaux suivant les couples hauteur/longueur différents ?
3) D'après tes schémas plus la largeur est grande plus la colonne est petite, est-ce voulu ?
4) La valeur de la largeur est-elle l'équivalent de la taille de la colonne en pixel ?

par Invité » 06 juin 2007, 11:21

personne n'aurait une suggestion ? d'avance merci

Organiser les résultats d'une requête SQL

par Invité » 05 juin 2007, 22:30

Bonsoir à tous,
Là je nage complètement... J'ai une base de données, et j'aimerais organiser les résultats en fonction de plusieurs champs de la base de données...
Tout d'abord les résultats doivent être triés en fonction de la longueur et de la hauteur, puis ensuite organisées dans un tableau... où les colonnes sont formées par la largeur (contenue dans la base de données). Etant donnné qu'une petite illustration vaudra mieux que de longs discours, voici le schéma... le premier tableau représente la base de données telle qu'elle est, et la suite représente ce que je souhaiterais réaliser
Image

La seule chose que j'ai réussi à faire, c'est déjà trier par hauteur et longueur... Par contre, pour mettre les largeurs en colonne comme dans l'image... je sais pas du tout ! donc, voici ce que j'ai fait, tout en lignes :(

Code : Tout sélectionner

<?php $sql = "SELECT hauteur, largeur, reference, longueur FROM table"; $result = mysql_query($sql); $h = 0; $l = 0; while ($row = mysql_fetch_array($result)) { if($h!=$row['lhauteur'] OR $l!=$row['longueur']) { if($h!=0 AND $l!=0) echo '</table>'; echo '<h1>Hauteur '.$row['hauteur'].' / Longueur '.$row['longueur'].' mm</h1><table><tr><th>Largeur</th><th>Reference</th></tr>; } echo '<tr><td>'.$row['largeur'].'</td><td>'.$row['reference].'</td></tr>'; $h = $row['hauteur']; $l = $row['longeur']; } ?>
D'avance merci pour votre aide...