Rechercher : dans
Par :

Tableau SQL lecture PHP

Dernière réponse le 27 avr 2007 à 14:13:12 akyrion3000, le 27 avr 2007 à 10:50:46 
 Signaler ce message aux modérateurs

Bonjour,

J'ai une base avec des etablissements groupés dans des secteurs
exemple :
Nom / Secteur

Maison1 SecteurA
Maison2 SecteurA
Maison3 SecteurA
Maison4 SecteurB
Maison5 SecteurB

Je voudrais faire ça :

Execution de ma requete "select nom, secteur from etablissement order by secteur "
$i = 1
Tant que (il y a des lignes){
$secteur = secteur[i]
Afficher $Secteur
  Tant que (secteur[i] est égal à $secteur) {
  Afficher Nom[i]
  i = i+1
  }
}

L'objectif final étant d'afficher au final un tableau avec en titre le secteur et en dessous les noms

Et j'en suis là :
<?php 
//
// connexion à la base
//
	include ("auth/connection.php");
// On va  lire la table etablissement
  $sql = "select nom, secteur, id_etablissement from etablissement order by secteur desc";
  $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  
//Boucle 
While($row = mysql_fetch_array($req)){
$caption=$row['secteur'];
$premier = $row['nom'];
echo "<b>$caption</b>";
echo $premier;
	While ($caption = $row['secteur'] ){
	$row = mysql_fetch_array($req);
	$nom = $row['nom'];
	echo "<br></br>";
	echo $nom;
	}
}
?>


Et le soucis est que le second secteur ne s'affiche pas mais le nom des maisons de ce secteur est listé

Une idée ? Je voudrais pouvoir lire avec $i

Meilleures réponses pour « Tableau SQL lecture PHP » dans :
EXCEL : La fonction INTERSECTION VoirVous avez un tableau constitué de lignes et de colonnes. Vous voulez connaitre la valeur de la cellule située à une intersection Ligne / Colonne de votre tableau.... Exemple : Votre tableau : - commence en C3, jusqu'en F3 ... pour les...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...

1

kij_82, le 27 avr 2007 à 11:06:38

Bonjour,

Je ne te conseille pas un while dans un while pour ce genre de traitement.
Fais plutot un test sur la valeur courante de ton secteur, un peu comme tu le fais déjà finalement, mais légèrement différent comme suit :

$curr_secteur = "";
//Boucle 
While($row = mysql_fetch_array($req)){
$caption=$row['secteur'];
if ( $curr_secteur != $caption ){
   // --- Changement de secteur (nouveau secteur)
   $ucrr_secteur = $caption;
   // --- Ecrire la nouvelle ligne qui correspond au nouveau secteur
}
// --- Puis on écrit le nom ici

}



Ainsi, à chaque fois que ton secteur change, une nouvelle ligne est crée, et les noms associés à ce secteurs seront écris en dessous.
Tu vois ce que je veux dire ?

~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~

Répondre à kij_82

2

 akyrion3000, le 27 avr 2007 à 14:13:12

Merci :)

c'est fonctionnel pour info ça donne ça :

<?php 
//
// connexion à la base
//
	include ("auth/connection.php");
// On va  lire la table etablissement
  $sql = "select nom, secteur, id_etablissement from etablissement order by secteur";
  $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  
//Initialisation des Variables
$curr_secteur = "initial";
$caption = "";
//Lecture du tableau
While($row = mysql_fetch_array($req)){
$caption=$row['secteur'];
//Si le curr_secteur n'est pas identique au secteur lu on creer un nouveau tableau d'affichage
if ( $curr_secteur != $caption ){
//Si il y avait un tableau en cours on ferme la balise
	if ( $curr_secteur != "initial"){
		echo "</table>";				
		}
	$curr_secteur = $caption;
	echo '<Table align="left" cellspacing="0" cellpadding="0" bgcolor="">';
	echo "<caption>$curr_secteur</caption>";
	$nom = $row['nom'];
//Lien
		$lien = "index.php?";
//reinitialisation de la variable url
		$url = '';
		$url .= "page=";
		$url .= "affichage_etablissement";
		$url .= "&nom_etablissement=";
		$url .= urlencode(addslashes($nom));
		echo "<tr><td><a href=$lien$url>";
		echo "$nom"; 
		echo "</a></td></tr>"; 
		}
//Sinon on inscrit un nom dans le tableau d'affichage en cours
else { 
	$nom = $row['nom'];
	//Lien
		$lien = "index.php?";
//reinitialisation de la variable url
		$url = '';
		$url .= "page=";
		$url .= "affichage_etablissement";
		$url .= "&nom_etablissement=";
		$url .= urlencode(addslashes($nom));
		echo "<tr><td><a href=$lien$url>";
		echo "$nom"; 
		echo "</a></td></tr>"; 
	}
}
//on ferme le tableau
?>
</table>
Aky Dépanneur de Paris

Répondre à akyrion3000
Collection CommentÇaMarche.net