Oui, mais ça marche pas encore. j'ai changé tous les sites/all/images en chemin_destination (avec le $ avant) sauf pour l'attribution aux variables $dossier et $chemin_destination
Codes :
insert_news.php :
<?php
ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL | E_STRICT);
print_r($_FILES);
$dossier = 'sites/all/images';
$fichier = basename($_FILES['image_news']['name']);
$taille_maxi = 102400;
$taille = filesize($_FILES['image_news']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['image_news']['name'], '.');
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = 'Vous devez uploader un fichier de type png, gif, jpg, ou jpeg';
}
if($taille>$taille_maxi)
{
$erreur = 'Le fichier est trop lourd';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
//On formate le nom du fichier ici...
$fichier = strtr($fichier,
'ÀÁÂÃÄÅÇèéÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
if(move_uploaded_file($_FILES['image_news']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné
{
echo 'Upload effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Échec de l\'upload !';
}
}
else
{
echo $erreur;
}
// MOVE UPLOADED FILE
if ((isset($_FILES['image_news']['fichier'])&&($_FILES['image_news']['error'] == UPLOAD_ERR_OK))) {
$chemin_destination = 'sites/all/images';
move_uploaded_file($_FILES['image_news']['tmp_name'], $chemin_destination.$_FILES['image_news']['name']);
}
// on teste si le formulaire a été validé
if (isset($_POST['go']) && $_POST['go']=='Poster la news') {
// on se connecte à notre base
$base = mysql_connect ('***', '***', '***');
mysql_select_db('***', $base);
// on teste la déclaration de nos variables
if (!isset($_POST['auteur']) || !isset($_POST['titre']) || !isset($_POST['texte_news'])) {
$erreur = 'Les variables nécessaires au script ne sont pas définies.';
}
else {
if (empty($_POST['auteur']) || empty($_POST['titre']) || empty($_POST['texte_news'])) {
$erreur = 'Au moins un des champs est vide.';
}
// si tout est bon, on peut commencer l'insertion dans la base
else {
// lancement de la requête d'insertion
$sql = 'INSERT INTO news VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['titre']).'", "'.date("d-m-Y H:i:s").'", "'.mysql_escape_string($chemin_destination.$_FILES['image_news']['name']).'", "'.mysql_escape_string($_POST['texte_news']).'")';
// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
echo $sql;
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
// on ferme la connexion à la base de données
mysql_close();
/* on redirige vers la page d'accueil du site (attention, cette redirection ne fonctionne qui si vous avez placé cette page dans un répertoire à partir de la racine du site). Si ce n'est pas le cas, veuillez entrer ici le bon chemin d'accès afin de retomber sur la page d'accueil du site.
header('Location: index.php'); */
// on termine le script courant
exit();
}
}
}
?>
<html>
<head>
<title>Insertion d'une nouvelle news</title>
</head>
<body>
<!-- on fait pointer le formulaire vers la page traitant les données -->
<form method="post" action="insert_news.php" enctype="multipart/form-data">
<table>
<tr>
<td>
<span class="gras">Auteur :</span>
</td>
<td>
<input type="text" name="auteur" maxlength="30" size="50" value="<?php if (isset($_POST['auteur'])) echo htmlentities(trim($_POST['auteur'])); ?>">
</td>
</tr>
<tr>
<td>
<span class="gras">Titre :</span>
</td>
<td>
<input type="text" name="titre" maxlength="50" size="50" value="<?php if (isset($_POST['titre'])) echo htmlentities(trim($_POST['titre'])); ?>">
</td>
</tr>
<tr>
<td>
<span class="gras">Image</span>
<input type="text" style="display:none" name="nbr_photo" value="0" id="nbr_photo" />
</td>
<td>
<input type=hidden name=MAX_FILE_SIZE value=102400>
<input type="file" name="image_news" id="image_news" value="image_news" />
</td>
</tr>
<tr>
<td>
<span class="gras">News :</span>
</td>
<td>
<textarea name="texte_news" cols="50" rows="10"><?php if (isset($_POST['texte_news'])) echo htmlentities(trim($_POST['texte_news'])); ?></textarea>
</td>
</tr>
<tr>
<td>
<td align="right">
<input type="submit" name="go" value="Poster la news">
</td>
</tr>
</table>
</form>
<?php
// on affiche les erreurs éventuelles
if (isset($erreur)) echo '<br /><br />',$erreur;
?>
</body>
</html>
news.php
<?php
// on se connecte à notre base
$base = mysql_connect ('***', '***', '***');
mysql_select_db('***', $base);
// lancement de la requête. on sélectionne les news que l'on va ordonner suivant l'ordre "inverse" des dates (de la plus récente à la plus vieille : DESC) tout en ne sélectionnant que le nombre voulu de news à afficher (LIMIT)
$sql = 'SELECT auteur, titre, DAY(date) AS jour, MONTH(date) AS mois, YEAR(date) AS annee, HOUR(date) AS heure, MINUTE(date) AS minutes, SECOND(date) AS secondes, image_news, texte_news FROM news ORDER BY date ASC LIMIT 10';
// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// on compte le nombre de news stockées dans la base de données
$nb_news = mysql_num_rows($req);
if ($nb_news == 0) {
echo 'Aucune news enregistrée.';
}
else {
// si on a au moins une news, on l'affiche
while ($data = mysql_fetch_array($req)) {
// on affiche les résultats
echo
'<table>
<tr>
<td>';
echo '<img src="' . $chemin_destination . '" alt="" />';
echo
'</td>
<td>';
echo '<br />News de : ' , htmlentities(trim($data['auteur'])) , '<br />';
echo 'Titre : ' , htmlentities(trim($data['titre'])) , '<br />';
echo 'Postée le : ' , $data['jour'] , '/' , $data['mois'] , '/' , $data['annee'] , ' à ' , $data['heure'] , ':' , $data['minutes'] , ':' , $data['secondes'] , '<br /><br />';
echo 'News : ' , nl2br(htmlentities(trim($data['texte_news']))) , '<br /><br /><br />';
echo '</td>
</tr>
</table>';
}
}
// on libère l'espace mémoire alloué à cette requête
mysql_free_result ($req);
// on ferme la connexion à la base de données
mysql_close ();
?>
Sur la page du formulaire, ça m'affiche :
Array ( )
Notice: Undefined index: image_news in /homez.60/imediase/www/insert_news.php on line 6
Notice: Undefined index: image_news in /homez.60/imediase/www/insert_news.php on line 8
Notice: Undefined index: image_news in /homez.60/imediase/www/insert_news.php on line 10
Et après avoir envoyé le formulaire ça me met :
Array ( [image_news] => Array ( [name] => cube1.jpg [type] => image/jpeg [tmp_name] => /var/log/tmp/phpT1hbqx [error] => 0 [size] => 5052 ) ) Upload effectué avec succès !
Notice: Undefined variable: chemin_destination in /homez.60/imediase/www/insert_news.php on line 65
INSERT INTO news VALUES("", "i-media", "essai de news c", "08-06-2010 16:45:32", "", "tttt")
La ligne 65 correspondante étant :
$sql = 'INSERT INTO news VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['titre']).'", "'.date("d-m-Y H:i:s").'", "'.mysql_escape_string($chemin_destination.$_FILES['image_news']['name']).'", "'.mysql_escape_string($_POST['texte_news']).'")';