probleme affichage requete sql

a marqué ce sujet comme résolu.

Bonjour à tous J’ai terminé mon site concernant l’inscription en BDD pour le jeu Cafeland (pour ce qui on deja vu les différents pronblèmes que j’ai rencontré).
J’ai juste une question a vous poser :

En local, je n’ai aucun souci.
En ligne la lecture se fait en double.

Voici les images de ce que je raconte :

Le rendu sur mon site en ligne :
siteenligne.PNG Le rendu en localhost : sitelocal.PNG

Si vous avez besoin de mon code je vous le partage mais il est identique ainsi que ma BDD est la même en localhost ou sur OVH.

Avez-vous déja eu ce problème? Savez vous d’ou cela pourrait venir?

Je précise que c’est sur quelques célébrités que cela fait ce problème et pas sur toutes les catégories

Merci d’avance

Salut Viki et merci Oui dans la BDD il y a qu’un seul enregistrement concernant mon id user ainsi que l’id de la célébrité.

Voici mon code html:


<?php require 'inc/requetes_scientifiquefou.php';?>
<?php require 'inc/header.php';?>
<?php require 'inc/db.php';?>
<?php logged_only();?>
<?php $insert = $scientifiquefou->celebrity_root?>

<section class="find-dishes">
    <h1>Choisissez la catégorie de plats</h1>
    <article>
        <?php foreach ($list_category as $category):?>
            <div id="<?php echo $category->id_category ?> "class="categories">
                <a title="<?= $category->category_name ?>" href="<?=$scientifiquefou->celebrity_root.'_'.$category->id_category.$ext_page?>">
                   <img alt="<?= $category->category_name?>" src="<?= 'img/'.$category->category_root.$ext_jpg?>"></a>
                <h3><a title="<?= $category->category_name?>"href="<?=$scientifiquefou->celebrity_root.'_'.$category->id_category.$ext_page?>">
                       <?= $category->category_name?></a></h3>
            </div>
        <?php endforeach; ?>

    </article>
    <h2 class="titre">Liste des Entrées</h2>
    <div class="fixnav">
    <img class="round" src="<?=$dir_img_celebrities.$scientifiquefou->celebrity_root.$ext_png?>" alt="<?= $scientifiquefou->celebrity_name?>">
    <h2>Liste des Entrées</h2>
    <img class="round1" src="<?=$dir_img_celebrities.$scientifiquefou->celebrity_root.$ext_png?>" alt="<?= $scientifiquefou->celebrity_name?>">

    </div>
    <aside>
        <img class="computer" src="<?=$dir_img_celebrities.$scientifiquefou->celebrity_root.$ext_png?>" alt="<?= $scientifiquefou->celebrity_name?>">

<!--        <img class="favorite-dishes1" src="<?=$dir_img_celebrities.$scientifiquefou->favorite_dish1.$ext_jpg?>" alt="Plat Favori" >
        <img class="favorite-dishes2" src="<?=$dir_img_celebrities.$scientifiquefou->favorite_dish2.$ext_jpg?>" alt="Plat Favori" >
        <img class="favorite-dishes3" src="<?=$dir_img_celebrities.$scientifiquefou->favorite_dish3.$ext_jpg?>" alt="Plat Favori" >-->
    </aside>
    
    <article>
    <form class="list-dishes" method="POST" action='insert<?php echo $insert?>1.php'>

    <?php foreach ($list_entrees_scientifiquefou as $entree):
	$classDivChoix = "";
	$yesChecked="";
	$noChecked="";
	$neitherChecked="";
	if ($userscientifiquefou1){
		switch($entree->choix){
			case "oui" :
			$classDivChoix = "found-checked";
			$yesChecked = 'checked="checked"';
			break;
			case "non" :
			$classDivChoix = "not-found-checked";
			$noChecked = 'checked="checked"';
			break;
			default :
			$classDivChoix = "neither-checked";
			$neitherChecked = 'checked="checked"';
			break;
		}
	}
