News avec photo

webalexpb -  
 webalexpb -
Bonjour , j'ai un script de news avec titre , contenu ... mais je souhaiterais ajouter à cela une photo...

Cependant j'ai lu à droite à gauche qu'il n'était pas souhaitable de stocker directement la photo dans la bdd ...

Comment faire alors ??

Merci de votre aide

Cordialement

18 réponses

  1. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Salut.

    Il faut stocker la photo pour la rendre accessible via HTTP ou sur un FTP publique.
    Il suffira de l'inclure avec la balise <img /> :
    <img src="adresse de l'image" alt="Texte alternatif" />
    0
  2. webalexpb
     
    Tout d'abord merci de ton aide ...

    Je ne comprends pas ton idée ...
    0
  3. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Il suffit de placer l'image sur ton FTP et de l'inclure avec la balise <img />, comme on le fait habituellement ...
    0
  4. webalexpb
     
    je voudrais l'inclure dans ma table news

    id
    titre
    contenu
    img
    timestamp

    tu crois que c 'est possible ???

    pasque j'arrive pas à créer le champ blob , il me ressort une erreur
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Mets le nom de l'image dans ce champ (TINYTEXT)
    Tu pourras ainsi générer la balise img en PHP.
    0
  7. webalexpb
     
    tu peux développer stp .... je t avoue que je plane ....
    0
  8. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Je suppose que tu comptes ajouter un champ pour envoyer un fichier sur le formulaire pour ajouter une news ?

    Après avoir enregistrer le fichier, tu devras insérer la news dans la table. Pour la colonne "img", il suffira de mettre le nom du fichier, comme n'importe quel autre texte. Le type de la colonne sera simplement TINYTEXT ou VARCHAR.

    Lorsque tu afficheras une news, si la colonne "img" n'est pas vide, alors tu génères le HTML :
    <img src="images/news/$nom" alt="Image de la news" />
    à l'aide d'un echo où $nom est la colonne img de ta table. Si la colonne est vide, alors tu affiche l'image par défaut :
    <img src="images/news/default.png" alt="Image de la news" />
    0
  9. webalexpb
     
    OK , je commence à saisir , mais comment faire pour ajouter l'image depuis le formulaire dans un dossier sur mon ftp ??
    0
  10. webalexpb
     
    Merci bcp !! ça m aide bien !!

    Cependant , ce que je ne saisi pas , c'est comment associé l'image à ma news ???
    0
  11. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Et bien en stockant son nom dans la colonne "img" de ta table SQL "news"
    0
  12. webalexpb
     
    et comment je fais ça ??? je ne comprends pas comment je peux prendre le nom du fichier et le stocker dans ma bdd ...
    0
  13. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Lors de l'upload, avec la variable $_FILES['nom_input']['name'].
    0
  14. webalexpb
     
    BOnjour, j'ai essayer tout ce que tu m'as dis .... je bloque là ...

    J'ai deux pages :

    redigernews.php

    <body>
    <h3><a href="listedesnews.php">Retour à la liste des news</a></h3>
    <?php
    mysql_connect("localhost", "root", "");
    mysql_select_db("essai");
    if (isset($_GET['modifier_news']))
    {

    $_GET['modifier_news'] = mysql_real_escape_string(htmlspecialchars($_GET['modifier_news']));

    $retour = mysql_query('SELECT * FROM news WHERE id=\'' . $_GET['modifier_news'] . '\'');
    $donnees = mysql_fetch_array($retour);

    $titre = stripslashes($donnees['titre']);
    $contenu = stripslashes($donnees['contenu']);
    $id_news = $donnees['id'];

    }
    else
    {

    $titre = '';
    $contenu = '';
    $id_news = 0;
    }

    ?>

    <form action="listedesnews.php" method="post" enctype="multipart/form-data">
    <p>
    Titre : <br />
    <input type="text" size="30" name="titre" value="<?php echo $titre; ?>" />
    <br /><br />

    Contenu :<br />
    <textarea name="contenu" cols="50" rows="10">
    <?php echo $contenu; ?>
    </textarea><br />

    <p>
    Formulaire d'envoi de fichier :<br />
    <input type="file" name="monfichier" /><br />
    </p>

    <input type="submit" value="Envoyer" />
    </p>
    </form>
    </body>

    listedesnews.php

    <body>

    <h2><a href="redigernews.php">Ajouter une news</a></h2>

    <?php

    if (isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0)
    {

    if ($_FILES['monfichier']['size'] <= 1000000)
    {

    $infosfichier = pathinfo($_FILES['monfichier']['name']);
    $extension_upload = $infosfichier['extension'];
    $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
    if (in_array($extension_upload, $extensions_autorisees))
    {

    move_uploaded_file($_FILES['monfichier']['tmp_name'], 'image_news/' . basename($_FILES['monfichier']['name']));
    echo "L'envoi a bien été effectué !";
    }
    }
    }

    ?>

    <?php
    mysql_connect("localhost", "root", "");
    mysql_select_db("jura-betail");

    $image = $_FILES['nom_input']['name']

    if (isset($_POST['titre']) AND isset($_POST['contenu']))
    {
    $titre = addslashes($_POST['titre']);
    $contenu = addslashes($_POST['contenu']);

    if ($_POST['id_news'] == 0)
    {

    mysql_query("INSERT INTO news VALUES('', '" . $titre . "', '" . $contenu . "', '" . $image . "', '" . time() . "')");
    }
    else
    {

    $_POST['id_news'] = addslashes($_POST['id_news']);

    mysql_query("UPDATE news SET titre='" . $titre . "', contenu='" . $contenu . "' WHERE id='" . $_POST['id_news'] . "'");
    }
    }

    if (isset($_GET['supprimer_news']))
    {

    $_GET['supprimer_news'] = addslashes($_GET['supprimer_news']);
    mysql_query('DELETE FROM news WHERE id=\'' . $_GET['supprimer_news'] . '\'');
    }
    ?>
    <table><tr>
    <th>Modifier</th>
    <th>Supprimer</th>
    <th>Titre</th>
    <th>Image</th>
    <th>Date</th>
    </tr>
    <?php
    $retour = mysql_query('SELECT * FROM news ORDER BY id DESC');
    while ($donnees = mysql_fetch_array($retour))
    {
    ?>
    <tr>
    <td><?php echo '<a href="redigernews.php?modifier_news=' . $donnees['id'] . '">'; ?>Modifier</a></td>
    <td><?php echo '<a href="listedesnews.php?supprimer_news=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
    <td><?php echo stripslashes($donnees['titre']); ?></td>
    <td><?php echo stripslashes($donnees['image']); ?></td>
    <td><?php echo date('d/m/Y', $donnees['timestamp']); ?></td>
    </tr>
    <?php
    }
    ?>
    </table>
    </body>

    J'ai ensuite deux messages d'erreurs :

    L'envoi a bien été effectué !
    Notice: Undefined index: id_news in C:\wamp\www\jura-betail\admin\listedesnews.php on line 51

    Notice: Undefined variable: image in C:\wamp\www\jura-betail\admin\listedesnews.php on line 54

    La ligne 51 correspond à :
    if ($_POST['id_news'] == 0)

    Et la ligne 54 à :
    mysql_query("INSERT INTO news VALUES('', '" . $titre . "', '" . $contenu . "', '" . $image . "', '" . time() . "')");

    Merci de ton aide ...
    0
  15. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Salut.
    Utilise la balise "code" de CCM.
    Pour tes erreurs, ça veut dire que $_POST['id_news'] et $image n'existent pas.
    Il faut vérifier avant si le formulaire est envoyé avec des isset().
    0
  16. webalexpb
     
    oups j'avais pas fait gaffe à cette balise !! mes excuses ...

    Je teste pourtant si le fichier a bien été envoyé puis je valide l'upload ....
    je ne comprends pas mon erreur ....

    <body>
     
    <h2><a href="redigernews.php">Ajouter une news</a></h2>
    
    
    
    
    <?php
    
    if (isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0)
    {
     move_uploaded_file($_FILES['monfichier']['tmp_name'], 'image_news' . basename($_FILES['monfichier']['name']));
                            echo "L'envoi a bien été effectué !";
    }
    ?>
    
    <?php
            mysql_connect("localhost", "root", "");
             mysql_select_db("jura-betail");
    		 
    
    if (isset($_POST['titre']) AND isset($_POST['contenu']))
    {
        $titre = addslashes($_POST['titre']);
        $contenu = addslashes($_POST['contenu']);
    
        if ($_POST['id_news'] == 0)
        {
     
            mysql_query("INSERT INTO news VALUES('', '" . $titre . "', '" . $contenu . "', '" . $image . "', '" . time() . "')");
        }
        else
        {
        
            $_POST['id_news'] = addslashes($_POST['id_news']);
    
            mysql_query("UPDATE news SET titre='" . $titre . "', contenu='" . $contenu . "' WHERE id='" . $_POST['id_news'] . "'");
        }
    }
     
    
    if (isset($_GET['supprimer_news'])) 
    {
    
        $_GET['supprimer_news'] = addslashes($_GET['supprimer_news']);
        mysql_query('DELETE FROM news WHERE id=\'' . $_GET['supprimer_news'] . '\'');
    }
    ?>
    <table><tr>
    <th>Modifier</th>
    <th>Supprimer</th>
    <th>Titre</th>
    <th>Image</th>
    <th>Date</th>
    </tr>
    <?php
    $retour = mysql_query('SELECT * FROM news ORDER BY id DESC');
    while ($donnees = mysql_fetch_array($retour)) 
    {
    ?>
    <tr>
    <td><?php echo '<a href="redigernews.php?modifier_news=' . $donnees['id'] . '">'; ?>Modifier</a></td>
    <td><?php echo '<a href="listedesnews.php?supprimer_news=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
    <td><?php echo stripslashes($donnees['titre']); ?></td>
    <td><?php echo stripslashes($donnees['image']); ?></td>
    <td><?php echo date('d/m/Y', $donnees['timestamp']); ?></td>
    </tr>
    <?php
    } 
    ?>
    </table>
    </body>
    
    
    0
  17. webalexpb
     
    j'ai mis dans la balise code la mais je ne vois pas de différence ....
    0
  18. webalexpb
     
    Voilà où j'en suis :

    page redigernews.php

    <h3><a href="listedesnews.php">Retour à la liste des news</a></h3>
    <?php
             mysql_connect("localhost", "root", "");
             mysql_select_db("jura-betail");
    if (isset($_GET['modifier_news'])) 
    {
       
        $_GET['modifier_news'] = mysql_real_escape_string(htmlspecialchars($_GET['modifier_news']));
        
        $retour = mysql_query('SELECT * FROM news WHERE id=\'' . $_GET['modifier_news'] . '\'');
        $donnees = mysql_fetch_array($retour);
        
    
        $titre = stripslashes($donnees['titre']);
        $contenu = stripslashes($donnees['contenu']);
        $id_news = $donnees['id']; 
    	
    }
    else 
    {
     
        $titre = '';
        $contenu = '';
        $id_news = 0; 
    }
    
    
    
    ?>
    
    
    
    <form action="listedesnews.php" method="post" enctype="multipart/form-data">
        <p>
        Titre : <br />
    	<input type="text" size="30" name="titre" value="<?php echo $titre; ?>" />
    	<br /><br />
    
        
        Contenu :<br />
        <textarea name="contenu" cols="50" rows="10">
        <?php echo $contenu; ?>
        </textarea><br />
    
    	  <p>
                    Formulaire d'envoi de fichier :<br />
                    <input type="file" name="monfichier" /><br />
            </p>
    	
        <input type="submit" value="Envoyer" />
        </p>
    </form>


    page listedesnews.php

    <h2><a href="redigernews.php">Ajouter une news</a></h2>
    
    <?php
    
    if (isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0)
    {
     move_uploaded_file($_FILES['monfichier']['tmp_name'], 'image_news' . basename($_FILES['monfichier']['name']));
                            echo "L'envoi a bien été effectué !";
    }
    ?>
    
    <?php
            mysql_connect("localhost", "root", "");
             mysql_select_db("base");
    		 
    
    if (isset($_POST['titre']) AND isset($_POST['contenu']))
    {
        $titre = addslashes($_POST['titre']);
        $contenu = addslashes($_POST['contenu']);
    
        if ($_POST['id_news'] == 0)
        {
     
            mysql_query("INSERT INTO news VALUES('', '" . $titre . "', '" . $contenu . "', '" . $image . "', '" . time() . "')");
        }
        else
        {
        
            $_POST['id_news'] = addslashes($_POST['id_news']);
    
            mysql_query("UPDATE news SET titre='" . $titre . "', contenu='" . $contenu . "' WHERE id='" . $_POST['id_news'] . "'");
        }
    }
     
    
    if (isset($_GET['supprimer_news'])) 
    {
    
        $_GET['supprimer_news'] = addslashes($_GET['supprimer_news']);
        mysql_query('DELETE FROM news WHERE id=\'' . $_GET['supprimer_news'] . '\'');
    }
    ?>
    <table><tr>
    <th>Modifier</th>
    <th>Supprimer</th>
    <th>Titre</th>
    <th>Image</th>
    <th>Date</th>
    </tr>
    <?php
    $retour = mysql_query('SELECT * FROM news ORDER BY id DESC');
    while ($donnees = mysql_fetch_array($retour)) 
    {
    ?>
    <tr>
    <td><?php echo '<a href="redigernews.php?modifier_news=' . $donnees['id'] . '">'; ?>Modifier</a></td>
    <td><?php echo '<a href="listedesnews.php?supprimer_news=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
    <td><?php echo stripslashes($donnees['titre']); ?></td>
    <td><?php echo stripslashes($donnees['image']); ?></td>
    <td><?php echo date('d/m/Y', $donnees['timestamp']); ?></td>
    </tr>
    <?php
    } 
    ?>
    </table>
    


    désolé , je ne peux pas mettre tout ça dans la balise code , ça ne marche pas ...
    0