[PHP/SQL] Recuperer et trier les données - dans une page en php

Bonjour,

Je dispose d’un script qui me permet de gerer mes produits, clients, fournisseurs, devis, factures,… et tout ça bien sur en partie privée.

Je souhaiterais recuperer les données des produits et les classer sur une page php suivant la categorie. Je m’explique et je détails :

J’ai une table qui s’appele bra_item elle contient tous mes produits, une table bra_item_cat qui contient toutes mes categories.

Pour le moment j’ai réussi à recruper les données de bra_item mais le probleme c’est que je ne sais pas comment les trier par leur “id de categorie”. Dans la table bra_item j’ai une requete id qui correspondant à l’id de la categorie dans laquelle il est.

Voici le code que j’ai fait :


<?
require "connect.php";
$result1 = mysql_query("SELECT*FROM brad_item");
echo "<table><tr><td><b>Nom</b></td><td><b>Description</b></b></td></tr></table>";
while ($row=mysql_fetch_array($result1))
echo "<tr><td>$row[ref]</td><td>$row[description]</td></tr>";

?>

Pourriez-vous m’aider s’il vous plait ?

Je vous remercie d’avance.
@ bientôt

Merci bien, en fait, le code que j’ai va bien, mais il faudrait que je recupere suivant ce que je veux, les produits de la categorie désirée.

Exemple :

les produits "Cartes Meres" :

La categorie c’est dans : bra_item_categorie > id : 3
Les produits sont dans : bra_item > et là on a plusieurs requetes : (id, ref, description, …).

Il faudrait que sur ma page je puisse avoir un tableau ayant pour nom d’en-tete “Cartes Meres” et que dans ce tableau n’apparaissent que les produits cartes meres.

Avez-vous une idée ?

Merci d’avance.
@ bientôt

Voici l’exemple de mon code ci-dessus :

http://www.ordiconcept.fr/test.php

Bon faites pas attention à la présentation. Vous voyez bien que j’ai tous les produits qui apparaissent (il n’y en a que 2 mais dans 2 categories differentes) cartes meres et disques durs.

ben select categorie pour construire ton menu, et ensuite select item suivant un truc par défaut OU suivant categorie si categorie est défini.

PS : le code corrigé au dessus me semble plus juste, du moins plus lisible.

Excuse moi startide, je n’ai pas bien compris, je débute en sql ^^.
Tu pourrais me montrer un exemple de code s’il te plait ?

Pour le code qu’a corrigé lecbee, il ne fonctionne pas chez moi.

Merci d’avance.

Hum exemple non rien de bien clair, mais en gros là tu sélectionnes bien tout le contenu de ta table pour l’afficher ?

Bon ben tu fais pareil pour tes catégories >>

SELET * FROM categories
while…
{
echo ‘<a href="tapage.php?idCategorie=’.$row[‘id’].’>’.$row[‘NomCategorie’].’</a>’;
}

Et ensuite pour ta requête suivante c’est à base de :

$query = "SELECT COUNT(idLot) AS CountLot,MarqueurD FROM lots WHERE ";

// requête par défaut, sélectionne le mois actuel si $month et $year ne sont pas définis.

if (!isset($_GET['year']) && !isset($_GET['month']))
{
	$StartDate = date("Y-m").'-01';
	$EndDate = date("Y-m").'-31';
	$query .= "Date BETWEEN '$StartDate' AND '$EndDate' ";
}

Sauf que dans mon exemple je vérifies que les variables ne sont pas définies (dans l’url, c’est à ca que sert le GET) et je les définies :slight_smile:
Bref en gros dans ton cas si id (catégorie) est défini (on a cliqué le lien) alors tu rajoutes un bout de code à la chaine de ta requête SQL .

Au départ :

$query = "SELECT * FROM items";

Si isset $id alors :

$query .= "WHERE id = $_GET[id]";

