PHP Manque première entrée

Résolu/Fermé
TRUNCKS Messages postés 1028 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 28 février 2023 - 16 oct. 2011 à 10:14
TRUNCKS Messages postés 1028 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 28 février 2023 - 17 oct. 2011 à 08:32
Bonjour à vous,

Sur une requête simple comme celle là:

$sql = "SELECT *
FROM produits";

Lorsque je fais echo de cette requête, il me manque la première entrée de ma table.
Il devrait y avoir trois champs mais il ne m'affiche que les suivantes.

Merci à vous

5 réponses

arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 477
16 oct. 2011 à 13:56
Avec cette requête seul, tout les résultats devraient être affiché.
Si ce n'est pas le cas, le problème vient d'ailleurs.

Ce code devrait t'afficher tout les résultats de cette table:
$sql = 'SELECT * FROM produits';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
while($data = mysql_fetch_array($req))
{
echo'<p>###</p>';
}

Il te faut simplement choisir les valeurs à afficher à la place des ###.
Par exemple: $data['id']
0
TRUNCKS Messages postés 1028 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 28 février 2023 8
16 oct. 2011 à 14:12
Super, merci encore, j'avais fait une erreur de variable.
J'ai une petite question encore si tu le permets.

Avec cette configuration, cela donne un affichage de type:

Catagorie1
Produit1
Categorie1
Produit2 etc...

En gros, il me répète la catégorie à chaque produit.
Mes produits sont liés à des catégories par l'ID.

J'aimerai savoir s'il est possible d'afficher par exemple, la catégorie1 dans un titre, suivi par tous les produits de cette catégorie en dessous.
Puis dans un autre "bloc", la catégorie 2 avec ses produits etc...
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 477
16 oct. 2011 à 14:40
Tu peux inclure une requête dans une autre.
Par exemple:
$sql_cat = 'SELECT * FROM categorie';
$req_cat = mysql_query($sql_cat) or die('Erreur SQL !<br />'.$sql_cat.'<br />'.mysql_error()); 
while($data_cat = mysql_fetch_array($req_cat))
	{
	echo'<h1>cata_cat['categorie']</h1>';
	$sql_pr = 'SELECT * FROM produits WHERE categorie="'.$data_cat['categorie'].'"';
	$req_pr = mysql_query($sql_pr) or die('Erreur SQL !<br />'.$sql_pr.'<br />'.mysql_error()); 
	while($data_pr = mysql_fetch_array($req_pr))
		{
		echo'<p>'.$data_pr['produit'].'</p>';
		}
	}


Je ne connais pas la structure réelle de tes tables mais je pense que tu arrivera à comprendre le principe et donc à l'adapter.
0
TRUNCKS Messages postés 1028 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 28 février 2023 8
16 oct. 2011 à 16:15
Merci, j'ai bien compris le principe.

Le soucis c'est que les produits ne s'affichent pas, j'ai une erreur dessus, les catégories oui par contre.
Ma table est structurée de cette manière:

categories(ID_categorie, nom_categorie)
produits(ID_produit, nom_produit, #id_categeorie)

Ma clé étrangère qui relie des deux tables est sur la table produit.

Voilà ce que j'ai fait:


<?php require("admin/connexion/localhost.php");
 
$conn = mysql_connect($hostname_localhost, $username_localhost, $password_localhost) or trigger_error(mysql_error(),E_USER_ERROR);
 
mysql_query("SET CHARACTER SET 'utf8';")or die(mysql_error()); 
 
mysql_select_db($database_localhost, $conn); 

$sql_cat = "SELECT nom_categorie
        	FROM categories
			ORDER BY nom_categorie DESC";
			
$req_cat = mysql_query($sql_cat) or die('Erreur SQL !<br />'.$sql_cat.'<br />'.mysql_error()); 

while($data_cat = mysql_fetch_array($req_cat))
	{
	echo '<h2>'.$data_cat['nom_categorie'].'</h2>';
	$sql_pr = 'SELECT nom_produit FROM produits WHERE nom_produit="'.$data_cat['nom_categorie'].'"';
	$req_pr = mysql_query($sql_pr) or die('Erreur SQL !<br />'.$sql_pr.'<br />'.mysql_error()); 
	while($data_pr = mysql_fetch_array($req_pr))
		{
		echo'<p>'.$data_pr['nom_produit'].'</p>';
		}
	}
	
?>

0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 477
16 oct. 2011 à 19:25
Il faut donc que tu changes la seconde requête:
$sql_pr = 'SELECT nom_produit FROM produits WHERE nom_produit="'.$data_cat['nom_categorie'].'"';

en
$sql_pr = 'SELECT nom_produit FROM produits WHERE id_categorie="'.$data_cat['ID_categorie'].'"';

Vérifie les majuscules sur les nom des champs.
0
TRUNCKS Messages postés 1028 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 28 février 2023 8
16 oct. 2011 à 19:57
Rha ça ne marche toujours pas pour les produits, pourtant il ne devrait pas y avoir de soucis là...

C'est bien id_categorie la clé étrangère sur produits et ID_categorie sur la table categories :(
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
TRUNCKS Messages postés 1028 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 28 février 2023 8
17 oct. 2011 à 08:32
C'est non j'ai réussi, autant pour moi, je n'avais précisé que nom_categorie et et nom_produit dans ma requête, j'suis naze lol

Merci encore !
0