Php affichage de contenus de la base de données

Par Fatavis, il y a 9 ans


Bonjour à tous et à toutes,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

Je souhaite afficher un cours que se trouve dans ma base de donné,
voici toutes les photos la concernant :

https://drive.google.com/file/d/0B33fxm0r0DabWEpCVEViQ3NSUU0/view?usp=sharing
https://drive.google.com/file/d/0B33fxm0r0DabdmpUYmRWSXFIRWM/view?usp=sharing
https://drive.google.com/file/d/0B33fxm0r0DabNDR3Z0U2QUZmN2M/view?usp=sharing

Et voici mon code j'ai réparti de la façon suivante mon code : j'ai un dossier contenant mon site avec un dossier page et fonction contenant respetivement les pages courses.php,course.php et dans l'autre la page course.func.php, une image : https://drive.google.com/file/d/0B33fxm0r0DabR1N3Nk9yS09DS3c/view?usp=sharing
Dans la page courses.php on voit toutes les cours mais pas le détail et course.php on doit voir le cours en entier c'est à dire toutes les informations

Voici le code de courses.php

<!-- En dessous se trouve le code pour la description--> <h5>Nos cours</h5> <hr> <div class="row"> <?php require "functions/course.func.php"; $courses = get_courses(); foreach($courses as $course) { ?> <div class="col l4 m4 s4"> <div class="card activator"> <div class="card-image waves-effect waves-block waves-light activator"> <h5 class="grey-text text-darken-2 "> <?=$course->title?> <a href="index.php?page=course&id=<?=$course->id?>"> <i class="material-icons right">zoom_in</i></a </h5> <img src="img/posts/post.png" class="activator" alt="post"/> </div> <div class="card-reveal"> <span class="card-title grey-text text-darken-4">Cours <i class="material-icons right">close</i></span> <p> <?=substr(nl2br($course->content),0,1000);?>... </p> </div> </div> </div> <?php } ?> </div>

Voici le code de course.php

<?php $course = get_course(); if($course == false){ header("Location:index.php?page=error"); }else{ ?> </div> <div class="parallax-container"> <div class="parallax"> <img src="img/posts/<?= $course->image ?>" alt="<?= $course->title ?>"/> </div> </div> <div class="container"> <h2><?= $course->title ?></h2> <h6>Par <?= $course->name ?> le <?= date("d/m/Y à H:i", strtotime($course->date)) ?></h6> <p><?= nl2br($course->content); ?></p> <?php } ?>

Voici le code de course.func.php

<?php function get_courses(){ global $db; $req = $db->query(" SELECT course.id, course.title, course.image, course.date, course.content, admins.name FROM course JOIN admins ON course.writer=admins.email WHERE posted='1' ORDER BY date DESC "); $results = array(); while($rows = $req->fetchObject()){ $results[] = $rows; } return $results; } function get_course(){ global $db; $req = $db->query(" SELECT course.id, course.title, course.image, course.date, course.content, admins.name FROM course JOIN admins ON course.writer=admins.email WHERE course.id='{$_GET['id']}' AND course.posted = '1' ORDER BY date DESC "); $results = array(); while($rows = $req->fetchObject()){ $results[] = $rows; } return $results; }

Ce que je veux

J'aimerais que le code fonctionne, cela fait une semaine que je cherche et/ou que je retarde le problème mais je ne comprends pas mon erreur.

Ce que j'obtiens

L'erreur que j'obiens est la suivante :
https://drive.google.com/file/d/0B33fxm0r0DabaU1pQ2VsR0kwdk0/view?usp=sharing
https://drive.google.com/file/d/0B33fxm0r0DabdkxmbnExUnlaODg/view?usp=sharing
https://drive.google.com/file/d/0B33fxm0r0DabUWZkbU9hdEhPMUE/view?usp=sharing

Merci d'avance si vous avez des questions n'hésitez pas :)

2 réponses

Lartak, il y a 9 ans

Bonjour.
C'est normal que tu aies ces erreurs, étant donné que tu modifies l'objet en array avant de le retourner et que tu cherches à utiliser un objet sur un array.
Je ne comprends d'ailleurs pas pourquoi tu fais un while dans chacune des deux fonctions avant de retourner les enregistrements.
Fais tout simplement par exemple :

function get_courses(){ global $db; $req = $db->query(" SELECT course.id, course.title, course.image, course.date, course.content, admins.name FROM course JOIN admins ON course.writer=admins.email WHERE posted='1' ORDER BY date DESC "); return $req->fetchObject(); }
Fatavis, il y a 9 ans

Merci une erreur bête :)