Scinder le résultat d'une liste en plusieur tableau

Petit nouveau ! | 4 Messages

16 juin 2014, 21:02

Bonjour,

Je voudrais faire une liste d'immeubles scinder par quartiers.

Le code suivant le fait bien, mais toujours dans un même tableau. Mais dès que je commence à intégrer la commande
<table border="1" width=800>
le détail des noms de colonnes pour le premier quartier disparait.

Ayant triturer ce code dans tous les sens ainsi que mes recherches sur le net, ne me font pas avancer sur ma problématique.

De ce fait seriez vous comment scinder ma liste d'immeuble par quartier comme suit :

Quartier: A
|---------------------------------------------------------|
|Id|Quartier|Nom de l'immeuble|C.P.|Ville|Année|Type|
|-------------------------------------------------------------|
|01|A|Immeuble 1 quartier A|35200|Rennes|1972|Avec terrasse|
|-------------------------------------------------------------|
|03|A |Immeuble 2 quartier A|35200|Rennes|1972|Avec terrasse|
|-------------------------------------------------------------|


Quartier: B
|---------------------------------------------------------|
|Id|Quartier|Nom de l'immeuble|C.P.|Ville|Année|Type|
|-------------------------------------------------------------|
|02|B|Immeuble 1 quartier B|35200|Rennes|1972|Avec terrasse|
|-------------------------------------------------------------|
|04|B |Immeuble 2 quartier B|35200|Rennes|1972|Avec terrasse|
|-------------------------------------------------------------|

Voici le code :
<table><br/>
      <h1> Liste des immeubles par quartier:
			<th>Id</th>
			<th>Quartier</th>
			<th>Nom  de l'immeuble</th>
			<th>C.P.</th>
			<th>Ville</th>
			<th>Année</th>
			<th>Type</th>
	 </h1>

 <table border="1" width=800>
	 
<?php

include("/configuration.inc.php");


$sql = 'SELECT * FROM residence ORDER BY Quartier'; 
		

  // connection à la base de données
  $connection = @mysql_connect( $serveur, $utilisateur, $motdepasse ) or die( 'Connection impossible' );
  // Sélection de la BdD
@mysql_select_db( "immeubles", $connection ) or die( "Sélection de la base impossible" );

$execution = @mysql_query( $sql ) or die(mysql_error());
///./*echo  "Votre requête renvoie une erreur ! MySQL dit : ". mysql_error();*/




 // Creation et envoi de la requete

			$result = mysql_query($sql);
			$passage = 0;
			
			while($lignes = mysql_fetch_row($result)) //Tant qu'il y a un enregistrement dans la table on l'associe à une ligne du tableau
			
			
			
			// var_dump($lignes) ;
			
			
			
			
			{	
				if ($passage==0)  {
					$passage = 1;
					$valeur_comp = $lignes[1];
				echo '<p><b>Quartier '.$lignes[1].'</b></p>';
					}
					
				if ($valeur_comp !=  $lignes[1])  echo '
				<tr><td></td><th>Quartier '.$lignes[1].'</th><td><hr></td><td><hr></td><td><hr></td><td><hr></td><td><hr></td></tr>
				<th>Id</th><th>Quartier</th><th>Nom  de l\'immeuble</th><th>C.P.</th><th>Ville</th><th>Année</th><th>Type</th>';

			
				//Affichage du tableau avec les valeurs de la ligne courante
				echo '<tr><td>'.$lignes[0].'</td>'."\n"; // Numéro de l'immeuble généré automatiquement
				echo '<td>'.$lignes[1].'</td>'."\n"; // Nom du quartier
				printf ("<td><a href=\"fiche_immeuble.php?nimmeuble=%s\" >",$lignes[0]);
				echo $lignes[2].'</a></td>'."\n"; // Nom de l'immeuble
				echo '<td>'.$lignes[4].'</td>'."\n"; // Code Postal
				echo '<td>'.$lignes[5].'</td>'."\n"; // Ville
				echo '<td>'.$lignes[9].'</td>'."\n"; // Année de construction
				echo '<td>'.$lignes[10].'</td>'."\n"; // type d'immeuble
				
				$valeur_comp = $lignes[1];
				
					
			}

?>	
Dans un deuxième temps je rajouterais de classes pour faire une ligne sur deux avec différentes couleurs.

Mammouth du PHP | 1339 Messages

16 juin 2014, 21:10

