par
danval » 12 nov. 2015, 11:09
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
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] <?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>[/code]
fichier XML
[code]<?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>[/code]
voila je continue de chercher et par avance merci pour votre aide.
Daniel