Bonjour,

je passe de php procedural vers une archi MVC et POO, en tant que debutant...

mon Modele :

public static function post($title,$content,$posted){

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
$db = getBdd();
 
        $p = [
            'title'    => $title,
            'content'  => $content,
            'writer'   => $_SESSION['admin'],
            'posted'   => $posted
        ];
 
        $req = $db->prepare("
      INSERT INTO posts(title,content,writer,date_post,posted) 
      VALUES(:title,:content,:writer,NOW(),:posted)");
        $req->execute($p);
 
    }
 
    public static function post_img($tmp_name, $extension){
 
        $db = getBdd();
 
        $id = $db->lastInsertId();
        $i = [
            'id'    => $id,
            'image' => $id.$extension
        ];
 
        $req = $db->prepare("UPDATE posts SET image = :image WHERE id = :id");
        $req->execute($i);
        move_uploaded_file($tmp_name,"../img/posts/".$id.$extension);
        header("Location:index.php?page=post&id".$id);
    }
mon controleur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
function write_admin(){
 
    $db = getBdd();
    /*if(admin()!=1){
        header("Location:index.php?page=dashboard");
    }*/
 
    if(isset($_POST['post'])){
 
        $title   = htmlspecialchars(trim($_POST['title']));
        $content = htmlspecialchars(trim($_POST['content']));
        $posted  = isset($_POST['public']) ? "1" : "0";
 
        $errors  = [];
 
        if(empty($title) || empty($content)){
            $errors['empty'] = "Veuillez remplir tous les champs";
        }
 
        if(!empty($_FILES['image']['name'])){
            $file       = $_FILES['image']['name'];
            $extensions = ['.png','.jpg','.jpeg','.gif','.PNG','.JPG','JPEG','.GIF'];
            $extension  = strrchr($file,'.');
 
            if(!in_array($extension, $extensions)){
                $errors['image'] = "Cette image n'est pas valable";
            }
        }
        if(!empty($errors)){
            ?>
            <div class="card red">
                <div class="card-content white-text">
                    <?php
                    foreach ($errors as $error){
                        echo $error."<br/>";
                    }
                    ?>
                </div>
            </div>
            <?php
        }else{
            post($title,$content,$posted);
            if(!empty($_FILES['image']['name'])){
                post_img($_FILES['image']['tmp_name'], $extension);
            }else{
                $id = $db->lastInsertId();
                header("Location:index.php?page=post&id=".$id);
            }
        }
 
    }
 
}
Et ma write.php sans passer par la VUE :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<h2>Poster un article</h2>
<?= write_admin(); ?>
<form method="post" enctype="multipart/form-data">
    <div class="row">
        <div class="input-field col s12">
            <input type="text" name="title" id="title" />
            <label for="title">Titre de l'article</label>
        </div>
        <div class="input-field col s12">
            <label for="content">Contenu de l'article</label>
            <br><br>
            <textarea name="content" id="content"></textarea>
        </div>
        <div class="col s12">
            <div class="input-field file-field">
                <div class="btn col s3">
                    <input type="file" name="image" class="col btn s3" />
                    <span>Image de l'article</span>
                </div>
                <input type="text" class="file-path col s9" readonly />
            </div>
        </div>
        <div class="col s6">
            <p>Public</p>
            <div class="switch">
                <label>
                    Non
                    <input type="checkbox" name="public">
                    <span class="lever"></span>
                    Oui
                </label>
            </div>
        </div>
        <div class="col s6" right-align>
            <br /><br />
            <button class="btn" type="submit" name="post">Publier</button>
        </div>
    </div>
</form>
Et j'ai une belle page blanche, alors que j'ai fait la meme chose cote front mais il n'y avait pas de param dans les functions...

Merci de votre aide Bonne journee