?>
    <div id="<?php echo $entree->id_dish ?>"class="dishes <?php echo $classDivChoix;?>">
        <h4><?php echo $entree->dish_name ?></h4>
        <img src="<?php echo $dir_img_dishes.$list_category[0]->category_root.'/'.$entree->dish_root.$ext_jpg?>" alt="<?php echo $entree->dish_name?>" >
        <div id="<?php echo $entree->id_dish ?>" class="form-check">
            <div class="yes-no">
                <input class="form-check-input" id="<?php echo $entree->dish_name?>" name="<?= $entree->id_dish?>" type="radio"  value='oui' <?php if ($userscientifiquefou1){if ($entree->choix=='oui'){ echo 'checked="checked"';}}?><?php echo $yesChecked;?>>Oui
                <label class="form-check-label" for=""></label>
            </div>
            <div class="yes-no">
                <input class="form-check-input" id="<?php echo $entree->dish_name?>" name="<?= $entree->id_dish?>" type="radio"  value='non' <?php if ($userscientifiquefou1){if ($entree->choix=='non'){ echo 'checked="checked"';}}?><?php echo $noChecked;?>>Non
                <label class="form-check-label" for=""></label>
            </div>
            <div class="dont-know">
                <input class="form-check-input" id="<?php echo $entree->dish_name?>" name="<?= $entree->id_dish?>" type="radio"  value='ne_sais_pas' <?php if ($userscientifiquefou1){if ($entree->choix=='ne_sais_pas'){ echo 'checked="checked"';}}else{echo 'checked="checked"'; }?><?php echo $neitherChecked;?>>Je ne sais pas
                <label class="form-check-label" for=""></label>
            </div>
        </div>

    </div>
        <?php endforeach; ?>
        <div class="frame">
            <button class="custom-btn btn-5"><span>Enregistrer</span></button>
        </div>
    </form>    
</article>
</section>

<?php require 'inc/footer.php';?>

Voici mon code php du formulaire :


<?php
require_once 'inc/requetes_scientifiquefou.php';
require_once 'inc/functions.php';
require 'inc/db.php';
logged_only();
$id = 6;
$location = $scientifiquefou->celebrity_root;
 //Insertion des donnees Entrees bellissima 
 if (!empty($_POST)){
    if($userscientifiquefou1){
        $choix=($_POST);
        //var_dump($choix);
        $id_session = $_SESSION['auth']->id;
        $req = $pdo->prepare('UPDATE dishes_found SET choix=? WHERE dish_id = ? AND celebrity_id='.$id.' AND user_id='.$id_session);
        foreach ($choix as $key=>$value){
            $req->execute([$value, $key]);
        }
        $_SESSION['flash']['success'] = "L'enregistrement a bien été pris en compte";
        header ('Location: '.$location.'_1.php');

        exit();
    } else {
        $choix=($_POST);
        $id_session = $_SESSION['auth']->id;
        $req = $pdo->prepare('INSERT INTO dishes_found SET  choix = ? ,  dish_id = ?, celebrity_id = ?, user_id = ?, category_id =?' );
        foreach ($choix as $key=>$value){
            $req->execute(array($value,  $key , $id , $id_session, 1));
        };
        header ('Location: '.$location.'_1.php');
        $_SESSION['flash']['success'] = "L'enregistrement a bien été pris en compte";
        exit();
    };
    
} else {
$errors['choix'] = "l'enregistrement n'a pas pu etre pris en compte";  
exit();
}


Et enfin voici mon script de requetes pour cette célébrité :


<?php
require 'functions.php';
require 'db.php';
logged_only();
?>            
<?php
//Recherche Globale
$sql = $pdo->prepare("SELECT id_dish,dish_name,dish_root,cafeland_dishes.category_id,category_name,category_root,dishes_found.user_id,dishes_found.choix,dishes_found.celebrity_id,celebrity_name,celebrity_root\n"

. "FROM dishes_found\n"

. "INNER JOIN  cafeland_dishes ON dishes_found.dish_id = cafeland_dishes.id_dish\n"

. "INNER JOIN cafeland_category ON dishes_found.category_id=cafeland_category.id_category\n"

. "INNER JOIN cafeland_celebrities ON dishes_found.celebrity_id=cafeland_celebrities.id_celebrity\n");
$sql->execute();
$cafeland = $sql->fetchAll();
//var_dump($cafeland);

//Données diverses
$dir_img_celebrities = 'img/celebrites/';
$dir_img_dishes = 'img/dishes/';
$ext_jpg = '.jpg';
$ext_png = '.png'; 
$ext_page = '.php';

