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 :

formulaire upload, les images ne sont pas sauvées


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 115
    Par défaut formulaire upload, les images ne sont pas sauvées
    Bonjour à tous,

    Ayant enfin réussi à créer un formulaire pour uploader des images, j'ai un souci (je suis débutant vraiment). J'ai donc créé 2 tables 'image' et 'rubrique' et j'ai un fichier de formulaire pour uploader des images avec une liste des rubriques où je veux que ça se retrouve.

    Mon but est d'uploader les images automatiquement dans le dossier photos/nom de la rubrique et enregistrer le chemin dans la table 'image'.
    Mais les images ne sont pas enregistrées et dans la table 'image' seul le champ 'chemin' est rempli mais pas avec le chemin mais juste le nom de l'image.

    Mais seul le nom de l'image s'enregistre (pas le chemin) et le champ ImageSize reste vide, pas de RubriqueID non plus et aucune image dans mon dossier respectif

    Merci à tous!

    Voici mon code:
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
    <title>Inscrivez-vous sur le site!</title>
    <link href="monsite.css" rel="stylesheet" type="text/css" />
     
    </head>
    <body>
     
    <?php
    mysql_connect("localhost", "root", "");
    mysql_select_db("monsite");
     
    echo "<form action='BDDPhotos_admin_add_img.php' 
    enctype='multipart/form-data'
    	    method='post'>
    		
         <input type='hidden' name='MAX_FILE_SIZE' value='100000'/>
    
    	Télécharger une image: <input type='file' name='addimage'/>
    	  <br/><br/> 
    	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 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>";
     
    $dossier = 'photos/';
    $fichier = basename($_FILES['addimage']['name']);
    $taille_maxi = 100000;
    $taille = filesize($_FILES['addimage']['tmp_name']);
    $extensions = array('.png', '.gif', '.jpg', '.jpeg');
    $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. 1Mo';
    }
    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
     
      $Date = date("Y-m-d");
      $Time = date("H:i:s");
      mysql_query ("INSERT INTO Image VALUES('', '".$RubriqueID."', '".$fichier."', '', '', '', '".$Date."', '".$Time."')");
     
    ?>
     
     
    </body>
    </html>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    C'est quoi ce $RubriqueID qui deboule de nul part dans l'INSERT ?
    Il faudrait peut etre lui donner une valeur.
    Je suppose que $RubriqueID = $_POST['rubrique']

    Les fichiers doivent actuellement arriver dans "photos", je ne vois aucune partie de ton code qui specifie de les envoyer dans d'autres dossiers.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 115
    Par défaut
    Merci sabotage pour ton aide

    J'ai modifié mon fichier et maintenant la photo est bien liée à une rubrique mais toujours aucune image ne se sauve dans un dossier, quelqu'un pourrait-il m'expliquer comment faire? (je suis un grand débutant)

    Merci à tous

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    mais ca te mets "Upload effectué avec succès !" ou pas ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 115
    Par défaut
    non ça ne met rien du tout, pas de message d'erreur non plus "échec upload" comme je l'ai demandé

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Pour patienter pendant que je m'y replonge :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     mysql_query ("INSERT INTO Image VALUES('', '".$RubriqueID."', '".$fichier."', '', '', '', curdate(), curtime())");
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 115
    Par défaut
    Merci Sabotage pour ton aide

    J'ai réussi à créer mon formulaire qui sauve les photos dans le dossier "photos/la rubrique sélectionnée dans la liste" et une miniature est automatiquement sauvegardée dans le dossier photos/la rubrique liée / mini

    J'ai modifié ma table 'Image' en ajoutant le chemin pour arriver à la miniature liée à la grande photo.

    J'ai encore une petite question, je voudrais en fait créer une page avec une liste déroulante où chacun peut choisir une rubrique et selon la rubrique choisie, d'afficher les photos qui y sont liées.

    J'ai bien réussi à afficher une liste déroulante avec les rubriques mais je n'arrive pas à afficher les photos,

    merci

    voici mon code:
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
    <title>Toutes les photos par catégorie !</title>
    <link href="site.css" rel="stylesheet" type="text/css" />
     
    </head>
    <body>
     
     
     
    <?php
    mysql_connect("localhost", "root", "");
    mysql_select_db("monsite");
     
    echo "<form action='BDDPhotos.php' 
    enctype='multipart/form-data'
    	    method='post'>
    		 
    	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 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='Voir les photos' id='submit'/> 
    	</form>";
     
     
    // Commence la table dans laquelle sont affichées les imagettes
    echo "<table border='0' width='100%'><tr>";
     
    // 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"); 
     
    // 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 = "../photos/".$RubriqueName."/mini/".$ImageName;
     
         // Récupère les dimensions de l'imagette
         $JPEGRes = ImageCreateFromJPEG($ImagetteAbsolutePath);
         $xsrc = imagesx($JPEGRes);
         $ysrc = imagesy($JPEGRes);
     
         // Affiche la miniature
         echo "<a href='$ImageAbsolutePath' target='blank'><img src='$ImagetteAbsolutePath' 
          width='500' height='375' border='0' alt=''></a>";
     
         // Termine la colonne de la grille pour cette image
         echo "</td>";
    } 
    // Termine la grille 
    echo  "</tr></table>";
     
    ?>
    </body>
    </html>

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Meme erreur que d'habitude

    tu utilises $RubriqueID dans ta requete alors qu'il n'est défini nul part.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 115
    Par défaut
    Mince je vais finir par ne plus oublier

    J'ai ajouté ceci donc: $RubriqueID = $_POST['rubrique'];

    mais ça ne change rien

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il faut afficher les erreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $result = mysql_query ("SELECT * FROM Image WHERE RubriqueID='$RubriqueID' ORDER BY MiniName") or die (mysql_error());
    et $RubriqueName et $ImageAbsolutePath ne sont pas définis non plus.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 115
    Par défaut
    J'ai rajouté l'affichage des erreurs mais quand je choisis la rubrique et que je fais submit, il ne se passe rien, pas de message d'erreur non plus

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 115
    Par défaut
    Citation Envoyé par sabotage Voir le message
    et $RubriqueName et $ImageAbsolutePath ne sont pas définis non plus.
    c'était une erreur, j'ai modifié $RubriqueName en $RubriqueID.

    Le chemin est défini ici non? $ImagetteAbsolutePath = "../photos/".$RubriqueID."/mini/".$ImageName;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/03/2009, 15h11
  2. les images ne sont pas affichées
    Par Qamalito dans le forum Outlook
    Réponses: 1
    Dernier message: 16/03/2008, 18h29
  3. Réponses: 2
    Dernier message: 04/10/2007, 13h42
  4. Réponses: 1
    Dernier message: 04/12/2005, 18h02

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