Intégration données SQL dans Tableau

Debideb9445
Messages postés
41
Date d'inscription
lundi 22 novembre 2010
Statut
Membre
Dernière intervention
3 juillet 2017
- Modifié par Debideb9445 le 25/11/2015 à 19:06
jordane45
Messages postés
36071
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 août 2022
- 26 nov. 2015 à 09:44
Bonjour ou rebonjour pour certains,

Je suis toujours avec mon site internet de gestion de film.

Pour rappel : mon site consiste à répertorier les films que j'ai vu et ceux que je n'ai pas vu.

Jusqu'ici, j'ai réussi à tout faire (notamment grâce à une certaine aide des internautes de ce site). Il me manque plus qu'une dernière chose !

Voilà le topo :

J'ai une base de données avec une table "film" avec à l'intérieur les champs "id_film" et "film_name" (+ d'autres champs mais j'en ai pas besoin dans l'immédiat)

J'ai une seconde table "film_user" avec à l'intérieur les champs : "id_film", "id_user" et "check-film"

"check_film" peut prendre la valeur 1 (=film vu) ou 2(=film déjà vu).

Voici un exemple de ma table "film_user" après qu'un utilisateur est inscrit les films qu'il a vu et souhaite voir :


Comme vous pouvez le remarquer, cet utilisateur à vu 2 films et veux en voir 1 .


Mon problème consiste à intégrer ces données dans un tableau.
Pour ce faire j'ai créé un fichier Vos_films. Ce fichier va me permettre d'afficher le tableau avec les films à voir dans une colonne et les films déjà vus dans une autre colonne.

Voici le code que j'ai effectué :
<!DOCTYPE html>
<?php session_start(); ?>
<?php include("Mise_en_page.php"); ?>
<?php include("BaseDeDonnee.php"); ?>




<?php


//récupération de l'id user
$id_user = !empty($_SESSION['id_user']) ? $_SESSION['id_user'] : NULL;


?>

<html>

<head>
<meta charset="utf-8" />
<title>Vos Films</title>
<link rel="stylesheet" href="css/CodeCSS.css" />
</head>

<body>

<table>
<tr>
<td><h2>Films déjà vus :</h2><td>

<?php if( $id_user ){
$sql1 = "SELECT id_film FROM film_user WHERE id_user='$id_user' AND film_check='1' ";
$id_film = $bdd->query($sql1);

if($id_film){
$sql2 = "SELECT film_name FROM film WHERE id_film='$id_film'";
$film_name = $bdd->query($sql2);
}
}
while ($donnees = $film_name->fetch()) {
echo $donnees['film_name']; } ?>

<td><h2>Films à voir :</h2><td>

<?php if( $id_user ){
$sql3 = "SELECT id_film FROM film_user WHERE id_user='$id_user' AND film_check='2' ";
$id_film = $bdd->query($sql3);

if(id_film){
$sql4 = "SELECT film_name FROM film WHERE id_film='$id_film'";
$film_name = $bdd->query($sql4);
}
}
while ($donnees = $film_name->fetch()) {
echo $donnees['film_name']; ?>
</tr>
</table>



</body>

</html>
<?php
}
$reponse->closeCursor(); // Termine le traitement de la requête
?>


Evidemment c'est faux car je m'emmêle les pinceaux dans mes IF et mes déclaration de variables...

Voilà le résultat :


Pouvez vous m'aider à y voir plus clair ?

1 réponse

jordane45
Messages postés
36071
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 août 2022
351
25 nov. 2015 à 19:05
Prends le temps de relire ton code...
Regardes bien tes variables ....

A mon avis :
$id_film = $bdd->query($sql1); 
  
				if($reponse1){

la variable $id_film n'a rien à faire à cette ligne.....
et donc... c'est pour ça que $reponse1 n'est pas connu (voir message d'erreur).


0
jordane45
Messages postés
36071
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 août 2022
351
25 nov. 2015 à 19:07
PS:
Evite, autant que possible, de mettre des balises PHP partout....
Ceci :
<?php session_start(); ?>
<?php include("Mise_en_page.php"); ?>
<?php include("BaseDeDonnee.php"); ?>




<?php


//récupération de l'id user
$id_user = !empty($_SESSION['id_user']) ? $_SESSION['id_user'] : NULL;


?>

Peut (et je te le conseille...) être écrit :

<?php
 session_start(); 
 require_once "Mise_en_page.php"; 
 require_once "BaseDeDonnee.php"; 

//récupération de l'id user
$id_user = !empty($_SESSION['id_user']) ? $_SESSION['id_user'] : NULL;


?>
0
Debideb9445
Messages postés
41
Date d'inscription
lundi 22 novembre 2010
Statut
Membre
Dernière intervention
3 juillet 2017

Modifié par Debideb9445 le 25/11/2015 à 19:23
J'ai pris compte de ton conseil pour l'en-tête.

Du coup après correction voilà mon code :

<?php
session_start();
require_once "Mise_en_page.php";
require_once "BaseDeDonnee.php";

//récupération de l'id user
$id_user = !empty($_SESSION['id_user']) ? $_SESSION['id_user'] : NULL;


?>
<html>

<head>
<meta charset="utf-8" />
<title>Vos Films</title>
<link rel="stylesheet" href="css/CodeCSS.css" />
</head>

<body>

<table>
<tr>
<td><h2>Films déjà vus :</h2><td>

<?php if( $id_user ){
$sql1 = "SELECT id_film FROM film_user WHERE id_user='$id_user' AND check_film='1' ";
$id_film = $bdd->query($sql1);
$sql2 = "SELECT film_name FROM film WHERE id_film='$id_film'";
$film_name = $bdd->query($sql2);

}
while ($donnees = $film_name->fetch()) {
echo $donnees['film_name']; } ?>

<td><h2>Films à voir :</h2><td>

<?php if( $id_film ){
$sql3 = "SELECT id_film FROM film_user WHERE id_user='$id_user' AND check_film='2' ";
$id_film = $bdd->query($sql3);
$sql4 = "SELECT film_name FROM film WHERE id_film='$id_film'";
$film_name = $bdd->query($sql4);

}
while ($donnees = $film_name->fetch()) {
echo $donnees['film_name']; ?>
</tr>
</table>



</body>

</html>
<?php
}
$film_name->closeCursor(); // Termine le traitement de la requête
?>


J'ai changé le problème de variable. J'ai aussi viré les conditions if($id_film) car j'avais le sentiment car ça ne servait à rien...

Du coup, j'ai plus d'erreur à l'écran mais je n'ai toujours pas les données affichées.
0
Debideb9445
Messages postés
41
Date d'inscription
lundi 22 novembre 2010
Statut
Membre
Dernière intervention
3 juillet 2017

25 nov. 2015 à 19:33
J'ai du nouveau . J'ai une erreur qui me dit :
Catchable fatal error: Object of class PDOStatement could not be converted to string in D:\wamp\www\Projet5.0\Vos_films.php on line 29
Qu'est ce que cela signifie ? Je comprends qu'un'objet de classe ne peut pas être converti en entier mais pas plus que ça...
0
jordane45
Messages postés
36071
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 août 2022
351 > Debideb9445
Messages postés
41
Date d'inscription
lundi 22 novembre 2010
Statut
Membre
Dernière intervention
3 juillet 2017

25 nov. 2015 à 21:10
Tu regardes ton code ligne 29 ... puis tu regardes ligne 28.... et tu devrais comprendre !
  $id_film = $bdd->query($sql1); 
  $sql2 = "SELECT film_name FROM film WHERE id_film='$id_film'";

...Selon toi .... que vaut $id_film ?
N'aurais tu pas oublié de faire un fetch ?

Et puis.. je suppose qu'il n'y en a pas qu'un (de film) ....
Donc il aurait fallu une boucle !

Mais bon.. je pense que la meilleur solution serait de ne faire qu'une seule requête via une JOINTURE

Ces deux requêtes :
$sql1 = "SELECT id_film FROM film_user WHERE id_user='$id_user' AND check_film='1' ";

 $sql2 = "SELECT film_name FROM film WHERE id_film='$id_film'";



Peuvent se résumer en :
$sql1 = "SELECT id_film 
              FROM film_user  FU
             LEFT JOIN film  F  ON  F.id_film = FU.id_film
             WHERE id_user='$id_user' 
             AND check_film='1' ";

$donnees = $bdd->query($sql1); 


//le temps des tests, pour voir ce que retourne ta requête :
 while ($row = $donnees ->fetch()) {
  echo "<br>";
  print_r($row);
  
}
0
Debideb9445
Messages postés
41
Date d'inscription
lundi 22 novembre 2010
Statut
Membre
Dernière intervention
3 juillet 2017

25 nov. 2015 à 22:04
J'ai testé ta requête, je n'ai plus d'erreur mais ça ne retourne rien comme données de la BDD.
0