if(isset($_POST['choix'])){
    $choix = $_POST['choix'];
}
//Recherche liste des célébrités
$query = $pdo->query('SELECT * FROM cafeland_celebrities');
if($query === false){
    var_dump($pdo->errorInfo());
    die('Erreur SQL');
}
$list_celebrities = $query->fetchAll(PDO::FETCH_OBJ);

//Recherche liste des catégories
$query = $pdo->query('SELECT * FROM cafeland_category');
if($query === false){
    var_dump($pdo->errorInfo());
    die('Erreur SQL');
}
$list_category = $query->fetchAll(PDO::FETCH_OBJ);


//************************************************************************************************************************************/
//************************************************************************************************************************************/
//************************************************************************************************************************************/

//Données scientifiquefou
$sql = $pdo->prepare("SELECT id_dish,dish_name,dish_root,cafeland_dishes.category_id,category_name,category_root,dishes_found.user_id,dishes_found.choix,dishes_found.celebrity_id,celebrity_name,celebrity_root\n"

. "FROM dishes_found\n"

. "INNER JOIN  cafeland_dishes ON dishes_found.dish_id = cafeland_dishes.id_dish\n"

. "INNER JOIN cafeland_category ON dishes_found.category_id=cafeland_category.id_category\n"

. "INNER JOIN cafeland_celebrities ON dishes_found.celebrity_id=cafeland_celebrities.id_celebrity\n"
. "WHERE celebrity_id=6");
$sql->execute();
$scientifiquefou = $sql->fetch();

if(!empty($scientifiquefou)){
    $sql = $pdo->prepare("SELECT id_dish,dish_name,dish_root,cafeland_dishes.category_id,category_name,category_root,dishes_found.user_id,dishes_found.choix,dishes_found.celebrity_id,celebrity_name,celebrity_root\n"
    
    . "FROM dishes_found\n"
    
    . "INNER JOIN  cafeland_dishes ON dishes_found.dish_id = cafeland_dishes.id_dish\n"
    
    . "INNER JOIN cafeland_category ON dishes_found.category_id=cafeland_category.id_category\n"
    
    . "INNER JOIN cafeland_celebrities ON dishes_found.celebrity_id=cafeland_celebrities.id_celebrity\n"
    . "WHERE celebrity_id=6");
    $sql->execute();
    $scientifiquefou = $sql->fetch();
    
} else {
    $sql = $pdo->prepare("SELECT * FROM cafeland_celebrities WHERE id_celebrity=6");
    $sql->execute();
    $scientifiquefou = $sql->fetch();
    };

    //************************************************************************************************************************************/
//************************************************************************************************************************************/
//************************************************************************************************************************************/

//Condition User Entrée scientifiquefou
$sql = $pdo->prepare("SELECT id_dish,dish_name,dish_root,cafeland_dishes.category_id,category_name,category_root,dishes_found.user_id,dishes_found.choix,dishes_found.celebrity_id,celebrity_name,celebrity_root\n"

. "FROM dishes_found\n"

. "INNER JOIN  cafeland_dishes ON dishes_found.dish_id = cafeland_dishes.id_dish\n"

. "INNER JOIN cafeland_category ON dishes_found.category_id=cafeland_category.id_category\n"

. "INNER JOIN cafeland_celebrities ON dishes_found.celebrity_id=cafeland_celebrities.id_celebrity\n"
. "WHERE celebrity_id=6 AND cafeland_dishes.category_id=1 AND dishes_found.user_id =".$_SESSION["auth"]->id);
$sql->execute();
$userscientifiquefou1 = $sql->fetch();

//Recherche liste des entrées pour scientifiquefou
if($userscientifiquefou1){
$sql = $pdo->prepare("SELECT id_dish,dish_name,dish_root,cafeland_dishes.category_id,category_name,category_root,dishes_found.user_id,dishes_found.choix,dishes_found.celebrity_id,celebrity_name,celebrity_root\n"

. "FROM dishes_found\n"

. "INNER JOIN  cafeland_dishes ON dishes_found.dish_id = cafeland_dishes.id_dish\n"

. "INNER JOIN cafeland_category ON dishes_found.category_id=cafeland_category.id_category\n"

. "INNER JOIN cafeland_celebrities ON dishes_found.celebrity_id=cafeland_celebrities.id_celebrity\n"
. "WHERE celebrity_id=6 AND cafeland_dishes.category_id=1");
$sql->execute();
$list_entrees_scientifiquefou = $sql->fetchAll();
} else {
    $sql = $pdo->prepare("SELECT * FROM cafeland_dishes WHERE category_id= 1");
    $sql->execute();
    $list_entrees_scientifiquefou = $sql->fetchAll();

}

