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
A voir également:

18 réponses

avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
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
webalexpb
 
Tout d'abord merci de ton aide ...

Je ne comprends pas ton idée ...
0
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
Il suffit de placer l'image sur ton FTP et de l'inclure avec la balise <img />, comme on le fait habituellement ...
0
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
Mets le nom de l'image dans ce champ (TINYTEXT)
Tu pourras ainsi générer la balise img en PHP.
0
webalexpb
 
tu peux développer stp .... je t avoue que je plane ....
0
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
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
webalexpb
 
OK , je commence à saisir , mais comment faire pour ajouter l'image depuis le formulaire dans un dossier sur mon ftp ??
0
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
0
webalexpb
 
Merci bcp !! ça m aide bien !!

Cependant , ce que je ne saisi pas , c'est comment associé l'image à ma news ???
0
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
Et bien en stockant son nom dans la colonne "img" de ta table SQL "news"
0
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
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
Lors de l'upload, avec la variable $_FILES['nom_input']['name'].
0
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
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
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
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
webalexpb
 
j'ai mis dans la balise code la mais je ne vois pas de différence ....
0
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