Je fait une galerie d'image modifiable à partir de différent script existant que j'ai tenté d'améliorer.
Cette galerie propose à l'utilisateur d'ajouter lui même ses images et des commentaire mais c'est au niveau de l'affichage de ses commentaires qu'il y à un problème.
Pour ajouter des commentaires l'utilisateur à 2 formulaire un ou il indique le numero de l'image(qui correspond à un id dans la base) à modifié et un autre ou il indique le comentaire.
Pour le premier formulaire il refuse de s'afficher mais le code pour tout enregistré dans la base m'a l'air bon.
A par le formulaire ilo y à un autre probleme j'obtien l'erreur:
La ligne commence à partir de la boucle while:Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/a1943596/public_html/chaussureadministration.php on line 198
while($donnees = mysql_fetch_array($reponse))
{
$incrementation++;
$texte[$incrementation] = $donnees['commentaire'];
}
mysql_close();:
Voici le code complé de la page:
<!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>chaussure administration</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" media="screen" type="text/css" title="designe" href="aparance.css" />
</head>
<body>
<div id="haut">
<div id="bannier">
</div>
</div>
<div id="menu">
</div>
<div id="menu2">
<a href="sportswearadministration.php ">sportswear</a><br/><br/>
<a href="chaussureadministration.php ">chaussure</a><br/><br/>
<a href="costumeadministration.php ">costume</a><br/><br/>
<a href="accessoireadministration.php ">accessoire</a><br/><br/>
<a href="chemiseadministration.php ">chemise</a><br/><br/>
<a href="parkaadministration.php ">parka</a><br/><br/>
</div>
<div id="corps">
<?php
function get_extension($nom) {
$nom = explode(".", $nom);
$nb = count($nom);
return strtolower($nom[$nb-1]);
}
// --------------------- Options diverses //
// Extensions images autorisé (pour le moment, que du jpeg)
$extensions_ok = array('jpg', 'jpeg');
// MimeType autorisé
/* 1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP, 7 = TIFF (Ordre des octets Intel), 8 = TIFF (Ordre des octets Motorola), 9 = JPC, 10 = JP2, 11 = JPX, 12 = JB2, 13 = SWC, 14 = IFF */
$typeimages_ok = array(2);
$taille_ko = 10240000; // Taille en kilo octect (ko)
$taille_max = $taille_ko*10240000; // En octects
$dest_dossier = 'chaussure/'; // Creez ce dossier et chmoodez le !
print_r($_FILES['photo']);
if(isset($_FILES['photo'])) // Formulaire envoyé
{
// Les erreurs que PHP renvoi
if($_FILES['photo']['error'] !== "0") {
switch ($_FILES['photo']['error']) {
case 1:
$erreurs[] = "Votre image doit faire moins de $taille_ko Ko !";
break;
case 2:
$erreurs[] = "Votre image doit faire moins de $taille_ko Ko !";
break;
case 3:
$erreurs[] = "L'image n'a été que partiellement téléchargé.";
break;
case 4:
$erreurs[] = "Aucun fichier n'a été téléchargé.";
break; // Pas de 5, ne pas demander pourquoi ^^ (voir doc PHP)
case 6:
$erreur[] = "Un dossier temporaire est manquant.";
break;
case 7:
$erreurs[] = "Échec de l'écriture du fichier sur le disque.";
break;
}
}
// getimagesize arrive à traiter le fichier ?
if(!$getimagesize = getimagesize($_FILES['photo']['tmp_name'])) {
$erreurs[] = "Le fichier n'est pas une image valide.";
}
// on vérifie le type de l'image
if( (!in_array( get_extension($_FILES['photo']['name']), $extensions_ok ))
or (!in_array($getimagesize[2], $typeimages_ok )))
{
foreach($extensions_ok as $text) { $extensions_string .= $text.', '; }
$erreurs[] = 'Veuillez sélectionner un fichier de type '.substr($extensions_string, 0, -2).' !';
}
// on vérifie le poids de l'image
if( file_exists($_FILES['photo']['tmp_name'])
and filesize($_FILES['photo']['tmp_name']) > $taille_max)
{
$erreurs[] = "Votre fichier doit faire moins de $taille_ko Ko !";
}
// copie du fichier si aucune erreur !
if(!isset($erreurs) or empty($erreurs))
{
$dest_fichier = basename($_FILES['photo']['name']);
$dest_fichier = strtr($dest_fichier, 'ÀÃÂÃÄÅÇÈÉÊËÌÃÃŽÃÒÓÔÕÖÙÚÛÜÃà áâãäåçèéêëìÃ*îïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
// un chtit regex pour remplacer tous ce qui n'est ni chiffre ni lettre par "_"
$dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
// pour ne pas ecraser un fichier existant
while(file_exists($dest_dossier . $dest_fichier)) {
$dest_fichier = rand().$dest_fichier;
}
// copie du fichier
if(move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier)) {
$valid[] = "Image uploadé avec succés (<a href='".$dest_dossier . $dest_fichier."'>Voir</a>)";
} else {
$erreurs[] = "Impossible d'uploader le fichier.<br />Veuillez vérifier que le dossier ".$dest_dossier." existe avec un chmod 755 (ou 777).";
}
}
}
?>
<form method="POST" action="" enctype="multipart/form-data">
<?php
if(!empty($erreurs)) {
echo '<ul class="erreur">';
foreach($erreurs as $erreur) {
echo '<li>'.$erreur.'</li>';
}
echo '</ul>';
}
if(!empty($valid)) {
echo '<ul class="validation">';
foreach($valid as $text) {
echo '<li>'.$text.'</li>';
}
echo '</ul>';
}
?>
<fieldset>
<legend>Envoi d'image</legend>
<p>
<label for="photo">Image : </label>
<input type="file" name="photo" id="photo" />
</p>
<p>
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $taille_max; ?>" />
<input type="submit" name="envoi" value="Envoyer l'image" />
</p>
</fieldset>
</form>
<?php
// Visionneuse sur 2 colonnes, avec zoom et supression du fichier
/**************** A PARAMETRER ******************/
//nom du répertoire contenant les images à afficher
$incrementation = 0;
$nombreimage = 0;
$affichetexte = '';
$nom_repertoire = 'chaussure/';
$subfolders = 1; // 1 ou 0 : Liste les images des sous rep
$texte = array(); //on déclare le tableau de prénoms, remarquez que cela se fait avec la fonction array()
$nomfichier = array();
/*
On va initialiser les valeurs pour les indices 0, 1, 2 et 3
*/
// Maintenant on doit récupérer les 10 dernières entrées de la table
// On se connecte d'abord à MySQL :
mysql_connect("host", "********", "**********"); // Connexion à MySQL
mysql_select_db("a1943596_french"); // Sélection de la base coursphp
$reponse = mysql_query("SELECT * FROM table_commentaire ORDER BY ID DESC LIMIT 0,30");
while($donnees = mysql_fetch_array($reponse))
{
$incrementation++;
$texte[$incrementation] = $donnees['commentaire'];
}
mysql_close();
/*************************************************/
/*************************************************/
/* Fonction de listage des fichiers */
// $nom_repertoire: répertoire contenant les images
// $tab_images: tableau contenant les liens relatifs des images
// $i: indice de départ
// $sunfolders: Si 1, listage des sous-répertoires
function lister($nom_repertoire, &$tab_image, &$i, $subfolders)
{
// si $nom_repertoire ne se termine pas par /
if(substr($nom_repertoire, -1) != '/')
$nom_repertoire .= '';
// ouverture du dossier
$pointeur = @opendir($nom_repertoire);
if(!$pointeur)
return;
// parcourt les fichiers
while ($fichier = readdir($pointeur))
{
if($fichier == '.' || $fichier == '..')
continue;
// s'il s'agit d'un dossier
if(is_dir($nom_repertoire . $fichier))
{
// si on doit liste les sous-répertoires
if($subfolders)
// appel de la fonction (récursivité)
lister($nom_repertoire . $fichier . '/', $tab_image, $i, $subfolders);
}
else
{
// récupération de l'extension
$ext = strtolower(substr($fichier, -4));
if ($ext == '.gif' || $ext == '.jpg' || $ext == '.png' || $ext == 'jpeg')
// ajout du fichier dans le tableau
$tab_image[$i++] = $nom_repertoire . $fichier;
}
}
//on ferme le répertoire
@closedir($pointeur);
}
/* Récupération des variables */
$delete = isset($_GET['delete']) ? $_GET['delete'] : '';
$path = isset($_GET['path']) ? $_GET['path'] : '';
if(!is_dir($nom_repertoire))
{
echo 'Le répertoire n\'existe pas';
exit;
}
// Utilisation de font et non de style pour reperer
// trés facilement le texte dans ce source
$f = "<font face='verdana' size='2' color='red'>";
$ff = '</font>';
// suppression d'images
if (!empty($delete))
{
if (file_exists($path))
{
if(@unlink($path))
echo "Le fichier $path a été supprimé avec succès";
else
echo "Erreur lors de la suppression du fichier $path";
}
else
echo "Le fichier $path n'existe pas";
echo '<br><br>';
}
//affichage de l'entête du tableau
echo "
<table align='center' width='800'>
<tr align='center'>
<td align='center'>$f Image $ff</td>
<td align='center'>$f Supression $ff</td>
<td align='center'>$f Description $ff</td>
<td align='center'>$f Image $ff</td>
<td align='center'>$f Supression $ff</td>
<td align='center'>$f Description $ff</td>
</tr>";
//ouvre le repertoire
$pointeur = @opendir($nom_repertoire);
if(!$pointeur)
{
echo 'Erreur lors de l\'ouverture du répertoire';
exit;
}
$i = 0;
$tab_image = array();
lister($nom_repertoire, $tab_image, $i, $subfolders);
// on trie le tableau par ordre alphabétique
array_multisort($tab_image, SORT_ASC);
// affichage des images (en 60 * 60 ici)
// affichage des photos sur 2 colonnes
for ($j = 0; $j < $i; $j++)
{
if($j % 2 == 0)
echo '<tr align="center">';
// image1
$path = $tab_image[$j]; // chemin de l'image1
$image = '<img src="' . $path . '" width="110" height="110" border="0">';
$nom = $tab_image[$j]; // nom de l'image1
$infos_image = @getImageSize($path); // info sur ladimension de l'image1
//dimension fenetre zoom image1
$typ1 = $infos_image[0] + 40;
$typ2 = $infos_image[1] + 40;
$nombreimage++;
$affichetexte=$texte[$nombreimage];
// affichage de l'image
echo '<td bgcolor="#111111"><a href="#" onClick="window.open(\''.$path.'\', \'new\', \'width='.$typ1.', height='.$typ2.', toolbar=no, location=no,directories=no, status=no, menubar=no,scrollbars=yes, copyhistory=no, resizable=yes\')">'.$image.'</a></td>';
// affiche le lien supprimer
echo '<td><a href="'.$_SERVER['PHP_SELF'].'?delete=1&path='.$path.'&nom='.$nom.'"
onClick="if (confirm(\'Etes-vous sûr de vouloir supprimer cette image ?\') == true) return true; else return false; ">'.$f.' Supprimer '.$ff.'</a></td>';
echo "<td align='center' bgcolor='#580101' width='200'>
$nombreimage $affichetexte
</td>
";
if($j % 2 != 0)
echo "</tr>";
}
echo "</table>";
?>
<br />
<form action="chaussureadministration.php" method="post">
<p>
Numero image : <input type="hidden" name="image_id" /><br />
Commentaire : <input type="text" name="commentaire" /><br />
<input type="submit" value="Envoyer" />
</p>
</form>
<?php
if (isset($_POST['image_id']) && isset($_POST['commentaire'])) // Si les variables existent
{
if ($_POST['image_id'] != NULL && $_POST['commentaire'] != NULL) // Si on a quelque chose à enregistrer
{
$host="mysql8.000webhost.com";
$user="a1943596_g";
$password="okapi008";
$db="a1943596_french";
$link=mysql_connect($host,$user,$password);
$connection=mysql_select_db($db,$link);
// On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la sécurité
$image_id = mysql_real_escape_string(htmlspecialchars($_POST['image_id']));
$commentaire = mysql_real_escape_string(htmlspecialchars($_POST['commentaire']));
$sql="INSERT INTO table_commentaire (image_id, commentaire) VALUES ('".$image_id."', '".$commentaire."')";
mysql_query($sql) or die ("Erreur SQL : " . mysql_error());
//Fermeture de la connexion
mysql_close();
}
}
?>
</div>
</body>
</html>