Page 1 sur 1

lister des informations contenu dans une database en php

Posté : 05 mai 2022, 22:00
par PRIME
bonjour,

je suis débutant en php et je voudrais développer un site ou il est possible de mettre en ligne des 'produits',
j'ai une db constitué de deux tables (users, product) avec dans la table users un nombre de produits qui ne doit pas dépasser 10 (product_number) pour chaque utilisateur, et j'ai dans ma table product plusieurs produits qui ont chacun un id unique (product_id), un nom unique (product_name) et ils sont associé a un nom d'utilisateur (seller_name).

mon problème est le suivant :

je voudrais afficher tous les 'produits' d'un utilisateur qui sont dans la table produit grâce a une fonction.

j'ai déjà essayer cette fonction mais sans succès car elle n'affiche que le premier produit :
<?php
function prod($user) {
    include "db_conn.php";
    $sql2 = "SELECT * FROM users WHERE user_name = '$user'";
    $result2 = mysqli_query($conn, $sql2);
    $row2 = mysqli_fetch_assoc($result2);
    $nb = 0;
    echo '<p>You have '.$row2['product_number'].' product</p><br>';
    if ($row2['product_number'] <= 10 and $row2['product_number'] > 0) {
        while ($nb !== $row2['product_number']) {
            $sql = "SELECT * FROM product WHERE seller_name = '$user'";
            $result = mysqli_query($conn, $sql);
            $row = mysqli_fetch_assoc($result);
            $oldname = $row['product_name'];
            if ($nb == 0) {
                if ($row['seller_name'] == $user){
                    $clr = hex2rgba($row['color'], 0.3);
                    return "<div class='product' style='--clr:{$clr};--price:{$row['price']};--img:url({$row['image']});--content:{$row['content']}'><p>{$row['description']}</p></div>";
                } else {
                    return 'error';
                }
                $nb = $nb + 1;
            } else {
                if ($row['product_name'] != $oldname) {
                    if ($row['seller_name'] == $user){
                        $clr = hex2rgba($row['color'], 0.3);
                        return "<div class='product' style='--clr:{$clr};--price:{$row['price']};--img:url({$row['image']});--content:{$row['content']}'><p>{$row['description']}</p></div>";
                    } else {
                        return 'error';
                    }
                    $nb = $nb + 1;
                } else {
                    $sql1 = "SELECT * FROM users WHERE user_name = '$user' AND product_name != $oldname";
                    $result1 = mysqli_query($conn, $sql1);
                    $row1 = mysqli_fetch_assoc($result1);
                    if ($row1['seller_name'] == $user){
                        $clr = hex2rgba($row1['color'], 0.3);
                        return "<div class='product' style='--clr:{$clr};--price:{$row1['price']};--img:url({$row1['image']});--content:{$row1['content']}'><p>{$row1['description']}</p></div>";
                    } else {
                        return 'error';
                    }
                    $nb = $nb + 1;
                }
            }
        }
    } else {
        return '<p>Add a product!</p><br>';
    }
}
?>
Merci d'avance

Re: lister des informations contenu dans une database en php

Posté : 05 mai 2022, 23:25
par two3d
Mets ton code dans les balises stp.

Re: lister des informations contenu dans une database en php

Posté : 06 mai 2022, 00:56
par PRIME
Mets ton code dans les balises stp.
quelles sont les balises ?

Re: lister des informations contenu dans une database en php

Posté : 06 mai 2022, 01:00
par or 1
les balises php de l'éditeur de texte de ce forum, afin que le code, trop long, donne plus envie de s'y plonger.

Re: lister des informations contenu dans une database en php

Posté : 06 mai 2022, 01:23
par PRIME
les balises php de l'éditeur de texte de ce forum, afin que le code, trop long, donne plus envie de s'y plonger.
merci, autant pour moi.

Re: lister des informations contenu dans une database en php

Posté : 06 mai 2022, 08:40
par two3d
Merci.

Soit tu met "while" en dessous de "$row = mysqli_fetch_assoc($result);" parce qu'il refait la même requête à chaque itération, soit tu fait comme suit :

Ton while, sert toi en sur ta requête mysql, pour
$row = mysqli_fetch_assoc($result);

//devient :

while($row = mysqli_fetch_assoc($result)){
$nb++;
...
Puis ensuite je te conseil plutôt de faire avec une simple incrémentation :
if($nb == 10){
   echo "Nb de produit max !"
}else{
   $nb ++;
  echo "on affiche encore des produits jusqu'à 10";
}

Re: lister des informations contenu dans une database en php

Posté : 06 mai 2022, 15:18
par PRIME
merci beaucoup, mon problème est résolu.