Et voilà, le code corrigé du dessus me semble mieux ainsi (je crois) ==>

{
echo '<tr><td>'.$row['ref'].'</td><td>'.$row['description'].'';
}

Note : je suis grand débutant, donc j’espère pas dire trop de conneries ^^

Bon, on commence a avancer, merci à toi. Je n’ai pas encore tester le code.
Par contre, juste une précision, dans ma table bra_item_categorie, la requete id se poursuit comme ça :

1 > Categorie 1
2> Categorie 2

Si je veux que la categorie 2, je fais :

SELET * FROM bra_item_categorie
while…
{
echo ‘<a href="tapage.php?2=’.$row[‘id’].’>’.$row[‘2’].’</a>’;
}

C’est bien ça ? Ou je me trompe.

Merci bien.

J’ai donc editer mon code comme ceci :


<?
require "connect.php";
$result1 = mysql_query("SELECT*FROM brad_item");
echo "<table border=\"1\"><tr><td><b>Nom</b></td><td><b>Description</b></b></td></tr></table>";
while ($row=mysql_fetch_array($result1))

echo "<table border=\"1\"><tr><td>$row[ref]</td><td>$row[description]</td></tr></table><br>";

$result2 = mysql_query("SELECT*FROM brad_item_category");
while ($row=mysql_fetch_array($result2))
echo "<a href=\"carte_meres.php?3=$row[id]\">$row[3]</a>";

?>

J’ai laisser le $result1 pour essayer, lui il fonctionne mais le $result2 non. Pourtant je n’ai aucun message d’erreur.

Merci d’avance pour votre aide.

salut! le code que j’ai a te proposer permet de lister un ens de produits d’une table par catégorie. [ je sais pas si je reponds a ta question…sinon donne plus de details].
tu completes ce code en plaçant ton script de connexion a ta base et remplace les les noms des tables par les vrais noms [egalement le nom des champs des tables]


<html>
<head>
	<title></title>
</head>
<body>
	<?php 
	$req="select id_cat, nom_cat from table_cat";
	$rescat=mysql_query(req);
	while($ligne=mysql_fetch_row($rescat)){
	?>
<table>
	<tr>
  <td>
  	<?php 
  	$id_cat=$ligne[0];
  	echo "Catégorie:$ligne[1]";
  	?>
  </td>
	</tr>
	<?php 
	$req2="select id_item, nom_item from table_item where id_cat=\"$id_cat\"";
	$resitem=mysql_query($req2);
	while($ligne2=mysql_fetch_row($resitem)){
	?>
	<tr>
  <td>
  	<?php 
    echo "Produit:$ligne2[1]";
  	?>
  </td>	
	</tr>
	<?php
  }
	?>
</table>
<?php
	}
?>
</body>
</html>

Houla, je sens qu’on approche du but, mais je n’ai pas tout compris.

Donc disons que je souhaite recuperer les produits "Disque dur" voici les details :

table : brad_item_category
Et l’id de la categorie Disque dur dans cette table c’est : 4

Table des produits : brad_item
Et les produits sont classés par id, ref, description, in_price, out_price, category.

Comment faire pour recuperer la liste complete des produits qui sont dans la categorie "Disque dur" ?

Merci d’avance, je suis désolé si j’en demande trop.

Voilà, j’ai enfin réussi avec votre aide !

Je vous donne donc le code qui fonctionne :


require "connect.php";

$result1 = mysql_query("SELECT*FROM brad_item WHERE category='4' ORDER BY description");
echo "<table border=\"1\"><tr><td><b>Nom</b></td><td><b>Description</b></b></td></tr></table>";
while ($row=mysql_fetch_array($result1))

echo "<table border=\"1\"><tr><td>$row[ref]</td><td>$row[description]</td><td>$row[out_price]</td></tr></table><br>";

Il ne reste plus qu’à faire la mise en page correctement.

Merci bien pour votre aide !

@ bientôt