Page 1 sur 1

diaporama

Posté : 11 nov. 2015, 17:29
par danval
bonjour,

Voilà je suis débutant en PHP et je suis en train de réaliser un site grâce à un template.

J’ai une page pour un diaporama photos qui fonctionne très bien, mais voilà je voudrais modifier certaine chose et la mes limites sont atteinte.

je vous explique:

1 - la personne pour qui le site est venu pouvoir grâce à une page cachée « admin.php » pouvoir déposer des photos dans le répertoire « images » et en supprimer (le fichier excite mais je n’arrive pas à l’adapter).

Ensuite les photos devront être mises au format 176x118 pixels environ pour servir de vignette en bas de page. Le nom de la photo doit être celui de la grande avec « -small » en plus.

La photo d’origine doit être ramenée au format 844x565 pixels environ pour servir à l’affichage et garder son nom.
Une chose les photos seront toutes nommées de 001 à ….

et les deux photos traitées devront se retrouver dans le répertoire « images »

pour la fonction supprimer il faut supprimer la vignette et la grande

Vous trouverez la structure dans le dossier « images ».

2 - la page « photos.html » fonctionne avec un fichier « gallery.xml ».
dedans on retrouve le chemin pour:
- la grande image
- la vignette
- et un texte qui apparait au passage de la souris
et ceci pour chaque photos

Le problème est que je suis obligé de rentrer tout à la main.

Il y aurait il moyen de faire que le fichier XML scan le dossier pour trouver les images (petite et grande) et un fichier texte nommé par exemple « text-001 » pour le texte de la photo 001.
Et qu’il procède au même type d’affichage.
Ceci pour que la personne n’ai qu’à s’occuper d’envoyer les photos.

À l’avance un grand merci.

Daniel

en pièce joint un zip avec la page complète


http://dl.free.fr/iaVM7F6LU

Re: diaporama

Posté : 11 nov. 2015, 17:47
par danval
une précision le fichier admin travail sur deux répertoires alors garder la même structure ou mettre tout dans un unique répertoire à voir.

merci

Re: diaporama

Posté : 12 nov. 2015, 11:09
par danval
bonjour,

j’ai avancé sur mon problème:

1 - pour le fichier XML j’utilise les dossiers pics et mini et cela fonctionne.
Reste à faire pour que la page recherche automatiquement les photos.
Et utilise un fichier TEXT exemple « text001.txt » pour remplir la zone texte qui apparait sur la photo.
Je mets les fichiers texte dans le répertoire « TEXT ».

2 - dans mon fichier admin, tout fonctionne sauf une chose:

Au lieu d’avoir un affichage des vignettes il met image, image, …..

Donc impossible de sélectionner une image à supprimer sans la voir.

fichier ADMIN

Code : Tout sélectionner

