par
cookie01 » 01 janv. 2008, 12:01
Bonjour à tous et bonne année 2008
Voilà j'ai bidouillé un code d'administration de news contenant 3 champs : titre, contenu et une image qui se redimensionne automatique grace à gd. Mais le problème c'est qu'il ne m'écrit pas dans la table. Rien ne se passe, aucune erreur n'est renvoyée, il ne se passe vraiment rien... Il y a surement une erreur dans le code, et j'ai peur que se soit au niveau du code d'upload de l'image, car c'est l'ajout que j'ai fait à ce script qui marche très bien à la base.
J'ai donc rajouté des echo de test et il a bien affiché le titre, le contenu de la news mais il bloque sur l'image apparemment car il m'affiche un "0" à la place. Donc comme je pensais, cela vient bien du script de l'upload de l'image...
Il doit y avoir quand même une bonne erreur pour bloquer l'écriture dans la table... J'ai relu tout le code mais je ne trouve toujours pas. Pour info, le site est hébergé chez free.
Merci de votre aide
Voici les 2 fichiers php :
liste_news.php
<?php
mysql_connect("", "", "");
mysql_select_db("");
//-----------------------------------------------------
// Vérification 1 : est-ce qu'on veut poster une news ?
//-----------------------------------------------------
if (isset($_POST['titre']) AND isset($_POST['contenu']) AND isset($_POST['fname']))
{
$titre = addslashes($_POST['titre']);
$contenu = addslashes($_POST['contenu']);
$fname = addslashes($_POST['fname']);
// On vérifie si c'est une modification de news ou pas
if ($_POST['id_news'] == 0)
{
//-----------------------------------------------------
// Code image
//-----------------------------------------------------
// Taille maximum
$MAX_FILE_SIZE = 300000;
// Dossier de destination du fichier
$folder = "../images/news/";
// Tableau array des différents types
$allowed_types = array("image/jpeg");
// Variables récupérées par methode POST du formulaire
$fname = $HTTP_POST_FILES['fichier']['name'];
$ftype = $HTTP_POST_FILES['fichier']['type'];
$fsize = $HTTP_POST_FILES['fichier']['size'];
$ftmp = $HTTP_POST_FILES['fichier']['tmp_name'];
// Diverses test afin de savoir si :
// Le fichier n'est pas une image jpeg
if(!in_array($ftype, $allowed_types)){$error = 1;}
// La taille du fichier est trop grande
if($fize > $MAX_FILE_SIZE){$error = 2;}
// Le fichier existe déjà
if(file_exists($folder."m_".$fname)){$error = 3;}
// Si tout va bien, c'est bien déroulé
if(copy($ftmp,''.$folder.''.$fname.'')) {$error = 0;}
// Switch servant simplement à la gestion des erreurs
switch($error){
case'0':
echo("Fichier correctement envoyé.");
break;
case'1':
echo("Format de fichier incorrecte. Uniquement .jpeg");
break;
case'2':
echo("Fichier trop volumineux.");
break;
case'3':
echo("Fichier déjà existant.");
break;
}
// Création de la miniature
$source = imagecreatefromjpeg($ftmp); // La photo est la source
$folder = "../images/news/thumbnails/"; // Dossier de destination de la miniature
$destination = imagecreatetruecolor(200, 200); // On crée la miniature vide
// Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image
$largeur_source = imagesx($source);
$hauteur_source = imagesy($source);
$largeur_destination = imagesx($destination);
$hauteur_destination = imagesy($destination);
// On crée la miniature
imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source);
// On enregistre la miniature
imagejpeg($destination,''.$folder.''.$fname.'');
// Ce n'est pas une modification, on crée une nouvelle entrée dans la table
mysql_query("INSERT INTO news VALUES('', '" . $titre . "', '" . $contenu . "', '" . $fname . "', '" . time() . "')");
}
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'] . "'");
}
}
//--------------------------------------------------------
// Vérification 2 : est-ce qu'on veut supprimer une news ?
//--------------------------------------------------------
if (isset($_GET['supprimer_news'])) // Si on demande de supprimer une news
{
// Alors on supprime la news correspondante
// On protège la variable "id_news" pour éviter une faille SQL
$_GET['supprimer_news'] = addslashes($_GET['supprimer_news']);
mysql_query('DELETE FROM news WHERE id=\'' . $_GET['supprimer_news'] . '\'');
}
?>
<p> </p>
<p class="smallText">
<table width="324" height="50" align="center" bgcolor="#000000" class="cadre"><tr background="../../data_index2/cellpic1.png">
<th>Modifier</th>
<th>Supprimer</th>
<th>Titre</th>
<th>Date</th>
</tr>
<?php
$retour = mysql_query('SELECT * FROM news ORDER BY id DESC');
while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les news
{
?>
<tr>
<td><?php echo '<a href="rediger_news.php?modifier_news=' . $donnees['id'] . '">'; ?>Modifier</a></td>
<td><?php echo '<a href="liste_news.php?supprimer_news=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
<td><?php echo stripslashes($donnees['titre']); ?></td>
<td><?php echo date('d/m/Y', $donnees['timestamp']); ?></td>
</tr>
<?php
} // Fin de la boucle qui liste les news
?>
</table></p>
rediger_news.php
<?php
mysql_connect("", "", "");
mysql_select_db("");
if (isset($_GET['modifier_news'])) // Si on demande de modifier une news
{
// On protège la variable "modifier_news" pour éviter une faille SQL
$_GET['modifier_news'] = mysql_real_escape_string(htmlspecialchars($_GET['modifier_news']));
// On récupère les infos de la correspondante
$retour = mysql_query('SELECT * FROM news WHERE id=\'' . $_GET['modifier_news'] . '\'');
$donnees = mysql_fetch_array($retour);
// On place le titre et le contenu dans des variables simples
$titre = stripslashes($donnees['titre']);
$contenu = stripslashes($donnees['contenu']);
$id_news = $donnees['id']; // Cette variable va servir pour se souvenir que c'est une modification
}
else // C'est qu'on rédige une nouvelle news
{
// Les variables $titre et $contenu sont vides, puisque c'est une nouvelle news
$titre = '';
$contenu = '';
$fname = '';
$id_news = 0; // La variable vaut 0, donc on se souviendra que ce n'est pas une modification
}
?>
<form action="liste_news.php" enctype="multipart/form-data" method="post">
<p align="center"><span class="smallText">Titre :</span>
<input type="text" size="30" name="titre" value="<?php echo $titre; ?>" /></p>
<p align="center">
<span class="smallText">Contenu :</span><br />
<textarea name="contenu" cols="50" rows="10">
<?php echo $contenu; ?>
</textarea><br />
<input type="hidden" name="id_news" value="<?php echo $id_news; ?>" /><br>
<span class="smallText">Image : </span>
<input name="fichier" type="file"/><br><br>
<input type="submit" value="Envoyer" />
</p>
</form></p>
Bonjour à tous et bonne année 2008 :D
Voilà j'ai bidouillé un code d'administration de news contenant 3 champs : titre, contenu et une image qui se redimensionne automatique grace à gd. Mais le problème c'est qu'il ne m'écrit pas dans la table. Rien ne se passe, aucune erreur n'est renvoyée, il ne se passe vraiment rien... Il y a surement une erreur dans le code, et j'ai peur que se soit au niveau du code d'upload de l'image, car c'est l'ajout que j'ai fait à ce script qui marche très bien à la base.
J'ai donc rajouté des echo de test et il a bien affiché le titre, le contenu de la news mais il bloque sur l'image apparemment car il m'affiche un "0" à la place. Donc comme je pensais, cela vient bien du script de l'upload de l'image...
Il doit y avoir quand même une bonne erreur pour bloquer l'écriture dans la table... J'ai relu tout le code mais je ne trouve toujours pas. Pour info, le site est hébergé chez free.
Merci de votre aide :)
Voici les 2 fichiers php :
[u]liste_news.php[/u]
[php]<?php
mysql_connect("", "", "");
mysql_select_db("");
//-----------------------------------------------------
// Vérification 1 : est-ce qu'on veut poster une news ?
//-----------------------------------------------------
if (isset($_POST['titre']) AND isset($_POST['contenu']) AND isset($_POST['fname']))
{
$titre = addslashes($_POST['titre']);
$contenu = addslashes($_POST['contenu']);
$fname = addslashes($_POST['fname']);
// On vérifie si c'est une modification de news ou pas
if ($_POST['id_news'] == 0)
{
//-----------------------------------------------------
// Code image
//-----------------------------------------------------
// Taille maximum
$MAX_FILE_SIZE = 300000;
// Dossier de destination du fichier
$folder = "../images/news/";
// Tableau array des différents types
$allowed_types = array("image/jpeg");
// Variables récupérées par methode POST du formulaire
$fname = $HTTP_POST_FILES['fichier']['name'];
$ftype = $HTTP_POST_FILES['fichier']['type'];
$fsize = $HTTP_POST_FILES['fichier']['size'];
$ftmp = $HTTP_POST_FILES['fichier']['tmp_name'];
// Diverses test afin de savoir si :
// Le fichier n'est pas une image jpeg
if(!in_array($ftype, $allowed_types)){$error = 1;}
// La taille du fichier est trop grande
if($fize > $MAX_FILE_SIZE){$error = 2;}
// Le fichier existe déjà
if(file_exists($folder."m_".$fname)){$error = 3;}
// Si tout va bien, c'est bien déroulé
if(copy($ftmp,''.$folder.''.$fname.'')) {$error = 0;}
// Switch servant simplement à la gestion des erreurs
switch($error){
case'0':
echo("Fichier correctement envoyé.");
break;
case'1':
echo("Format de fichier incorrecte. Uniquement .jpeg");
break;
case'2':
echo("Fichier trop volumineux.");
break;
case'3':
echo("Fichier déjà existant.");
break;
}
// Création de la miniature
$source = imagecreatefromjpeg($ftmp); // La photo est la source
$folder = "../images/news/thumbnails/"; // Dossier de destination de la miniature
$destination = imagecreatetruecolor(200, 200); // On crée la miniature vide
// Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image
$largeur_source = imagesx($source);
$hauteur_source = imagesy($source);
$largeur_destination = imagesx($destination);
$hauteur_destination = imagesy($destination);
// On crée la miniature
imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source);
// On enregistre la miniature
imagejpeg($destination,''.$folder.''.$fname.'');
// Ce n'est pas une modification, on crée une nouvelle entrée dans la table
mysql_query("INSERT INTO news VALUES('', '" . $titre . "', '" . $contenu . "', '" . $fname . "', '" . time() . "')");
}
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'] . "'");
}
}
//--------------------------------------------------------
// Vérification 2 : est-ce qu'on veut supprimer une news ?
//--------------------------------------------------------
if (isset($_GET['supprimer_news'])) // Si on demande de supprimer une news
{
// Alors on supprime la news correspondante
// On protège la variable "id_news" pour éviter une faille SQL
$_GET['supprimer_news'] = addslashes($_GET['supprimer_news']);
mysql_query('DELETE FROM news WHERE id=\'' . $_GET['supprimer_news'] . '\'');
}
?>
<p> </p>
<p class="smallText">
<table width="324" height="50" align="center" bgcolor="#000000" class="cadre"><tr background="../../data_index2/cellpic1.png">
<th>Modifier</th>
<th>Supprimer</th>
<th>Titre</th>
<th>Date</th>
</tr>
<?php
$retour = mysql_query('SELECT * FROM news ORDER BY id DESC');
while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les news
{
?>
<tr>
<td><?php echo '<a href="rediger_news.php?modifier_news=' . $donnees['id'] . '">'; ?>Modifier</a></td>
<td><?php echo '<a href="liste_news.php?supprimer_news=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
<td><?php echo stripslashes($donnees['titre']); ?></td>
<td><?php echo date('d/m/Y', $donnees['timestamp']); ?></td>
</tr>
<?php
} // Fin de la boucle qui liste les news
?>
</table></p>[/php]
[u]rediger_news.php[/u]
[php]<?php
mysql_connect("", "", "");
mysql_select_db("");
if (isset($_GET['modifier_news'])) // Si on demande de modifier une news
{
// On protège la variable "modifier_news" pour éviter une faille SQL
$_GET['modifier_news'] = mysql_real_escape_string(htmlspecialchars($_GET['modifier_news']));
// On récupère les infos de la correspondante
$retour = mysql_query('SELECT * FROM news WHERE id=\'' . $_GET['modifier_news'] . '\'');
$donnees = mysql_fetch_array($retour);
// On place le titre et le contenu dans des variables simples
$titre = stripslashes($donnees['titre']);
$contenu = stripslashes($donnees['contenu']);
$id_news = $donnees['id']; // Cette variable va servir pour se souvenir que c'est une modification
}
else // C'est qu'on rédige une nouvelle news
{
// Les variables $titre et $contenu sont vides, puisque c'est une nouvelle news
$titre = '';
$contenu = '';
$fname = '';
$id_news = 0; // La variable vaut 0, donc on se souviendra que ce n'est pas une modification
}
?>
<form action="liste_news.php" enctype="multipart/form-data" method="post">
<p align="center"><span class="smallText">Titre :</span>
<input type="text" size="30" name="titre" value="<?php echo $titre; ?>" /></p>
<p align="center">
<span class="smallText">Contenu :</span><br />
<textarea name="contenu" cols="50" rows="10">
<?php echo $contenu; ?>
</textarea><br />
<input type="hidden" name="id_news" value="<?php echo $id_news; ?>" /><br>
<span class="smallText">Image : </span>
<input name="fichier" type="file"/><br><br>
<input type="submit" value="Envoyer" />
</p>
</form></p>[/php]