PHP Manque première entrée

Résolu
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

  1. 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 !
    1. 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 :(
      1. 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>';
        		}
        	}
        	
        ?>
        
        
        1. 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.
      2. 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...
        1. 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.
      3. 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']