<?php // on défini le répertoire où sont stockées les images de grande taille $dir = 'pics'; // on défini le répertoire où seront stockées les miniatures $dir_mini = 'mini'; // on défini une variable $ratio qui vaudra 150 dans notre cas (150 pixels). En fait, pour nos miniatures, nous allons respecter le ratio de l'image originale, mais nous allons forcer sa taille à 150 pixels, soit en hauteur soit en largeur (tout dépend de l'orientation de notre image : paysage ou portrait). $ratio = 150; // on teste si le formulaire permettant d'uploader un fichier a été soumis if (isset($_POST['go'])) { // on teste si le champ permettant de soumettre un fichier est vide ou non if (empty($_FILES['mon_image']['tmp_name'])) { // si oui, on affiche un petit message d'erreur $erreur = 'Aucun fichier envoyé.'; } else { // on examine le fichier uploadé en récupérant de nombreuses informations sur ce fichier (je vous suggère de regarder la documentation de la fonction getimagesize pour de plus amples informations) $tableau = @getimagesize($_FILES['mon_image']['tmp_name']); if ($tableau == FALSE) { // si le fichier uploadé n'est pas une image, on efface le fichier uploadé et on affiche un petit message d'erreur unlink($_FILES['mon_image']['tmp_name']); $erreur = 'Votre fichier n\'est pas une image.'; } else { // on teste le type de notre image : jpeg ou png if ($tableau[2] == 2 || $tableau[2] == 3) { // si on a déjà un fichier qui porte le même nom que le fichier que l'on tente d'uploader, on modifie le nom du fichier que l'on upload if (is_file('../pics/'.$_FILES['mon_image']['name'])) $file_upload = '_'.$_FILES['mon_image']['name']; else $file_upload = $_FILES['mon_image']['name']; // on copie le fichier que l'on vient d'uploader dans le répertoire des images de grande taille copy ($_FILES['mon_image']['tmp_name'], $dir.'/'.$file_upload); // il nous reste maintenant à générer la miniature // si notre image est de type jpeg if ($tableau[2] == 2) { // on crée une image à partir de notre grande image à l'aide de la librairie GD $src = imagecreatefromjpeg($dir.'/'.$file_upload); // on teste si notre image est de type paysage ou portrait if ($tableau[0] > $tableau[1]) { $im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio); imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]); } else { $im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1])); imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]); } // on copie notre fichier généré dans le répertoire des miniatures imagejpeg ($im, $dir_mini.'/'.$file_upload); } elseif ($tableau[2] == 3) { $src = imagecreatefrompng($dir.'/'.$file_upload); if ($tableau[0] > $tableau[1]) { $im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio); imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]); } else { $im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1])); imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]); } imagepng ($im, $dir_mini.'/'.$file_upload); } // on redirige l'administrateur vers l'accueil de la partie admin header('location: admin.php'); exit(); } else { // si notre image n'est pas de type jpeg ou png, on supprime le fichier uploadé et on affiche un petit message d'erreur unlink($_FILES['mon_image']['tmp_name']); $erreur = 'Votre image est d\'un format non supporté.'; } } } } // on teste si le formulaire permettant de supprimer un fichier à été soumis if (isset($_GET['del'])) { if (empty($_GET['del'])) { // si le paramètre n'est pas renseignée, on affiche un petit message d'erreur $erreur = 'Aucune image à supprimer'; } else { $pic_a_zapper = $_GET['del']; // si l'image existe ainsi que sa miniature, on les supprime if (is_file('../mini/'.$pic_a_zapper) && is_file('../pics/'.$pic_a_zapper)) { unlink('../mini/'.$pic_a_zapper); unlink('../pics/'.$pic_a_zapper); } // si l'image ou la miniature n'existe pas, on affiche un message d'erreur else { $erreur = 'Image non reconnue'; } } } ?> <html> <head> <title>Ma galerie - Admin</title> </head> <body> <!-- on affiche un formulaire permettant d'uploader une image --> Ajouter une photo à la galerie :<br /><br /> <form action="admin.php" method="post" enctype="multipart/form-data"> <input type="file" name="mon_image" /> <input type="submit" name="go" value="Envoyer" /> </form> <hr /> <!-- on affiche toutes les miniatures munies d'un lien permettant de supprimer les images --> Supprimer une photo de la galerie (cliquer sur la miniature pour supprimer la photo) :<br /><br /> <?php // l'étude de cette portion de code a déjà été faite plus haut $tableau = array(); $dossier = opendir ('mini/'); while ($fichier = readdir ($dossier)) { if ($fichier != '.' && $fichier != '..' && $fichier != 'admin.php') { $tableau[] = $fichier; } } closedir ($dossier); $nbcol=2; $nbpics = count($tableau); if ($nbpics != 0) { echo '<table>'; for ($i=0; $i<$nbpics; $i++){ if($i%$nbcol==0) echo '<tr>'; // on affiche un lien sur la photo permettant de la supprimer echo '<td><a href="admin.php?del=' , $tableau[$i] , '"><img src="../mini/' , $tableau[$i] , '" alt="Image" /></a></td>'; if($i%$nbcol==($nbcol-1)) echo '</tr>'; } echo '</table>'; } else echo 'Aucune image à afficher'; // si un message d'erreur est défini, on l'affiche if (isset($erreur)) echo '<br />' , $erreur; ?> </body> </html>
fichier XML

Code : Tout sélectionner

