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
Réponse acceptée

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
Auteur

Merci une erreur bête :)