Problème d'affichage PHP

Fermé
LowLil - 16 août 2010 à 08:19
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 - 16 août 2010 à 13:05
Salut a tous,

J'ai un problème avec PHP, je fait un site web et j'ai un page d'administration ou j'ai un formulaire pour uploader des images, l'Upload se passe très bien, les images vont dans le répertoire image, mais ce que je voudrais c'est un script PHP, qui me permette d'afficher ces images sur une page, la plus récente en première.

Merci

A voir également:

5 réponses

avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
16 août 2010 à 09:57
Salut.

Je te propose de créer une table dans MySQL, nommée "images" et composée d'au minimum ces champs :

- id : TINYINT, INT, SMALLINT ou BITINT, selon les besoins, en unsigned, PRIMARY KEY et AUTO_INCREMENT ; Ce champ contiendra un ID unique à l'image
- fichier : TINYTEXT ou VARCHAR : contient le nom de l'image dans le dossier
- date : INT (si tu veux stocker un timestamp) ou DATE.

Tu peux ajouter d'autres champs comme :
- titre : TINYTEXT/VARCHAR
- description : TEXT

Pour afficher tes images par date, la plus récente en première :
<?php
define('IMAGES_PATH', 'images/');

$bdd = new PDO('mysql:host=localhost;dbname=la_base','user','password');

$sql = 'SELECT * FROM images ORDER BY date DESC';
$req = $bdd->query($sql);
$req->setFetchMode(PDO::FETCH_OBJ);

while($image = $req->fetch()) {
    echo '<div class="image">';
    echo '<img src="'.IMAGES_PATH.$image->fichier.'" alt="Image" />';
    echo '</div>';
}
$req->closeCursor();
?>


Pour éviter les doublons, je te conseille de générer le nom de tes images lors de l'upload.
$pathinfo = pathinfo($_FILES['image']['name']);
$extension = $pathinfo['extension'];
$nom = uniqid(md5($_SERVER['REQUEST_TIME'])).'.'.$extension;
0
Salut, merci de ta réponse, j'ai trouver le moyen de le faire sans MySQL, mais la les images s'affichent dans l'ordre d'ajout, comment y remédié ?
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
16 août 2010 à 11:07
Sans ton code, difficile de t'aider.
De plus, je ne vois pas comment tu fais sans base de données ou sans fichier texte/XML.
On peut récupérer la date de création d'un fichier, mais "date de création" != "date d'ajout".
0
Voila le code d'affichage des mes images:
<?php
$dir="image/";
$dossier=opendir($dir);



while($fichier=readdir($dossier)){
 

   $berk=array('.', '..');


    if(!in_array($fichier,$berk)){


	$lien=$dir.'/'.$fichier;


	


	if(file_exists($lien)){
	   
echo '<img src="'.$lien.'" alt=""  />
<br />';
  
          echo '<a href="'.$lien.'">'.substr($fichier,0,-4).'</a><br/>';
 
                             }
            

        }
  
  }

?>


et le code d'upload:
if( isset($_POST['upload']) ) // si formulaire soumis
{
    $content_dir = 'image/'; // dossier où sera déplacé le fichier

    $tmp_file = $_FILES['fichier']['tmp_name'];

    if( !is_uploaded_file($tmp_file) )
    {
        exit("Le fichier est introuvable");
    }

    // on vérifie maintenant l'extension
    $type_file = $_FILES['fichier']['type'];

    if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr

($type_file, 'gif') )
    {
        exit("Le fichier n'est pas une image");
    }

    // on copie le fichier dans le dossier de destination
    $name_file = $_FILES['fichier']['name'];
    if( preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $name_file) )
{
    exit("Nom de fichier non valide");
}    

    if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
    {
        exit("Impossible de copier le fichier dans $content_dir");
    }

    echo "Le fichier a bien été uploadé";
}


}

Biensur je passe avant par un formulaire.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
16 août 2010 à 13:05
Dans le bloc de la condition avec file_exists(), tu peux stocker le nom de l'image dans un array.

Après, il suffira d'inverser l'array avec array_reverse()

Pour terminer, il faudra utiliser la structure foreach() pour chaque élément.
0