Pour la ligne sur 2 en couleur c'est du CSS3
li:nth-child(odd) {
    color: green;
}
li:nth-child(even) {
    color: red;
}
Après quand je veux faire des tris de tableaux je fais ca :
$result = array();
$req = mysql_query('SELECT * FROM residence ORDER BY Quartier');
while($row = mysql_fetch_row($req)) {
 $result[$row[1][] = $row;
}

foreach($result as $quartier => $array) {
 echo 'Le quartier '.$quartier.'<br />';
  foreach($array as $lignes) {
  echo '<tr><td>'.$lignes[0].'</td>'."\n"; // Numéro de l'immeuble généré automatiquement
                                echo '<td>'.$lignes[1].'</td>'."\n"; // Nom du quartier
                                printf ("<td><a href=\"fiche_immeuble.php?nimmeuble=%s\" >",$lignes[0]);
                                echo $lignes[2].'</a></td>'."\n"; // Nom de l'immeuble
                                echo '<td>'.$lignes[4].'</td>'."\n"; // Code Postal
                                echo '<td>'.$lignes[5].'</td>'."\n"; // Ville
                                echo '<td>'.$lignes[9].'</td>'."\n"; // Année de construction
                                echo '<td>'.$lignes[10].'</td>'."\n"; // type d'immeuble
 } 
}
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Invité
Invité n'ayant pas de compte PHPfrance

16 juin 2014, 23:37

Merci pour ta proposition de code.

Voici comment j'ai modifier le code :
<?php
		
include("/configuration.inc.php");

  // connection à la base de données
  $connection = @mysql_connect( $serveur, $utilisateur, $motdepasse ) or die( 'Connection impossible' );
  // Sélection de la BdD
@mysql_select_db( "immeubles", $connection ) or die( "Sélection de la base impossible" );

$execution = @mysql_query( $req ) or die(mysql_error());
///./*echo  "Votre requête renvoie une erreur ! MySQL dit : ". mysql_error();*/


$result = array();
$req = mysql_query('SELECT * FROM residence ORDER BY Quartier');
while($row = mysql_fetch_row($req)) {
 $result[$row[1][] = $row;
}

foreach($result as $quartier => $array) {
 echo 'Le quartier '.$quartier.'<br />';
  foreach($array as $lignes) {
  echo '<tr><td>'.$lignes[0].'</td>'."\n"; // Numéro de l'immeuble généré automatiquement
                                echo '<td>'.$lignes[1].'</td>'."\n"; // Nom du quartier
                                printf ("<td><a href=\"fiche_immeuble.php?nimmeuble=%s\" >",$lignes[0]);
                                echo $lignes[2].'</a></td>'."\n"; // Nom de l'immeuble
                                echo '<td>'.$lignes[4].'</td>'."\n"; // Code Postal
                                echo '<td>'.$lignes[5].'</td>'."\n"; // Ville
                                echo '<td>'.$lignes[9].'</td>'."\n"; // Année de construction
                                echo '<td>'.$lignes[10].'</td>'."\n"; // type d'immeuble
								
?>
Et j'ai l'erreur suivante :
Parse error: syntax error, unexpected ';', expecting ']' in C:\xampp\htdocs\sylvain\essai6.php on line 17

La ligne 17 en question est celle-ci :
 $result[$row[1][] = $row;

Mammouth du PHP | 1339 Messages

17 juin 2014, 08:30

Faut chercher avant de demander sinon on apprend pas ...

$result[$row[1]][] = $row;
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Invité
Invité n'ayant pas de compte PHPfrance

17 juin 2014, 19:42

Effectivement cela me parait logis de fermer le crochet.

Le code comme cela provoque le message Query was empty

Je suis convaincu qu'il face fermer les deux accolades et surement placer le code echo '</tr>'

Mais mes multiples essais provoques l'erreur Parse error: syntax error, unexpected $end in pour la dernière ligne qui ferme le code PHP.
<?php
		
include("/configuration.inc.php");

  // connection à la base de données
  $connection = @mysql_connect( $serveur, $utilisateur, $motdepasse ) or die( 'Connection impossible' );
  // Sélection de la BdD
@mysql_select_db( "immeubles", $connection ) or die( "Sélection de la base impossible" );

$execution = @mysql_query( $req ) or die(mysql_error());
///./*echo  "Votre requête renvoie une erreur ! MySQL dit : ". mysql_error();*/


$result = array();
$req = mysql_query('SELECT * FROM residence ORDER BY Quartier');
while($row = mysql_fetch_row($req)) {
 $result[$row[1]][] = $row;
}

foreach($result as $quartier => $array) {
 echo 'Le quartier '.$quartier.'<br />';
  foreach($array as $lignes) {
  echo '<tr><td>'.$lignes[0].'</td>'."\n"; // Numéro de l'immeuble généré automatiquement
                                echo '<td>'.$lignes[1].'</td>'."\n"; // Nom du quartier
                                printf ("<td><a href=\"fiche_immeuble.php?nimmeuble=%s\" >",$lignes[0]);
                                echo $lignes[2].'</a></td>'."\n"; // Nom de l'immeuble
                                echo '<td>'.$lignes[4].'</td>'."\n"; // Code Postal
                                echo '<td>'.$lignes[5].'</td>'."\n"; // Ville
                                echo '<td>'.$lignes[9].'</td>'."\n"; // Année de construction
                                echo '<td>'.$lignes[10].'</td>'."\n"; // type d'immeuble
}
}								
?>

Petit nouveau ! | 4 Messages

02 juil. 2014, 19:32

Voici mon nouveau code :
 <?php

include("/configuration.inc.php");



		

  // connection à la base de données
  $connection = @mysql_connect( $serveur, $utilisateur, $motdepasse ) or die( 'Connection impossible' );
  // Sélection de la BdD
@mysql_select_db( "immeubles", $connection ) or die( "Sélection de la base impossible" );

$execution = @mysql_query( $req ) or die(mysql_error());
///./*echo  "Votre requête renvoie une erreur ! MySQL dit : ". mysql_error();*/

$req = 'SELECT * FROM residence ORDER BY Quartier'; 


$result = array();


while($row = mysql_fetch_row($req)) {
  $result[$row[1]][] = $row;
 

foreach($result as $quartier => $array) {
 echo 'Le quartier '.$quartier.'<br />';
  foreach($array as $lignes) {
  echo '<tr><td>'.$lignes[0].'</td>'."\n"; // Numéro de l'immeuble généré automatiquement
                                echo '<td>'.$lignes[1].'</td>'."\n"; // Nom du quartier
                                printf ("<td><a href=\"fiche_immeuble.php?nimmeuble=%s\" >",$lignes[0]);
                                echo $lignes[2].'</a></td>'."\n"; // Nom de l'immeuble
                                echo '<td>'.$lignes[4].'</td>'."\n"; // Code Postal
                                echo '<td>'.$lignes[5].'</td>'."\n"; // Ville
                                echo '<td>'.$lignes[9].'</td>'."\n"; // Année de construction
                                echo '<td>'.$lignes[10].'</td>'."\n"; // type d'immeuble
 
}
}	

?>
Je n'ai plus l'erreur Query was empty

Mais j'ai une erreur Parse error: syntax error, unexpected $end in C:\xampp\htdocs\sylvain\essai7.php on line 43

Du coup comme la ligne 43 ferme le codage PHP, je ne comprend pas trop ce qu'il cloche.

Manque t-il une instruction avant?

Mammouth du PHP | 1339 Messages

02 juil. 2014, 19:55

Pourtant ton code est bien pourri ...
Tu met $execution = @mysql_query($req) or die(mysql_error()); avant la variable $req ... ?

Tu ouvres 3 boucles : while( foreach( et foreach( et tu en ferme que 2 ....

Je serais toi, j'utiliserai mysql_fetch_array() pour afficher les noms des champs ... $lignes['nom_du_champ'] plutot que $lignes[0] et un commentaire.
Je serais toi, je mettrai la connexion a la base de données directement dans le fichier configuration ... Ca évite de le repeter a chaque page.
<?php

	include("/configuration.inc.php");

	$connection = @mysql_connect( $serveur, $utilisateur, $motdepasse ) or die( 'Connection impossible' );
	@mysql_select_db( "immeubles", $connection ) or die( "Sélection de la base impossible" );
	
	$result = array();
	$req = 'SELECT * FROM residence ORDER BY Quartier';
	$execution = @mysql_query($req) or die(mysql_error());

	while($row = mysql_fetch_row($req)) {  
	 $result[$row[1]][] = $row;
	}
 
	foreach($result as $quartier => $array) {
		
	 echo 'Le quartier '.$quartier.'<br />';
	 
	  foreach($array as $lignes) {
		echo '<tr><td>'.$lignes[0].'</td>'."\n"; // Numéro de l'immeuble généré automatiquement
		echo '<td>'.$lignes[1].'</td>'."\n"; // Nom du quartier
		echo '<td><a href="fiche_immeuble.php?nimmeuble='.$lignes[0].'">'.$lignes[2].'</a></td>'."\n"; // Nom de l'immeuble
		echo '<td>'.$lignes[4].'</td>'."\n"; // Code Postal
		echo '<td>'.$lignes[5].'</td>'."\n"; // Ville
		echo '<td>'.$lignes[9].'</td>'."\n"; // Année de construction
		echo '<td>'.$lignes[10].'</td>'."\n"; // Type d'immeuble
		}
	}

?>
Bon sinon tu me fais un message privé et on se fait un TeamViewer