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

PHP & Base de données Discussion :

Aide galerie d'image php UPLOAD et Affichage


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Aide galerie d'image php UPLOAD et Affichage
    Bonjour à tous,

    Ceci est mon premier post sur le forum.
    Je rencontre un petit problème sur mon projet personnel et j'aurais besoin d'un coup de main si possible pour le régler.

    Je suis en train de réaliser une petite galerie d'image.

    Je vous explique, j'ai trois page php
    - index.php (un formulaire d'upload infos + photo)
    - upload.php (qui traite les infos du formulaire et qui insert les infos dans une bdd ainsi que la photo du formulaire dans un dossier)
    - galerie.php (qui affiche toutes les images du dossier avec le nom et un lien a href pour chaque image)

    Voila ce qui me pose problème :

    Je souhaite crée deux nouvelle pages qui serait capable de m'afficher les photos par 'date' et une autre page par 'user' en allant chercher l'image dans le dossier + les infos de l'image dans la bdd.

    Mais la je sèche, si quelqu'un pourrait m'éclairer je peux mettre a disposition le code si vous voulez.

    Et désolé si je n'ai pas posté le message au bonne endroit (mais je ne pense pas mettre trompé )


    BDD:famille - > table upload:

    TABLE upload:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    num
    nom
    description
    date
    heure
    user
    index.php :

    Code html : 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
    <!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" >
       <body>
     
    		<h1>Envoyer une image</h1>
    		<p>Nous sommes le : <?php echo date("d/m/Y") ?> il est <?php echo date("H:i"); ?></p> 
     
    		<form enctype="multipart/form-data" action="upload.php" method="post">
    			<table>
    				<tr>
    					<td><label for="nom">User : </label></td> 
    					<td><input type="text" name="user"  /><br /></td>
    				</tr>
     
    				<tr>
    					<td><label for="nom">Nom de la photo : </label></td> 
    					<td><input type="text" name="nom"  /><br /></td>
    				</tr>
     
    				<tr>
    					<td><label for="description">Description : </label></td> 
    					<td><textarea name="description" id="description" cols="40" rows="4"></textarea></td>
    				</tr>
     
    				<tr>
    					<input type="hidden" name="MAX_FILE_SIZE" value="10000000">
    					<td><label for="fichier">Fichier :</label></td> 
    					<td><input type="file" name="avatar"></td>
    				</tr>
     
    				<tr>
    					<td><label for="validation">Valider : </label></td> 
    					<td><input type="submit" name="envoyer"  value="Envoyer" /></td>
    					<td><input type="hidden" name="date" value="<?php echo date("Y/m/d");?>"></td>
    					<td><input type="hidden" name="heure" value="<?php echo date("H:i");?>"></td>
     
    				</tr>			
    			</table>
    		</form>
     
    <br/>
     
    <a href='galerie.php'> Vers la galerie </a>
     
    	</body>
    </html>

    upload.php:

    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
    		<h1> Résultat de l'insertion </h1>
     
    <?php 
    $nom= $_POST['nom'];
    $description= $_POST['description'];
    $date= $_POST['date'];
    $heure= $_POST['heure'];
    $user= $_POST['user'];
     
    echo "Le nom de la photo est [$nom]" ;
    echo "<br/>";
    echo "La description de la photo est [$description]" ;
    echo "<br/>";
    echo "Photo ajouté le [$date] à [$heure]" ;
    echo "Photo ajouté par  [$user]" ;
     
     
    $dossier = 'upload/';
    $fichier = basename($_FILES['avatar']['name']);
    $taille_maxi = 1000000000;
    $taille = filesize($_FILES['avatar']['tmp_name']);
    $extensions = array('.png', '.gif', '.jpg', '.jpeg', '.JPG');
    $extension = strrchr($_FILES['avatar']['name'], '.'); 
     
     
    //Début des vérifications de sécurité...
    if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
    {
         $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
    }
    if($taille>$taille_maxi)
    {
         $erreur = 'Le fichier est trop gros...';
    }
    if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
    {
         //On formate le nom du fichier ici...
         $fichier = strtr($fichier, 
              'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
              'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
         $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
         if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
         {
     
    		// on se connecte à notre base	
    		$base = mysql_connect ('localhost', 'root', '');  
    		mysql_select_db ('famille', $base) ;  
     
    		  // lancement de la requete
    		$sql = 'INSERT INTO upload VALUES ("", "'.$nom.'", "'.$fichier.'", "'.$description.'", "'.$date.'","'.$heure.'","'.$user.'")';  
     
    		// on insere le tuple (mysql_query) et au cas où, on écrira un petit message d'erreur si la requête ne se passe pas bien (or die)
    		mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());  
     
    		// on ferme la connexion à la base
    		mysql_close();  	 
     
    		echo "<br/><br/>";
     
            echo '<font color="red">Upload de la photo effectué avec succès !</font>';
     
         }
         else //Sinon (la fonction renvoie FALSE).
         {
              echo '<font color="red">Echec de l\'upload !</font>';
         }
     
    		}
    		else
    		{
    			 echo $erreur;
    		}
    ?>
     
    <br/><br/>
     
    <a href='galerie.php'> Vers la galerie </a>
    galerie.php:

    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
    	<h1> Galerie d'images </h1>
    	<h4> Toutes les photos du dossier upload: </h4>
     
     
    	<?php
     
    $adresse="./upload/";
    $dossier=Opendir($adresse);
     
     
    	while ($Fichier = readdir($dossier))
    	{
    		 if ($Fichier != "." && $Fichier != "..") // Filtre anti-point ! 
    		 {
    			  echo ''.$Fichier.'<br>';
    			  echo '<a href='.$adresse.$Fichier.' target="_self"><img src="'.$adresse.$Fichier.'"  WIDTH=100 HEIGHT=100 BORDER=1/></a>';
    			  echo '<br/>';
    			  echo '<br/>';
    		 }
    	}
    	closedir($dossier);
     
     
    ?>
     
    <a href='index.php'> Vers le formulaire </a>
    J'ai un peux avancé,
    Voila la nouvelle page qui me permet d'afficher les photos par USER

    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
    	<h1> Galerie d'images </h1>
    	<h4> Photos regroupé par famille: </h4>
     
     
    	<?php
    	 mysql_connect("localhost", "root", ""); // Connexion à la base de données
    	 mysql_select_db("famille"); // Sélection de la base de données 
    	 $reponse = mysql_query ("SELECT * FROM UPLOAD WHERE user = 'Jacques'"); // Requête SQL
     
    	$adresse="./upload/";
    	$dossier=Opendir($adresse);
     
    	 while ($donnees = mysql_fetch_array($reponse)) // On boucle pour afficher toutes les données et on met toutes données dans un tableau
    	 {
    	?>
    	<?php echo $donnees['nomfichier'];?>  
    	<?php echo '<br/>';?>
    	<?php
    	 }
    	 mysql_close(); // On oubli pas de déconnecter la base de données
    	?> 
     
    	<br/>
     
    	<a href='galerie.php'> Vers la galerie </a>
     
    	<br/>
    Elle m'affiche bien les infos de la table dans la bdd ou l'user est "jacques" par exemple.

    Donc je récupère bien les noms des photos.

    Mais quoi rajouter pour afficher les photos.

  2. #2
    Membre averti

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 205
    Points : 409
    Points
    409
    Billets dans le blog
    1
    Par défaut
    Je t'avoue que je ne vois pas trop où tu bloques...

    En HTML, pour afficher une photo on utilise la balise img.
    Pour afficher ta photo, il te faut donc indiquer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="./upload/<?php echo $donnees['nomfichier']; ?>" alt="<?php echo $donnees['nom']; ?>" title="<?php echo $donnees['description']; ?>" />
    En supposant que le répertoire où tu mets ces images est le dossier "upload".
    Il faut bien entendu que tu ai stocké le nom de l'image dans ta base (mais je suppose que tu l'as fais au vu de ton dernier edit).
    si ce post vous a été utile, si votre problème est résolu.
    Pensez-y !
    __________________________________
    Doc officielle PHP | FAQ PHP | Cours PHP

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 11
    Points : 8
    Points
    8
    Par défaut suite
    Bonsoir,

    Merci d'avoir répondu j'ai enfin trouver comment afficher les photos ajoutés par l'user "jacques"

    Mais j'ai un problème (enfin un vrai problème)
    Si j'upload une photo non retaillé (donc 4-5 mo) j'ai l'erreur "echec de l'upload"
    Et si je retaille la photo (elle fait 1-2 mo) l'image est upload.

    J'ai beau augmenter la taille autorisé (dans le formulaire ou upload.php), je ne comprend pas pourquoi elle ne passe pas avec une taille de 4-5 mo.

    Je joint ma page "categorie.php"

    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
    <h1> Galerie d'images </h1>
    <h4> Photos regroupé par famille: </h4>
     
    <?php
     mysql_connect("localhost", "root", ""); // Connexion à la base de données
     mysql_select_db("famille"); // Sélection de la base de données 
     $reponse = mysql_query ("SELECT * FROM UPLOAD WHERE user = 'Jacques'"); // Requête SQL
     
     echo '<table border="1">';
     while ($donnees = mysql_fetch_array($reponse)) // On boucle pour afficher toutes les données et on met toutes données dans un tableau
     {
    	$adresse="./upload/";
    	$dossier=Opendir($adresse);
     
    	echo '<td>';
    	echo "Nom photo : ".$donnees['nom']."" ;
    	echo '<br/>';
    	echo '<a href='.$adresse.$donnees['nomfichier'].' target="_self"><img src="'.$adresse.$donnees['nomfichier'].'"  WIDTH=250 HEIGHT=250 BORDER=1/></a>';
    	echo '<br/>';
    	echo "Ajouté le : ".$donnees['date']." à ".$donnees['heure']."" ;
    	echo '<br/>';
    	echo '</td>';
     
    	echo '<td>';
    	echo '';
    	echo '</td>';
     }
    echo '</table>';
    echo '<br/><br/>';
     
     mysql_close(); // On oubli pas de déconnecter la base de données
    ?> 
     
    <a href='galerie.php'> Vers la galerie </a>
    Si quelqu'un peux m'expliquer la cause de ce problème ça serait super je pourrais terminer mon projet

  4. #4
    Membre averti

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 205
    Points : 409
    Points
    409
    Billets dans le blog
    1
    Par défaut
    Il y a également une directive PHP qui limite la taille maximal des fichiers téléchargés sur un serveur. En fait même plusieurs :
    upload_max_filesize, post_max_size et memory_limit
    Tu trouveras plus d'infos sur ces directives ici : http://fr2.php.net/manual/fr/ini.core.php
    Cherches de ce côté peut être ?
    si ce post vous a été utile, si votre problème est résolu.
    Pensez-y !
    __________________________________
    Doc officielle PHP | FAQ PHP | Cours PHP

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    A voir aussi : les Erreurs classiques et les Explication sur les messages d'erreurs de chargement de fichiers.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

Discussions similaires

  1. [FTP] Galerie d'image PHP
    Par Invité(e) dans le forum Langage
    Réponses: 4
    Dernier message: 02/10/2007, 15h46
  2. [Upload] Upload images php
    Par lls dans le forum Langage
    Réponses: 15
    Dernier message: 19/07/2007, 18h23
  3. [PHP-JS] galerie d'images éxécutée à la volée
    Par Christophe93250 dans le forum Langage
    Réponses: 2
    Dernier message: 03/03/2007, 14h16
  4. [PHP-JS] Galerie d'images dynamique
    Par creatchy dans le forum Langage
    Réponses: 16
    Dernier message: 28/02/2007, 10h00
  5. [FTP] Galerie d'images en php/MySQL
    Par shikakus dans le forum Langage
    Réponses: 5
    Dernier message: 27/01/2007, 15h43

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