Problème d'affichage PHP

LowLil -  
avion-f16 Messages postés 20367 Statut Contributeur -
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 20367 Statut Contributeur 4 509
 
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
LowLil
 
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 20367 Statut Contributeur 4 509
 
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
LowLil
 
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 20367 Statut Contributeur 4 509
 
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