par
seb844501 » 14 janv. 2010, 01:12
Bonjour, tout marchais bien jusqu'à présent et d'un coup j'ai une erreur. Je m'explique, j'ai créé un genre de livre d'or pour la classe de neige d'une classe à l'aide de tuto du site.
Je l'ai modifié pour y insérer des images en les retaillant pour qu'elles soient insérer dans un dossier spécifique et que le chemin d'accés à cette image soit insérer dans la BDD. Tout tournait bien et ce soir en voulant tester avant le départ dans 2 jours, il me mets une erreur lorsque je veux insérer unenews sans mettre d'image.
Voilà l'erreur
<citation>Warning: Division by zero in /homez.109/tcsorgua/www/classedeneigequintine/admin/listenews.php on line 50
Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /homez.109/tcsorgua/www/classedeneigequintine/admin/listenews.php on line 53
Erreur</citation>
Je laisse mon code ici:
J'ai noté l'emplacement de la ligne 50.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Liste des news</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
h2, th, td
{
text-align:center;
}
table
{
border-collapse:collapse;
border:2px solid black;
margin:auto;
}
th, td
{
border:1px solid black;
}
.style1 {
font-size: 20pt;
}
</style>
</head>
<body background="http://www.alpha-sierra.org/aramis/images/stories/galeries_photos/stSorlin/chalets-arvan-i-01.jpg" background-attachment: "fixed" link="white" vlink="white" alink="white">
<div align="left"><a href="http://neigequintine2010.c.la" target="_blank">Retour à l'accueil</a></div>
<h2><a href="redigernews.php">Ajouter une news</a></h2>
<?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['prenom']))
{if (isset($_FILES['image']) AND $_FILES['image']['error'] == 0); //Vérification que l'image existe et a été upload
//S'il y a une image alors on vérifie la taille de l'image
{ if ($_FILES['image']['size'] <= 5000000)
{
$ImageNews = getimagesize($_FILES['image']['tmp_name']);
$ExtensionPresumee = strrchr('.', $ImageNews);
$ExtensionPresumee = 'jpg';
$ImageChoisie = imagecreatefromjpeg($_FILES['image']['tmp_name']);
$TailleImageChoisie = getimagesize($_FILES['image']['tmp_name']);
$NouvelleLargeur = 700; //Largeur choisie à 350px mais modifiable
$Reduction = ( ($NouvelleLargeur * 100)/$TailleImageChoisie[0] ); ///ligne 50 ici
$NouvelleHauteur = ( ($TailleImageChoisie[1] * $Reduction)/100 );
$NouvelleImage = imagecreatetruecolor($NouvelleLargeur , $NouvelleHauteur) or die ("Erreur");
imagecopyresampled($NouvelleImage , $ImageChoisie , 0,0, 0,0, $NouvelleLargeur, $NouvelleHauteur, $TailleImageChoisie[0],$TailleImageChoisie[1]);
imagedestroy($ImageChoisie);
$NomImageExploitable = time();
imagejpeg($NouvelleImage , 'images/'.$NomImageExploitable.'.'.$ExtensionPresumee, 100);
$link_img = $NomImageExploitable.'.'.$ExtensionPresumee;}}
$prenom = addslashes ($_POST['prenom']); //recuperation du prenom
$titre = addslashes($_POST['titre']); // on récupère le titre dans une variable simple
$contenu = addslashes($_POST['contenu']); // On récupère le contenu dans une variable simple
// On vérifie si c'est une modification de news ou pas
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() . "', '". $link_img . "', '" . $prenom . "')");
}
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 . "', link_img='" . $link_img . "', prenom='" . $prenom ."' 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'] . '\'');
}
?>
<table cellpadding="5" border="3"><tr>
<th><font size="6">Modifier</font></th>
<th><font size="6">Supprimer</font></th>
<th><font size="6">Qui a posté?</font></th>
<th><font size="6">Titre</font></th>
<th><font size="6">Date</font></th>
<th><font size="6">Image</font></th>
</tr>
<?php
$retour = mysql_query('SELECT * FROM news ORDER BY id ASC');
while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les news
{
?>
<tr><font size="5"></font>
<td><?php echo '<a href="redigernews.php?modifier_news=' . $donnees['id'] . '">'; ?>Modifier</a></td>
<td><?php echo '<a href="listenews.php?supprimer_news=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
<td><b><?php echo stripslashes($donnees['prenom']); ?></b></td>
<td><?php echo stripslashes($donnees['titre']); ?></td>
<td><?php echo date('d/m/Y', $donnees['timestamp']); ?></td>
<td><?php if ($donnees['link_img'] == '') echo "Non";
else echo "Oui" ;?></td>
</font></tr>
<?php
} // Fin de la boucle qui liste les news
?>
</table>
</body>
En fait je pense que l'erreur se fait au moment de vérifier si on a insérer une image. Quoiqu'il arrive, il considère qu'il y a une image et comme elle n'existe pas, la variable $TailleImageChoisie n'existe pas et on aboutie à une erreur.
Ce que je voudrais c'est qu'il vérifie si une image a été insérer et si ce n'est pas le cas, passer la partie du code correspondant au redimensionnement de l'image pour n'insérer que le nom, le titre et la news dans la BDD.
J'espère avoir été clair.
Merci
Bonjour, tout marchais bien jusqu'à présent et d'un coup j'ai une erreur. Je m'explique, j'ai créé un genre de livre d'or pour la classe de neige d'une classe à l'aide de tuto du site.
Je l'ai modifié pour y insérer des images en les retaillant pour qu'elles soient insérer dans un dossier spécifique et que le chemin d'accés à cette image soit insérer dans la BDD. Tout tournait bien et ce soir en voulant tester avant le départ dans 2 jours, il me mets une erreur lorsque je veux insérer unenews sans mettre d'image.
Voilà l'erreur
<citation>Warning: Division by zero in /homez.109/tcsorgua/www/classedeneigequintine/admin/listenews.php on line 50
Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /homez.109/tcsorgua/www/classedeneigequintine/admin/listenews.php on line 53
Erreur</citation>
Je laisse mon code ici:
J'ai noté l'emplacement de la ligne 50.
[php]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Liste des news</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
h2, th, td
{
text-align:center;
}
table
{
border-collapse:collapse;
border:2px solid black;
margin:auto;
}
th, td
{
border:1px solid black;
}
.style1 {
font-size: 20pt;
}
</style>
</head>
<body background="http://www.alpha-sierra.org/aramis/images/stories/galeries_photos/stSorlin/chalets-arvan-i-01.jpg" background-attachment: "fixed" link="white" vlink="white" alink="white">
<div align="left"><a href="http://neigequintine2010.c.la" target="_blank">Retour à l'accueil</a></div>
<h2><a href="redigernews.php">Ajouter une news</a></h2>
<?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['prenom']))
{if (isset($_FILES['image']) AND $_FILES['image']['error'] == 0); //Vérification que l'image existe et a été upload
//S'il y a une image alors on vérifie la taille de l'image
{ if ($_FILES['image']['size'] <= 5000000)
{
$ImageNews = getimagesize($_FILES['image']['tmp_name']);
$ExtensionPresumee = strrchr('.', $ImageNews);
$ExtensionPresumee = 'jpg';
$ImageChoisie = imagecreatefromjpeg($_FILES['image']['tmp_name']);
$TailleImageChoisie = getimagesize($_FILES['image']['tmp_name']);
$NouvelleLargeur = 700; //Largeur choisie à 350px mais modifiable
$Reduction = ( ($NouvelleLargeur * 100)/$TailleImageChoisie[0] ); ///ligne 50 ici
$NouvelleHauteur = ( ($TailleImageChoisie[1] * $Reduction)/100 );
$NouvelleImage = imagecreatetruecolor($NouvelleLargeur , $NouvelleHauteur) or die ("Erreur");
imagecopyresampled($NouvelleImage , $ImageChoisie , 0,0, 0,0, $NouvelleLargeur, $NouvelleHauteur, $TailleImageChoisie[0],$TailleImageChoisie[1]);
imagedestroy($ImageChoisie);
$NomImageExploitable = time();
imagejpeg($NouvelleImage , 'images/'.$NomImageExploitable.'.'.$ExtensionPresumee, 100);
$link_img = $NomImageExploitable.'.'.$ExtensionPresumee;}}
$prenom = addslashes ($_POST['prenom']); //recuperation du prenom
$titre = addslashes($_POST['titre']); // on récupère le titre dans une variable simple
$contenu = addslashes($_POST['contenu']); // On récupère le contenu dans une variable simple
// On vérifie si c'est une modification de news ou pas
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() . "', '". $link_img . "', '" . $prenom . "')");
}
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 . "', link_img='" . $link_img . "', prenom='" . $prenom ."' 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'] . '\'');
}
?>
<table cellpadding="5" border="3"><tr>
<th><font size="6">Modifier</font></th>
<th><font size="6">Supprimer</font></th>
<th><font size="6">Qui a posté?</font></th>
<th><font size="6">Titre</font></th>
<th><font size="6">Date</font></th>
<th><font size="6">Image</font></th>
</tr>
<?php
$retour = mysql_query('SELECT * FROM news ORDER BY id ASC');
while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les news
{
?>
<tr><font size="5"></font>
<td><?php echo '<a href="redigernews.php?modifier_news=' . $donnees['id'] . '">'; ?>Modifier</a></td>
<td><?php echo '<a href="listenews.php?supprimer_news=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
<td><b><?php echo stripslashes($donnees['prenom']); ?></b></td>
<td><?php echo stripslashes($donnees['titre']); ?></td>
<td><?php echo date('d/m/Y', $donnees['timestamp']); ?></td>
<td><?php if ($donnees['link_img'] == '') echo "Non";
else echo "Oui" ;?></td>
</font></tr>
<?php
} // Fin de la boucle qui liste les news
?>
</table>
</body>[/php]
En fait je pense que l'erreur se fait au moment de vérifier si on a insérer une image. Quoiqu'il arrive, il considère qu'il y a une image et comme elle n'existe pas, la variable $TailleImageChoisie n'existe pas et on aboutie à une erreur.
Ce que je voudrais c'est qu'il vérifie si une image a été insérer et si ce n'est pas le cas, passer la partie du code correspondant au redimensionnement de l'image pour n'insérer que le nom, le titre et la news dans la BDD.
J'espère avoir été clair.
Merci