et voici le resultat de ma bdd

bdd.PNG
bdd.PNG
+0 -0

Salut

Désolé mais ça reste trop difficile de t’aider (peut être que quelqu’un qui a suivi ton dev le pourra mais ici c’est presque impossible)

L’extrait de base de données fournis ressemble aux résultats du formulaire or le problème est sur l’affichage des produits. Peux tu nous montrer cette partie ?

Merci DonKnacki de ta réponse ! J’ai mis le code au dessus mais la parti qui concerne l’affichage est celui la :

//Recherche liste des entrées pour scientifiquefou
if($userscientifiquefou1){
$sql = $pdo->prepare("SELECT id_dish,dish_name,dish_root,cafeland_dishes.category_id,category_name,category_root,dishes_found.user_id,dishes_found.choix,dishes_found.celebrity_id,celebrity_name,celebrity_root\n"

. "FROM dishes_found\n"

. "INNER JOIN  cafeland_dishes ON dishes_found.dish_id = cafeland_dishes.id_dish\n"

. "INNER JOIN cafeland_category ON dishes_found.category_id=cafeland_category.id_category\n"

. "INNER JOIN cafeland_celebrities ON dishes_found.celebrity_id=cafeland_celebrities.id_celebrity\n"
. "WHERE celebrity_id=6 AND cafeland_dishes.category_id=1");
$sql->execute();
$list_entrees_scientifiquefou = $sql->fetchAll();
} else {
    $sql = $pdo->prepare("SELECT * FROM cafeland_dishes WHERE category_id= 1");
    $sql->execute();
    $list_entrees_scientifiquefou = $sql->fetchAll();

}

Et pour ma page html c’est celui la :

<div id="<?php echo $entree->id_dish ?>"class="dishes <?php echo $classDivChoix;?>">
        <h4><?php echo $entree->dish_name ?></h4>
        <img src="<?php echo $dir_img_dishes.$list_category[0]->category_root.'/'.$entree->dish_root.$ext_jpg?>" alt="<?php echo $entree->dish_name?>" >
        <div id="<?php echo $entree->id_dish ?>" class="form-check">
            <div class="yes-no">
                <input class="form-check-input" id="<?php echo $entree->dish_name?>" name="<?= $entree->id_dish?>" type="radio"  value='oui' <?php if ($userscientifiquefou1){if ($entree->choix=='oui'){ echo 'checked="checked"';}}?><?php echo $yesChecked;?>>Oui
                <label class="form-check-label" for=""></label>
            </div>
            <div class="yes-no">
                <input class="form-check-input" id="<?php echo $entree->dish_name?>" name="<?= $entree->id_dish?>" type="radio"  value='non' <?php if ($userscientifiquefou1){if ($entree->choix=='non'){ echo 'checked="checked"';}}?><?php echo $noChecked;?>>Non
                <label class="form-check-label" for=""></label>
            </div>
            <div class="dont-know">
                <input class="form-check-input" id="<?php echo $entree->dish_name?>" name="<?= $entree->id_dish?>" type="radio"  value='ne_sais_pas' <?php if ($userscientifiquefou1){if ($entree->choix=='ne_sais_pas'){ echo 'checked="checked"';}}else{echo 'checked="checked"'; }?><?php echo $neitherChecked;?>>Je ne sais pas
                <label class="form-check-label" for=""></label>
            </div>
        </div>

    </div>
        <?php endforeach; ?>
        <div class="frame">
            <button class="custom-btn btn-5"><span>Enregistrer</span></button>
        </div>

Merci par avance ! Je ne comprend pas ce qui cloche vraiment. Le code est le même pour toutes la categories (seul le category_id diffère) et pour toutes les célébrités (seul le celebrity_id diffère).
Je comprends pas pourquoi les données de certaines personnalités sont lues en double

Salut

Si tu utilises la base de données distante sur ton hôte local (par export-import), est-ce que tu constates le même comportement en local du coup ?

Je me demande si cela ne vient pas d’une certaine manière des données et des jointures faites pour récupérer ces mêmes données.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte