Probleme affichage commentaire galerie d'image

Petit nouveau ! | 1 Messages

10 août 2009, 18:44

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>	  

Administrateur PHPfrance
Administrateur PHPfrance | 977 Messages

11 août 2009, 10:18

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
pro : http://www.ohweb.fr -> studio de développement en PHP, expertise en e-commerce, certifié PrestaShop
perso : http://www.olecorre.com -> un dico de termes informatiques

J'ai toujours rêvé d'un ordinateur qui soit aussi facile à utiliser qu'un téléphone. Mon rêve s'est réalisé : je ne sais plus comment utiliser mon téléphone. [Bjarne Stroustrup]

Avatar du membre
ViPHP
ViPHP | 3008 Messages

17 août 2009, 15:24

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 ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 août 2009, 21:48

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 :)