IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Affichage par défaut des photos de ma 1re rubrique sur la page d'intro de ma galerie


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 115
    Points : 50
    Points
    50
    Par défaut Affichage par défaut des photos de ma 1re rubrique sur la page d'intro de ma galerie
    Bonjour,

    J'ai créé une galerie photos avec un menu déroulant permettant de choisir une rubrique pour afficher les photos qui se retrouvent dans cette rubrique.
    Actuellement lorsque ma page s'affiche, je vois le menu déroulant avec en-dessous un message d'erreur:

    Warning: imagecreatefromjpeg(./photos//mini/) [function.imagecreatefromjpeg]: failed to open stream
    Warning: imagesx(): supplied argument is not a valid Image resource in ...
    Warning: imagesy(): supplied argument is not a valid Image resource in ...


    Ces avertissements correspondent à ces lignes de code:
    $JPEGRes = ImageCreateFromJPEG($ImagetteAbsolutePath);
    $xsrc = imagesx($JPEGRes);
    $ysrc = imagesy($JPEGRes);


    Quand je choisis une rubrique, les images s'affichent correctement sous forme de galerie photos sans aucun problème .

    En fait, je voudrais que lorsque la page générale s'ouvre, il y ait déjà les photos de la 1ere rubrique par défaut sous la liste déroulante reprenant les rubriques disponibles.
    S 'ils choisissent une autre rubrique, les images de cette rubrique sont alors visibles comme actuellement.

    Je suis un débutant php, si quelqu'un pouvait m'aider, ça me permettrait de résoudre mon souci,

    merci

    voici le code complet de la page:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    <?php
    mysql_connect("", "", "");
    mysql_select_db("");
     
    echo "<form action='BDDPhotos.php' 
    enctype='multipart/form-data'
    	    method='post'
    		class='formpetit'>
    		 
    	Rubrique: ";
     
    //pour afficher une liste déroulante reprenant les rubriques présentes dans ma table "rubrique"
    echo '<select name="rubrique">';
    $requete = mysql_query("SELECT * FROM Rubrique ORDER BY RubriqueID") or exit("erreur rubrique");
    while($reponse = mysql_fetch_array($requete))
    {
    echo '<option value="'.$reponse['RubriqueID'].'">'.$reponse['RubriqueName'].'</option>';
    }
    echo "</select><br/>
    	<input type='submit' value='Voir les photos' id='submit'/> 
    	</form>";
     
     
    // Commence la table dans laquelle sont affichées les imagettes
    echo "<table border='0' width='100%'><tr style='height:100%'>";
     
    $RubriqueID = $_POST['rubrique'];
    // Récupère la liste des images de la rubrique sélectionnée
    $result = mysql_query ("SELECT * FROM Image WHERE RubriqueID='$RubriqueID' ORDER BY MiniName") or die (mysql_error()); 
     
    // On veut afficher 4 images par ligne
    $NbrImgParLigne = 4;
    $NumImgLigne = 0;
     
    // Traite les images une après les autres
    while ($row = mysql_fetch_array($result))  
    {
         // Passe l'affichage des images à la ligne si 4 images affichées
         if ($NumImgLigne>=$NbrImgParLigne)
         {
             echo "</tr><tr>";
             $NumImgLigne = 0;
         } 
     
         $NumImgLigne++;
     
         // Commence une colonne de la grille pour y inclure l'image
         echo "<td align='center'>";
     
         // Récupère l'ID et le nom de l'image, en déduit le nom de la miniature
         $ImageID = $row['ImageID']; 
    	 $ImageName = $row['ImageName'];
         $MiniName = $row['MiniName']; 
     
         // Chemin absolu de l'imagette
         $ImagetteAbsolutePath = $MiniName;
    	 $ImageAbsolutePath = $ImageName;
         // Récupère les dimensions de l'imagette 
         $JPEGRes = ImageCreateFromJPEG($ImagetteAbsolutePath);
         $xsrc = imagesx($JPEGRes);
         $ysrc = imagesy($JPEGRes);
     
       //affichage de la photo en agrandissement
    	echo '<a href="bigphoto.php?img='.$ImageName.'&amp;title='.$ImageID.'" title="cliquez sur la photo pour laisser un commentaire!"><img src="'.$ImagetteAbsolutePath.'" border="0" alt="miniature"></a>';
         // Termine la colonne de la grille pour cette image
         echo "</td>";
    } 
    // Termine la grille 
    echo  "</tr></table>";
    ?>

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Points : 123
    Points
    123
    Par défaut
    Je ne pense pas que ton premier message d'erreur soit normal, pourquoi il a t'il deux "//" avant mini ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Warning: imagecreatefromjpeg(./photos//mini/) [function.imagecreatefromjpeg]: failed to open stream
    la valeur de ta variable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $ImagetteAbsolutePath
    doit avoir un problème quelque part
    MacBook Pro 15"
    "La pensée nous permet de rêver, le rêve de vivre".
    My WebSite

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 115
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par kanabzh29 Voir le message
    Je ne pense pas que ton premier message d'erreur soit normal, pourquoi il a t'il deux "//" avant mini ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Warning: imagecreatefromjpeg(./photos//mini/)
    la valeur de ta variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $ImagetteAbsolutePath
    doit avoir un problème quelque part
    Merci pour ton aide mais je ne vois pas d'erreur dans la définition du chemin absolu vers mes miniatures

    Je pense en fait que ce message d'erreur est "normal" vu que dans la page de base je n'ai pas choisi de rubrique par défaut, donc j'ai juste ma liste déroulante sans rubrique et mon système cherche surement des photos relatives à la rubrique "null" vu que je n'ai rien défini (=> le "photos//mini").

    C'est pour cela que je voudrais que lorsque ma page s'ouvre la première fois, les photos de ma rubrique 1 s'affichent automatiquement sans que l'utilisateur n'ait dû choisir de rubrique et après s'il le veut, il peut choisir une autre rubrique via la liste déroulante. Penses-tu que ce soit possible?

    Voici au cas où le code du formulaire que j'utilise pour enregistrer mes images dans un dossier "photos/nr id de la rubrique/" et "photos/id rubrique/mini/" pour les miniatures créées:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
     
    <?php
    mysql_connect("", "", "");
    mysql_select_db("");
     
    echo "<form action='BDDPhotos_admin_add_img.php' 
    enctype='multipart/form-data'
    	    method='post'>
    		
         <input type='hidden' name='MAX_FILE_SIZE' value='200000'/>
    
    	Télécharger une image: <input type='file' name='addimage'/>
    	  <br/><br/> 
    	Rubrique: ";
     
    //liste déroulante reprenant les rubriques
    echo '<select name="rubrique">';
    $requete = mysql_query("SELECT * FROM rubrique ORDER BY RubriqueName") or exit("erreur rubrique");
    while($reponse = mysql_fetch_array($requete))
    {
    echo '<option value="'.$reponse['RubriqueID'].'">'.$reponse['RubriqueName'].'</option>';
    }
    echo "</select>
    	<input type='submit' value='Ajouter images' id='submit'/> 
    	</form>";
     
    $RubriqueID = $_POST['rubrique'];
    $dossier = './photos/' . $RubriqueID . '/';
    $fichier = basename($_FILES['addimage']['name']);
    $taille_maxi = 200000;
    $taille = filesize($_FILES['addimage']['tmp_name']);
    $extensions = array('.png', '.gif', '.jpg', '.jpeg', '.JPEG', '.JPG');
    $extension = strrchr($_FILES['addimage']['name'], '.'); 
    //Début des vérifications de sécurité...
    if(!in_array($extension, $extensions)) //Si l'extension n'est pas correcte
    {
         $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
    }
    if($taille>$taille_maxi)
    {
         $erreur = 'Le fichier est trop lourd, max. 2Mo';
    }
    if(!isset($erreur)) //Upload du fichier
    {
         //Formatage du nom
         $fichier = strtr($fichier, 
              'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
              'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
         $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
         if(move_uploaded_file($_FILES['addimage']['tmp_name'], '..' . $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
         {
              echo 'Upload effectué avec succès !';
         }
         else //Sinon (la fonction renvoie FALSE).
         {
              echo 'Echec de l\'upload !';
         }
    }
    else
    {
         echo $erreur;
    }	
     
    // Récupération des données avec envoi dans la DB
      $filename = '.' . $dossier . $fichier;
     
    // Définition de la largeur et de la hauteur maximale
    $width = 200;
    $height = 200;
     
    // Cacul des nouvelles dimensions
    list($width_orig, $height_orig) = getimagesize($filename);
     
    $ratio_orig = $width_orig/$height_orig;
     
    if ($width/$height > $ratio_orig) {
       $width = $height*$ratio_orig;
    } else {
       $height = $width/$ratio_orig;
    }
     
    // Redimensionnement
    $image_p = imagecreatetruecolor($width, $height);
    $image = imagecreatefromjpeg($filename);
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
     
    // Affichage
    $minidossier = $dossier . 'mini/' . $fichier;
    imagejpeg($image_p, ".." . $dossier . 'mini/' . $fichier, 100);
     
     
      $Date = date("Y-m-d", time());
      $Time = date("H:i:s", time());
      mysql_query ("INSERT INTO image VALUES('', '".$RubriqueID."', '".$dossier.$fichier."','".$minidossier."', '', '', '', '".$Date."', '".$Time."')");
     
    ?>
    J'ai donc défini le nom du dossier "photos/id de la rubrique/" comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $dossier = './photos/' . $RubriqueID . '/';
    Le nom de mes fichiers:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $fichier = basename($_FILES['addimage']['name']);
    Et ensuite j'ai défini le chemin vers la miniature:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $minidossier = $dossier . 'mini/' . $fichier;

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Points : 123
    Points
    123
    Par défaut
    Bonjour,

    Si j'ai bien compris, tu veux qu'en dessous de ton menu déroulant soit affiché les images de la rubrique à la base dans le menu déroulant (sans qu'aucune action n'ait été fait).

    Vu que pour afficher la liste des rubrique dans ton menu déroulant tu fais un select dans une base, j'imagine que ces rubrique ont un ordre bien précis, pourquoi tu ne regarde pas simplement laquelle est en première dans la table, puis tu l'affiche en mettant le chemin en dur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // tu ouvre ton repertoire
    $dir = dir('.');
    while($nom = $dir->read()){
       echo $nom; // tu affiches les noms de fichier contenus dans ce répertoire
    }
    // tu ferme le dossier
    $dir->close();
    MacBook Pro 15"
    "La pensée nous permet de rêver, le rêve de vivre".
    My WebSite

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 115
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par kanabzh29 Voir le message
    Bonjour,

    Si j'ai bien compris, tu veux qu'en dessous de ton menu déroulant soit affiché les images de la rubrique à la base dans le menu déroulant (sans qu'aucune action n'ait été fait).

    Vu que pour afficher la liste des rubrique dans ton menu déroulant tu fais un select dans une base, j'imagine que ces rubrique ont un ordre bien précis, pourquoi tu ne regarde pas simplement laquelle est en première dans la table, puis tu l'affiche en mettant le chemin en dur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // tu ouvre ton repertoire
    $dir = dir('.');
    while($nom = $dir->read()){
       echo $nom; // tu affiches les noms de fichier contenus dans ce répertoire
    }
    // tu ferme le dossier
    $dir->close();
    Merci pour ton réponse, c'est effectivement ce que je voudrais faire, je veux en fait que lorsque la page s'ouvre sans qu'une rubrique ait été choisie, la rubrique avec ID "2" affiche déjà les photos par défaut. Mais j'ai du mal à comprendre ton explication. Peux-tu m'aider?

    Merci

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Points : 123
    Points
    123
    Par défaut
    Tu comprends mal le code ?
    MacBook Pro 15"
    "La pensée nous permet de rêver, le rêve de vivre".
    My WebSite

Discussions similaires

  1. Réponses: 0
    Dernier message: 28/10/2013, 17h44
  2. Réponses: 3
    Dernier message: 24/04/2008, 11h42
  3. Code par défaut des pages ASPX
    Par zooffy dans le forum Visual Studio
    Réponses: 9
    Dernier message: 13/05/2007, 14h40
  4. Réponses: 1
    Dernier message: 27/04/2007, 15h03
  5. Focus par défaut des alert() , confirm() et prompt()
    Par NoT dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 20/03/2006, 11h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo