[RESOLU] lister des informations contenu dans une database en php

Petit nouveau ! | 4 Messages

05 mai 2022, 22:00

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
Modifié en dernier par PRIME le 06 mai 2022, 01:37, modifié 7 fois.

Avatar du membre
Mammouth du PHP | 1564 Messages

05 mai 2022, 23:25

Mets ton code dans les balises stp.

Petit nouveau ! | 4 Messages

06 mai 2022, 00:56

Mets ton code dans les balises stp.
quelles sont les balises ?

Mammouth du PHP | 2703 Messages

06 mai 2022, 01:00

les balises php de l'éditeur de texte de ce forum, afin que le code, trop long, donne plus envie de s'y plonger.

Petit nouveau ! | 4 Messages

06 mai 2022, 01:23

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.

Avatar du membre
Mammouth du PHP | 1564 Messages

06 mai 2022, 08:40

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";
}

Petit nouveau ! | 4 Messages

06 mai 2022, 15:18

merci beaucoup, mon problème est résolu.