Page 1 sur 1

structurer les données dans un tableau

Posté : 30 mars 2007, 09:59
par martial
Bonjour à tous!!

Toujours plongé dans la gestion des stock et possédant une base avec plusieurs milliers d'articles, je souhaiterais structurer les données renvoyées par une requête.
En effet, j'ai rajouté un champ Région dans la base et en fonction des Codes Postaux j'ai renseigné ces champs par trois régions possibles
1/ Paris-IdF
2/Province Nord
3/ province sud

Je souhaiterais donc lister trois tableaux différents et à la suite sur la page et ce en fonction des N° de colis retrounés par la base. En effet les utilisateurs saisissent les quatre ou cinq derniers caractéres et la base m'affiche tous les colis dont les derniers caractéres correspondent (merci encore Grands Maitres Sadeq et Ryle)

Ex:
PARIS-IDF
N° NOM ADRESSE ENVOI
MMPP123A TOTO Jules 3 rue Verte PARIS 75012 01/01/07

PROVINCE NORD
N° NOM ADRESSE ENVOI
56LL123A DUPONT louis 3 rue Bleue LILLE 59012 01/01/07
etc...

J'ai bien compris qu'il fallait mettre des conditions (si REG= PARIS-IDF alors tableau...) Mais là j'avoue je bloque
Voici le code recherche.php

