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
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
A voir également:
- Problème d'affichage PHP
- Easy php - Télécharger - Divers Web & Internet
- Affichage double ecran - Guide
- Problème affichage fenêtre windows 10 - Guide
- Windows 11 affichage classique - Guide
- Comment agrandir l'affichage de l'écran - Guide
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
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 :
Pour éviter les doublons, je te conseille de générer le nom de tes images lors de l'upload.
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;
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é ?
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
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".
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".
Voila le code d'affichage des mes images:
et le code d'upload:
Biensur je passe avant par un formulaire.
<?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.
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
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.
Après, il suffira d'inverser l'array avec array_reverse()
Pour terminer, il faudra utiliser la structure foreach() pour chaque élément.