<?xml version='1.0'?> <!-- XML Gallery by Niftygallery.net MAIN SETTINGS backgroundColor: Gallery background color resizable: true: will autoresize; false: will force fixed size oneCategory: false: will display multiple categories if available margin: gallery margin values IMAGES image > picture: gallery cover image PREV/NEXT BUTTONS buttons> placement: inside: will place prev/next buttons on images; outside: will place text buttons under images visual settings and image paths are self explaining... TEXT CONTAINER info > show: true: display text container; false: text container will be allways hidden background transparency and color are self explaining... CONTROLBAR/THUMBNAILS thumb > circle true: will scroll thumbnails in endless loop; false: will prevent thumbnail loop thumb > maxspeed speed setting for thumbnail scrolling thumb > fixedsize true: will force thumbnail fixed size; false: will use original size thumb > spacing space between thumbnails border and padding setting are self explaining... GALLERY ITEMS name: category label image > picture image path image > icon thumbnail path image > name image label image > description image description (HTML formated text) --> <gallary> <parameters> <main> <css>gallery.css</css> <backgroundColor>0x333333</backgroundColor> <resizable>true</resizable> <oneCategory>false</oneCategory> <margin> <left>20</left> <right>20</right> <top>20</top> <bottom>20</bottom> </margin> <image> <picture>images/cover.jpg</picture> <buttons> <placement>inside</placement> <outside> <bgColor>0x333333</bgColor> <width>60</width> <height>23</height> <previous><span class = "buttons">prev</span></previous> <next><span class = "buttons">next</span></next> </outside> <inside> <left>images/left.png</left> <right>images/right.png</right> <alpha>0.6</alpha> </inside> </buttons> <border> <width>3</width> <color>0x000000</color> </border> <info> <show>true</show> <alpha>0.8</alpha> <color>0x000000</color> </info> </image> </main> <controlBar> <height>118</height> <margin> <left>0</left> <right>0</right> </margin> <thumb> <circle>false</circle> <maxSpeed>4</maxSpeed> <fixedSize>false</fixedSize> <spacing>10</spacing> <border> <colorDefault>0x333333</colorDefault> <colorActive>0xffffff</colorActive> <colorOver>0xc0c0c0</colorOver> <width>2</width> </border> <padding> <left>0</left> <right>0</right> <top>15</top> <bottom>15</bottom> </padding> <mode>zoom</mode> </thumb> <background> <color>0x000000</color> <alpha>0</alpha> </background> </controlBar> </parameters> <category icon = 'images/cover.jpg'> <name><span class = "header">Concert</span></name> <image> <picture>pics/001.jpg</picture> <icon>mini/001-small.jpg</icon> <name><span class = "name">DISCO POWER 1</span></name> <description><span class = 'text'>DISCO POWER sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</span></description> </image> <image> <picture>pics/002.jpg</picture> <icon>mini/002-small.jpg</icon> <name><span class = "name">DISCO POWER 2</span></name> <description><span class = 'text'>DISCO POWER sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</span></description> </image> <image> <picture>pics/003.jpg</picture> <icon>mini/003-small.jpg</icon> <name><span class = "name">DISCO POWER 3</span></name> <description><span class = 'text'>DISCO POWER sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</span></description> </image> <image> <picture>pics/005.jpg</picture> <icon>mini/005-small.jpg</icon> <name><span class = "name">DISCO POWER 4</span></name> <description><span class = 'text'>DISCO POWER sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</span></description> </image> </category> </gallary>
voila je continue de chercher et par avance merci pour votre aide.

Daniel

Re: diaporama

Posté : 12 nov. 2015, 11:33
par @rthur
Bonjour,

C'est un peu contre-productif de poster tout ton code, il vaut mieux sélectionner uniquement la partie de code qui ne fonctionne pas afin que l'on puisse t'aider efficacement.
Au lieu d’avoir un affichage des vignettes il met image, image, …..
Vérifie le code HTML généré, à mon avis, tu dois avoir un problème de chemin vers tes images et ton navigateur ne peut pas les charger.

Re: diaporama

Posté : 12 nov. 2015, 13:02
par danval
bonjour,

voila le code généré par ADMIN

Code : Tout sélectionner