Code : Tout sélectionner

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Rechercher</title> </head> <body> <br> <?php if ( !$_POST[choix] || !$_POST[recherche]) { echo "<td colspan=9 align=center bgcolor='#000000'><h2>SAISIR LES CRITERES DE RECHERCHE</td>"; exit; } $connect=mysql_connect("localhost", "root", "") or die ("Echec de la connexion au serveur !"); $select=mysql_select_db("Gestion"); $query="select * from t_col where $_POST[choix] LIKE '%$_POST[recherche]'"ORDER BY REG` ASC; $result=mysql_query($query); if ( $result && mysql_num_rows($result) ==0) echo "<td colspan=9 align=center bgcolor='#000000'><h2>PAS DE COLIS A RECHERCHER</td>"; else if ($result) { echo "<table width=100% border=1 align=center>"; echo "<tr bgcolor='#000000'>"; echo "<td colspan=9><h2>RECHERCHER COLIS</td>"; echo "</tr>"; echo "<tr align=center bgcolor=#87CEEB>"; echo "<td><h4 class='h41'>Colis</td>"; echo "<td><h4 class='h41'>Nom</td>"; echo "<td><h4 class='h41'>Adresse</td>"; echo "<td><h4 class='h41'>CP</td>"; echo "<td><h4 class='h41'>Localité</td>"; echo "<td><h4 class='h41'>Envoi</td>"; echo "<td><h4 class='h41'>Région</td>"; echo "</tr>"; $i=0; while ($row=mysql_fetch_array($result)) { if ($i==0) { echo "<tr bgcolor=#D3D3D3>"; $i++; } else { echo "<tr bgcolor=#FFFFFF>"; $i--; } echo "<td><h5>".$row["NUMCOL"]."</td>"; echo "<td><h5>".$row["NOM"]."</td>"; echo "<td><h5>".$row["ADR"]."</td>"; echo "<td><h5>".$row["CP"]."</td>"; echo "<td><h5>".$row["LOC"]."</td>"; echo "<td><h5>".$row["ENV"]."</td>"; echo "<td><h5>".$row["REG"]."</td>"; echo "</tr>"; } echo "</table>"; } ?> </body> </html>

Posté : 30 mars 2007, 11:24
par Ryle
Penses à utiliser la balises [ php ] pour du code php, la coloration syntaxique aide beaucoup à lire et comprendre ton code :) Et puis cela mettrais en avant le fait que ta requête soit pas super clean, ya des quotes, des apostrophes et des trucs bizares dans tous les sens...
$query = "SELECT * FROM t_col WHERE ". $_POST[choix]." LIKE '%".$_POST[recherche]."' ORDER BY reg ASC"; 
Quant à ton soucis, dans la mesure ou les enregistrements que tu récupères sont triés par région, il te suffit d'utiliser une variable temporaire pour y stocker la valeur de la région des enregistrements que tu es en train de lire. Tu n'as plus alors qu'à créer un nouveau tableau à chaque fois qu'elle change :)
$regTemp = '';
while ($row = ...) {

  if ($regTemp != $row['reg']) { // nouvelle région

    if ($regTemp != '') // si on est déjà dans une région on ferme le tableau
      echo ...;

    echo ... ; // tu affiches le nom de la région, tu ouvres ton tableau, ...

    $regTemp = $row['reg']; // tu mets à jour la region temporaire
  }

  echo ...; // tes lignes

}
Et pis normalement le tour est joué :)

Posté : 30 mars 2007, 12:34
par martial
Mille excuses Ryle pour la forme... mais avec le temps je deviendrais peut être un "premier couteau".
c'est évident que mon code est en PHP, il suffit juste de mettre les balises PHP entre les lignes pour que le message soit plus clair...
Quant à ton explication j'ai compris le principe mais je ne vois pas où placer les boucles!
Termine tranquillement ton repas et aide moi encore un peu
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
<head>  
  <title>Rechercher</title>  
</head>  
<body>  
<br>  
<?php  

if ( !$_POST[choix] || !$_POST[recherche]) { 
    echo "<td colspan=9 align=center bgcolor='#000000'><h2>SAISIR LES CRITERES DE RECHERCHE</td>";  
exit; 
} 


$connect=mysql_connect("localhost", "root", "") or die ("Echec de la connexion au serveur !");  

$select=mysql_select_db("Gestion"); $query="select * from t_col where $_POST[choix] LIKE '%$_POST[recherche]'"ORDER BY REG  ASC; 
  
$result=mysql_query($query);  

if ( $result && mysql_num_rows($result) ==0) 
    echo "<td colspan=9 align=center bgcolor='#000000'><h2>PAS DE COLIS A RECHERCHER</td>";  

else if ($result) {  

echo "<table width=100% border=1 align=center>";  
echo "<tr bgcolor='#000000'>";  
echo "<td colspan=9><h2>RECHERCHER COLIS</td>";  
echo "</tr>";  
echo "<tr align=center bgcolor=#87CEEB>";  
echo "<td><h4 class='h41'>Colis</td>";  
echo "<td><h4 class='h41'>Nom</td>";  
echo "<td><h4 class='h41'>Adresse</td>";  
echo "<td><h4 class='h41'>CP</td>";  
echo "<td><h4 class='h41'>Localité</td>";  
echo "<td><h4 class='h41'>Envoi</td>";  
echo "<td><h4 class='h41'>Région</td>";  

echo "</tr>";  
$i=0;  

while ($row=mysql_fetch_array($result)) {  

 if ($i==0) { echo "<tr bgcolor=#D3D3D3>"; $i++; }  
 else { echo "<tr bgcolor=#FFFFFF>"; $i--; }  

 echo "<td><h5>".$row["NUMCOL"]."</td>";  
 echo "<td><h5>".$row["NOM"]."</td>";  
 echo "<td><h5>".$row["ADR"]."</td>";  
 echo "<td><h5>".$row["CP"]."</td>";  
 echo "<td><h5>".$row["LOC"]."</td>";  
 echo "<td><h5>".$row["ENV"]."</td>";  
 echo "<td><h5>".$row["REG"]."</td>";  

 echo "</tr>";  
}  
 echo "</table>";  
}  

 ?>  
</body>  
</html>  

Posté : 30 mars 2007, 13:32
par dogmongo
Juste une question tu as combien de champs différent pour les n° secteurs dans chaque produit ?

pour l'instant tu veux lister 3 régions mais en as tu plus ?
1/ Paris-IdF
2/ Province Nord
3/ province sud

si tu as que ces 3 le listing de tes 3 tableau est très facile à faire , j'ai rencontré ce problème et je l'ai résolut grace à nos cher membre phpfrance

Posté : 30 mars 2007, 13:47
par Invité
Pour l'instant je n'ai que trois régions...A moins que les utilisateurs ne me fassent rajouter un champ ou une région...
Tu connais peut-être la musique...
"Tiens au fait ça serait pas mal si on pouvait voir ça de cette façon parceque là il faut chercher entre toutes les fiches, c'est fatiguant..etc..."
Bref, je reconnais que la base fonctionne trés bien, c'est maintenant une question de confort, de lisibilité...et de passion pour la programmation.
Grace à chacun d'entre vous j'avance!

Posté : 30 mars 2007, 13:52
par dogmongo
http://www.phpfrance.com/forums/voir_su ... asc-15.php

va voir mon post tu va comprendre regarde surtout le résultat final :

dans mon cas j'ai 5 catégorie de produits => toi c'est des regions

je voulais faire une liste ou tableau des produit catégorie par catégorie

mon résultat est réellement surprenant 1 requete et un affichage propre!

ensuite tu peu facilement manipuler les résultats !