structurer les données dans un tableau

Eléphant du PHP | 89 Messages

30 mars 2007, 09:59

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>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

30 mars 2007, 11:24

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é :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 89 Messages

30 mars 2007, 12:34

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>  

Mammouth du PHP | 804 Messages

30 mars 2007, 13:32

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

Invité
Invité n'ayant pas de compte PHPfrance

30 mars 2007, 13:47

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!

Mammouth du PHP | 804 Messages

30 mars 2007, 13:52

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 !