<html> <head> <title>Ma galerie - Admin</title> </head> <body> <!-- on affiche un formulaire permettant d'uploader une image --> Ajouter une photo à la galerie :<br /><br /> <form action="admin.php" method="post" enctype="multipart/form-data"> <input type="file" name="mon_image" /> <input type="submit" name="go" value="Envoyer" /> </form> Ajouter un texte à la galerie :<br /> <br /> <form action="admin.php" method="post" enctype="multipart/form-data"> <input type="file" name="mon_texte" /> <input type="submit" name="go2" value="Envoyer" /> </form> <!-- on affiche toutes les miniatures munies d'un lien permettant de supprimer les images --> Supprimer une photo de la galerie (cliquer sur la miniature pour supprimer la photo) :<br /><br /> <table><tr><td><a href="admin.php?del=.DS_Store"><img src="../mini/.DS_Store" alt="Image" /></a></td><td><a href="admin.php?del=001.jpg"><img src="../mini/001.jpg" alt="Image" /></a></td><td><a href="admin.php?del=002.jpg"><img src="../mini/002.jpg" alt="Image" /></a></td><td><a href="admin.php?del=003.jpg"><img src="../mini/003.jpg" alt="Image" /></a></td></tr><tr><td><a href="admin.php?del=004.jpg"><img src="../mini/004.jpg" alt="Image" /></a></td><td><a href="admin.php?del=005.jpg"><img src="../mini/005.jpg" alt="Image" /></a></td><td><a href="admin.php?del=cover.jpg"><img src="../mini/cover.jpg" alt="Image" /></a></td></table> </body> </html>

mais bon j'y comprend rien et en plus la suppression d'image ne fonctionne pas grrrrrrrrrrrrrrr
la j'ai rajouté la sélection d'un fichier texte mais je sais pas comment l'utiliser pour mettre le fichier dans le répertoire "textes".

bon enfin c'est la galére

Daniel

Re: diaporama

Posté : 12 nov. 2015, 13:28
par @rthur
<img src="../mini/001.jpg" alt="Image" />
Si l'image ne s'affiche pas et qu'il y a marqué "Image" à la place, c'est que le chemin vers ton image (../mini/001.jpg) n'est pas correct.
A toi de voir comment il doit être modifié pour pointer vers la bonne adresse de l'image.

Re: diaporama

Posté : 12 nov. 2015, 13:49
par danval
bon ok alors je vais voir mais bon cela fait deux jours que je suis la dessus et rien ne marche.
allé merci quand même pour cette piste je vais me débrouiller autrement voir même changer tout.

Re: diaporama

Posté : 12 nov. 2015, 14:16
par danval
re re bonjour,

bon cela avance:
- ajouter des photos c'est ok
- affichage des photos miniature c'est ok
- suppression des photos c'est ok

j'ai ajouter un "parcourir" et "envoyer" pour uploader mon fichier texte dans le répertoire "textes".

j'ai définis le répertoire "textes"

mais je n'arrive pas à me servir de cela (vérification si le fichier est bien du texte, si le fichier existe déja mettre un "_" devant le nom (comme pour les images) et envois dans le dossier "textes").
ajouter la suppression du fichier texte qui correspond à l'image.

je sais je suis une bite mais voila quand on sais pas on sais pas. de plus je cherche en même temps je ne me contente pas d'attendre.

alors merci pour votre aide.

Daniel

derniére version du fichier "admin"

Code : Tout sélectionner

