Page 1 sur 1

Probleme affichage commentaire galerie d'image

Posté : 10 août 2009, 18:44
par grex
Bonjour,
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:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/a1943596/public_html/chaussureadministration.php on line 198
La ligne commence à partir de la boucle while:
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>	  

Re: Probleme affichage commentaire galerie d'image

Posté : 11 août 2009, 10:18
par Cobaye
mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/a1943596/public_html/chaussureadministration.php on line 198
ton message est assez explicite, ton problème vient de ton mysql_fetch_array dans lequel tu envoie pas la bonne info ! montre le code avant ton mysql_fetch_array

Re: Probleme affichage commentaire galerie d'image

Posté : 17 août 2009, 15:24
par charabia
Cette requête m'a l'air bonne : SELECT * FROM table_commentaire ORDER BY ID DESC LIMIT 0,30

Mais est-ce bien ID qui est utilisé ? A quoi ressemble ta table table_commentaire ?

Re: Probleme affichage commentaire galerie d'image

Posté : 17 août 2009, 21:48
par ouckileou
Pas top le host de ta base de données avec le compte utilisateur et le mot de passe dans ton post.... j'ai tout viré, fais gaffe la prochaine fois :)