Page 1 sur 1

mise en forme resultat d'une requete

Posté : 27 mars 2009, 15:32
par danceau
Bonjour,
je suis assez novice en php et j'ai un problème pour récupérer des
données...
Il s'agit de réservation de véhicules.
j'ai deux tables:
une qui contient l'identifiant du véhicule et son type
Id Nom Type
125 laguna SW
Une deuxième qui contient pour ce même id plusieurs enregistrement
correspondant à des valeurs numériques ou des dates:

Id Nombre
125 10
120 4
125 60
125 7
220 56 etc..;

Je souhaite récupérer les données des deux tables sous cette forme :
(Pour id 125)
id Nom Type Nombre1 Nombre2 Nombre3 etc...
125 laguna SW 10 60 7

J'aimerai afficher uniquement une fois l'ID, le Nom et le Type et faire suivre de toutes les valeurs de la table2

Voici le code que j'ai tenté d'écrire...

<?php

echo '<table>'; 
// on récupère les identifiants de connexion à la base de données via l'inclusion du fichier id_connect.inc.php
include ("config.inc2.php");


//requête de sélection
$select_bdd = mysql_select_db($nom_bdd);
$requete = "select table1.id,table1.Nom,table1.type,table2.valeur from table1,table2 where table1.id=table2.id and table1.id='125'";
$resultat = mysql_query($requete) or die ('Erreur '.$requete.' '.mysql_error());
$n = mysql_num_rows($resultat);
//$result = mysql_fetch_array($resultat) ;
//$ID = $result['id']; 

while($row = mysql_fetch_row($resultat)){
$ID = $row[0];
$Nom=$row[1];
$Type=$row[2];
//echo $ID;
echo "<tr>\n
<td>Nom : $Nom</td>\n
<td>Type: $Type</td>\n
</tr>\n";

for($valeur=3;$valeur<=$n;$valeur++) {
$Val= $row[$valeur];
echo $Val ;
}}



?>
Mais le résultat est celui là :
10 60 7 etc....

Nom: Laguna Type : SW
Nom: Laguna Type : SW
Nom: Laguna Type : SW
etc..
Alors que je souhaiterais ceci :

id Nom Type Valeur1 Valeur2 Valeur3 etc... (le nom du champ doit s'incrementer en fonction)
125 laguna SW 10 60 7

Si vous avez une idée ou une piste, je suis preneur,
Merci d'avance
David

Posté : 03 avr. 2009, 11:42
par Innocentus
Peut-être cette ligne va marche:
[...]
$requete = "select DISTINCT table1.id,table1.Nom,table1.type,table2.valeur from table1,table2 where table1.id=table2.id and table1.id='125'";
[...]
Inno

Posté : 03 avr. 2009, 14:03
par Ryle
Ton problème est un soucis d'affichage html :
// Tu créer une ligne de tableau, dans laquelle tu mets deux cellules
echo "<tr>\n 
<td>Nom : $Nom</td>\n 
<td>Type: $Type</td>\n 
</tr>\n"; 
// puis tu fermes la ligne, indiquant au navigateur qu'il n'y a pas d'autres cellules à mettre sur cette ligne

// et tu balances ensuite toutes tes valeurs au milieu du tableau...
for($valeur=3;$valeur<=$n;$valeur++) { 
$Val= $row[$valeur]; 
echo $Val ;
Résultat, le navigateur ne sait pas quoi en faire et il les affiche comme il peut et où il peut, généralement avant le tableau.

Ajoute simplement une cellule à ta ligne dans laquelle tu pourras écrire ce que tu veux, ou ajoute une cellule par donnée, selon ce dont tu as besoin :
echo "<tr>\n 
<td>Nom : ".$Nom."</td>\n 
<td>Type: ".$Type."</td>\n
<td>";

for ($valeur=3; $valeur<=$n; $valeur++) { 
  echo $row[$valeur]; 
}

echo "</td></tr>\n";