<?php // on défini le répertoire où sont stockées les images de grande taille $dir = 'pics'; // on défini le répertoire où seront stockées les miniatures $dir_mini = 'mini'; // on défini le répertoire où seront stockées les textes $dir_txt = 'textes'; // on défini une variable $ratio qui vaudra 150 dans notre cas (150 pixels). En fait, pour nos miniatures, nous allons respecter le ratio de l'image originale, mais nous allons forcer sa taille à 150 pixels, soit en hauteur soit en largeur (tout dépend de l'orientation de notre image : paysage ou portrait). $ratio = 150; // on teste si le formulaire permettant d'uploader un fichier a été soumis if (isset($_POST['go'])) { // on teste si le champ permettant de soumettre un fichier est vide ou non if (empty($_FILES['mon_image']['tmp_name'])) { // si oui, on affiche un petit message d'erreur $erreur = 'Aucun fichier envoyé.'; } else { // on examine le fichier uploadé en récupérant de nombreuses informations sur ce fichier (je vous suggère de regarder la documentation de la fonction getimagesize pour de plus amples informations) $tableau = @getimagesize($_FILES['mon_image']['tmp_name']); if ($tableau == FALSE) { // si le fichier uploadé n'est pas une image, on efface le fichier uploadé et on affiche un petit message d'erreur unlink($_FILES['mon_image']['tmp_name']); $erreur = 'Votre fichier n\'est pas une image.'; } else { // on teste le type de notre image : jpeg ou png if ($tableau[2] == 2 || $tableau[2] == 3) { // si on a déjà un fichier qui porte le même nom que le fichier que l'on tente d'uploader, on modifie le nom du fichier que l'on upload if (is_file('../pics/'.$_FILES['mon_image']['name'])) $file_upload = '_'.$_FILES['mon_image']['name']; else $file_upload = $_FILES['mon_image']['name']; // on copie le fichier que l'on vient d'uploader dans le répertoire des images de grande taille copy ($_FILES['mon_image']['tmp_name'], $dir.'/'.$file_upload); // on copie le fichier que l'on vient d'uploader dans le répertoire des images de grande taille copy ($_FILES['mon_texte']['tmp_name'], $dir_txt.'/'.$file_upload); // il nous reste maintenant à générer la miniature // si notre image est de type jpeg if ($tableau[2] == 2) { // on crée une image à partir de notre grande image à l'aide de la librairie GD $src = imagecreatefromjpeg($dir.'/'.$file_upload); // on teste si notre image est de type paysage ou portrait if ($tableau[0] > $tableau[1]) { $im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio); imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]); } else { $im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1])); imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]); } // on copie notre fichier généré dans le répertoire des miniatures imagejpeg ($im, $dir_mini.'/'.$file_upload); } elseif ($tableau[2] == 3) { $src = imagecreatefrompng($dir.'/'.$file_upload); if ($tableau[0] > $tableau[1]) { $im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio); imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]); } else { $im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1])); imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]); } imagepng ($im, $dir_mini.'/'.$file_upload); } // on redirige l'administrateur vers l'accueil de la partie admin header('location: admin.php'); exit(); } else { // si notre image n'est pas de type jpeg ou png, on supprime le fichier uploadé et on affiche un petit message d'erreur unlink($_FILES['mon_image']['tmp_name']); $erreur = 'Votre image est d\'un format non supporté.'; } } } } // on teste si le formulaire permettant de supprimer un fichier à été soumis if (isset($_GET['del'])) { if (empty($_GET['del'])) { // si le paramètre n'est pas renseignée, on affiche un petit message d'erreur $erreur = 'Aucune image à supprimer'; } else { $pic_a_zapper = $_GET['del']; // si l'image existe ainsi que sa miniature, on les supprime if (is_file('./mini/'.$pic_a_zapper) && is_file('./pics/'.$pic_a_zapper)) { unlink('./mini/'.$pic_a_zapper); unlink('./pics/'.$pic_a_zapper); } // si l'image ou la miniature n'existe pas, on affiche un message d'erreur else { $erreur = 'Image non reconnue'; } } } ?> <html> <head> <title>Ma galerie - Admin</title> </head> <body> <!-- on affiche un formulaire permettant d'uploader une image --> Ajouter une photo à la galerie :<br /><br /> <form action="admin.php" method="post" enctype="multipart/form-data"> <input type="file" name="mon_image" /> <input type="submit" name="go" value="Envoyer" /> </form> Ajouter un texte à la galerie :<br /> <br /> <form action="admin.php" method="post" enctype="multipart/form-data"> <input type="file" name="mon_texte" /> <input type="submit" name="go" value="Envoyer" /> </form> <!-- on affiche toutes les miniatures munies d'un lien permettant de supprimer les images --> Supprimer une photo de la galerie (cliquer sur la miniature pour supprimer la photo) :<br /><br /> <?php // l'étude de cette portion de code a déjà été faite plus haut $tableau = array(); $dossier = opendir ('mini/'); while ($fichier = readdir ($dossier)) { if ($fichier != '.' && $fichier != '..' && $fichier != 'admin.php') { $tableau[] = $fichier; } } closedir ($dossier); $nbcol=4; $nbpics = count($tableau); if ($nbpics != 0) { echo '<table>'; for ($i=0; $i<$nbpics; $i++){ if($i%$nbcol==0) echo '<tr>'; // on affiche un lien sur la photo permettant de la supprimer echo '<td><a href="admin.php?del=' , $tableau[$i] , '"><img src="./mini/' , $tableau[$i] , '" alt="Image" /></a></td>'; if($i%$nbcol==($nbcol-1)) echo '</tr>'; } echo '</table>'; } else echo 'Aucune image à afficher'; // si un message d'erreur est défini, on l'affiche if (isset($erreur)) echo '<br />' , $erreur; ?> </body> </html>