Debideb9445
Messages postés41Date d'inscriptionlundi 22 novembre 2010StatutMembreDernière intervention 3 juillet 2017
-
Modifié par Debideb9445 le 25/11/2015 à 19:06
jordane45
Messages postés38144Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention21 avril 2024
-
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.
<?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);
</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.
Debideb9445
Messages postés41Date d'inscriptionlundi 22 novembre 2010StatutMembreDerniè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...
jordane45
Messages postés38144Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention21 avril 2024344
>
Debideb9445
Messages postés41Date d'inscriptionlundi 22 novembre 2010StatutMembreDerniè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);
}
Debideb9445
Messages postés41Date d'inscriptionlundi 22 novembre 2010StatutMembreDerniè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.
25 nov. 2015 à 19:07
Evite, autant que possible, de mettre des balises PHP partout....
Ceci :
Peut (et je te le conseille...) être écrit :
Modifié par Debideb9445 le 25/11/2015 à 19:23
Du coup après correction voilà mon code :
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.
25 nov. 2015 à 19:33
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...
25 nov. 2015 à 21:10
...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 :
Peuvent se résumer en :
25 nov. 2015 à 22:04