PHP News + Images

Bonjour à vous,

J'ai fait un petit système de news pour mon site perso en suivant un tuto.

J'aimerai rajouter un image en plus du titre et de l'article, par exemple au dessus du texte.

Il existe un petit tuto pour ça ?

Merci à vous

5 réponses

  1. Salut,

    Voilà un tutoriel permettant l'envoie d'image :
    https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/913099-transmettez-des-donnees-avec-les-formulaires#ss_part_4

    Il faut ajouter une colonne à la table.
    Cette colonne est un champ text (VARCHAR ou TINYTEXT) qui contiendra simplement le nom du fichier.
    Ensuite, lorsque tu affiches les news, il suffira d'utiliser la variable pour générer le chemin complet vers l'image.
    0
    1. Merci beaucoup, je viens de lire et j'ai bien compris comment orienter mon travail.

      Mon seul soucis est la dernière partie, comment faire en sorte que ma variable aille chercher le chemin de l'image, et qu'elle prenne la bonne ?

      Merci encore
      0
      1. salut, cela va se faire automatiquement, vu que tu vas en base chercher la news, et par la même requête, tu vas demander la news numéro x, avec l'image x, quand tu afficheras la news y, tu afficheras l'image y, etc etc....
        0
        1. La variable que la requête SQL retournera ne contiendra que le nom du fichier.
          Lorsque tu affiches l'image, avant d'écrire le nom du fichier, il faudra mettre le chemin du dossier.

          Par exemple :
          <img src="images/uploads/<?php echo $donnees['img']; ?>" alt="Image" />
          0
          1. Merci pour vos réponses, j'ai essayé mais je n'arrive pas au bon résultat.

            Voici mon formulaire déja:

            
            <form action="liste.php" method="post" enctype="multipart/form-data">
            
            <p>Titre : <input type="text" size="30" name="titre" value="<?php echo $titre; ?>" /></p>
            <p>
                Contenu :<br />
                <textarea name="contenu" cols="50" rows="10">
                
            <?php echo $contenu; ?>
            
                </textarea><br /><br />
                
                 
                <input type="file" name="image" /><br /><br />
                
                <input type="hidden" name="id_news" value="<?php echo $id_news; ?>" />
                <input type="submit" value="Envoyer" />
            </p>
            
            </form>
            
            
            


            Et mon traitement, l'image ne s'upload pas déjà, je voudrais déjà essayer de faire ça correctement et l'enter dans la base, mais ne sais pas où le placer.

            
            if (isset($_POST['titre']) AND isset($_POST['contenu']))
            {
                $titre = addslashes($_POST['titre']);
                $contenu = addslashes($_POST['contenu']);
                // On vérifie si c'est une modification de news ou non.
                if ($_POST['id_news'] == 0)
                {
                    // Ce n'est pas une modification, on crée une nouvelle entrée dans la table.
                    mysql_query("INSERT INTO news VALUES('', '" . $titre . "', '" . $contenu . "', '" . time() . "')");
            		
            // Testons si le fichier a bien été envoyé et s'il n'y a pas d'erreur
            if (isset($_FILES['image']) AND $_FILES['image']['error'] == 0)
            {
                    // Testons si le fichier n'est pas trop gros
                    if ($_FILES['image']['size'] <= 10000000)
                    {
                            // Testons si l'extension est autorisée
                            $infosfichier = pathinfo($_FILES['image']['name']);
                            $extension_upload = $infosfichier['extension'];
                            $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
                            if (in_array($extension_upload, $extensions_autorisees))
                            {
                                    // On peut valider le fichier et le stocker définitivement
                                    move_uploaded_file($_FILES['image']['tmp_name'], 'uploads/' . basename($_FILES['image']['name']));
                                    echo "L'envoi a bien été effectué !";
                            }
                    }
            }
            		
            		
                }
                else
                {
                    // On protège la variable "id_news" pour éviter une faille SQL.
                    $_POST['id_news'] = addslashes($_POST['id_news']);
                    // C'est une modification, on met juste à jour le titre et le contenu.
                    mysql_query("UPDATE news SET titre='" . $titre . "', contenu='" . $contenu . "' WHERE id='" . $_POST['id_news'] . "'");
                }
            }
            
            
            
            0