Etant photographe, Je planche sur une interface de gestion en PHP des galeries photos de mon book.
En plusieurs temps, pour l'instant je me concentre sur une page de backup/suppression des photos.
La commande "rename" ne semble pas fonctionner correctement, alors j'ai décidé de mettre "unlink". Par contre, "copy" fonctionne nickel.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Administration PhotoMat - Liste des vignettes</title>
</head>
<body>
<table width="660" border="0" cellspacing="0" cellpadding="0">
<tr>
<th>
<?php
$rep = '../pict/photos/'; // Dossier des photos
$backuprep = '../admin/move/photos/'; // Dossier de destination des photos sauvegardées
//$rep1 = substr_replace($rep, 0, -1);
$vig = '../pict/photos/thumbs/'; // Dossier des vignettes
$backupvig = '../admin/move/thumbs/'; // Dossier de destination des vignettes sauvegardées
//$vig1 = substr_replace($vig, 0, -1);
$ext = 'jpg'; // Extension recherchée
$ipl = '8'; // Image Par Ligne(s)
$wid = '120'; // Largeur de la vignette
$widtab = '96%'; // Largeur du tableau
$bor = '0'; // Bordure du tableau
$cpd = '2'; // Bordures des cellules du tableau
$csc = '0'; // Esapcement des cellules du tableau
// $xplodevig = explode('.',$lstvig2);
// echo $backupvig;
// echo $backuprep;
$listerep = scanDir($rep);
$extensionrep = 0;
foreach ($listerep as &$fichrep) {
/* On ne retient que les fichiers && ceux dont l'extention est jpg ou JPG */
if (is_file($rep . $fichrep) && preg_match('#[^·]\.jpg$#i', $fichrep)) {
$extensionrep++;
}
}
$listevig = scanDir($vig);
$extensionvig = 0;
foreach ($listevig as &$fichvig) {
/* On ne retient que les fichiers && ceux dont l'extention est jpg ou JPG */
if (is_file($vig . $fichvig) && preg_match('#[^·]\.jpg$#i', $fichvig)) {
$extensionvig++;
}
}
$listerepbck = scanDir($backuprep);
$extensionrepbck = 0;
foreach ($listerepbck as &$fichrepbck) {
/* On ne retient que les fichiers && ceux dont l'extention est jpg ou JPG */
if (is_file($backuprep . $fichrepbck) && preg_match('#[^·]\.jpg$#i', $fichrepbck)) {
$extensionrepbck++;
}
}
$listevigbck = scanDir($backupvig);
$extensionvigbck = 0;
foreach ($listevigbck as &$fichvigbck) {
/* On ne retient que les fichiers && ceux dont l'extention est jpg ou JPG */
if (is_file($backupvig . $fichvigbck) && preg_match('#[^·]\.jpg$#i', $fichvigbck)) {
$extensionvigbck++;
}
}
echo '<div align="center">';
echo 'Gestionnaire de contenu photo. v.0.3.<br />Mathieu CHARREYRE (c) 2009.<br /><br />';
echo '<a href="index.php" target ="_parent">Menu principal</a><br /><br /><br />';
echo '<table width="'.$widtab.'" border="'.$bor.'" cellpadding="'.$cpd.'" cellspacing="'.$csc.'"><tr>';
echo '<td align="center">Nombre de photos ".jpg" : '.$extensionrep.'</td>';
echo '<td align="center">Nombre de miniatures ".jpg" : '.$extensionvig.'</td>';
echo '</tr><tr>';
echo '<td align="center">Nombre de photos ".jpg" backupées : '.$extensionrepbck.'</td>';
echo '<td align="center">Nombre de miniatures ".jpg" backupées : '.$extensionvigbck.'</td>';
echo '</tr></table><br />';
echo '<table width="'.$widtab.'" border="1" cellpadding="'.$cpd.'" cellspacing="'.$csc.'"><tr valign="bottom">';
$compt=0;
$dp = opendir($vig);
while($entree = readdir($dp)){
if ($entree != "." && $entree != ".." && preg_match('#[^·]\.jpg$#i', $entree)) {
$class = substr($entree, -7, -4); // Definition de la categorie de l'image
$rest = substr($entree, 0, -8); // Selection du reste du nom du fichier
// Definition de la version haute def. de l'image
$entree1 = substr_replace($entree, '', 0, 4);
// EXIF
ini_set('exif.encode_unicode', 'UTF-8');
$exif = @exif_read_data($rep.$entree1, 0, true); // Lecture des metadonnées EXIF, avec non affichage des erreurs
$date0 = $exif['EXIF']['DateTimeOriginal'];
$date1 = substr($date0, 0, 10);
//$date2 = str_replace(":", "/", $date1);
$date2 = explode(":", $date1);
if(is_file($vig.$entree) && preg_match('#[^·]\.jpg$#i', $fichvig)){
if($compt%$ipl == 0){ echo '</tr><tr valign="bottom">'; }
echo '<td align="center">';
echo "<a href=# onClick=\"window.open('".$rep.$entree1."','_blank','toolbar=0, location=0, directories=0, status=0, scrollbars=1, resizable=1, copyhistory=0, menuBar=0, width=800, height=600');return(false)\">";
echo '<img border=0 width='.$wid.' src="'.$vig.$entree.'"></a><br /><font size="1">';
if(!is_file($rep.$entree1) && !preg_match('#[^·]\.jpg$#i', $fichrep)){
echo '<font color="#990000"><br />La photo<br />'.$entree1.'<br />est introuvable...</font><br /><br />';
} // rep
else {
echo ' '.$exif['FILE']['FileName'].'<br />';
echo 'Catégorie : <font color="#009933">'.$class.'</font><br />';
echo '<br />';
// echo ' '.$exif['IFD0']['DateTime'].'<br />';
echo '- '.$date2[2].'/'.$date2[1].'/'.$date2[0].' -<br />';
// echo ''.$exif['EXIF']['DateTimeOriginal'].'<br />';
echo ''.$exif['IFD0']['Model'].'<br />';
echo 'Ouverture : '.$exif['COMPUTED']['ApertureFNumber'].'<br />';
echo 'Exposition : '.$exif['EXIF']['ExposureTime'].'<br />';
echo 'ISO : '.$exif['EXIF']['ISOSpeedRatings'].'<br />';
// echo ' '.$exif['EXIF']['Flash'].'<br />';
// echo ' '.$exif['COMPUTED']['Copyright.Photographer'].'<br />';
// echo ' '.$exif['COMPUTED']['Copyright.Editor'].'<br />';
// echo ' '.$exif['COMPUTED']['Copyright'].'<br />';
// echo ' '.$exif['IFD0']['Copyright'].'<br />';
echo '<br /><br />';
} // else rep
echo '<center><form name="form1" method="POST" action=""><input type="checkbox" name="photo" value="'.$rep.$entree1.'">Photo <input type="checkbox" name="thumb" value="'.$vig.$entree.'">Vign. <br /><input type="submit" name="copie" value="Copier"><input type="submit" name="suppr" value="Supprimer"></form></center>';
// if(isset($_POST['send'])){
// $post1 = (isset($_POST['photo'])) ? $_POST['photo']:null;
// $post2 = (isset($_POST['thumb'])) ? $_POST['thumb']:null;
// bouclons sur le tableau qui a été transmis et supprimons les valeurs sélectionnées
// if (!empty($post1)) {
// foreach($post1 as &$valeur1) {
// @rename($valeur1, $backuprep.$entree1);
// }
// }
// if (!empty($post2)) {
// foreach($post2 as &$valeur2) {
// @rename($valeur2, $backupvig.$entree);
// }
// }
// }
echo '</font></td>';
$compt++;
} // vig
else {
echo '<font color="#990000">Vign. '.$vig.$entree.' introuvable</font><br /><br />';
} // else vig
}
if(isset($_POST['copie'])){
// bouclons sur le tableau qui a été transmis et supprimons les valeurs sélectionnées
if (!empty($_POST['photo'])) {
$postophs = substr($_POST['photo'], 15, 16);
copy($_POST['photo'], $backuprep.$postophs); // Copie du dit fichier, avec non affichage des erreurs
}
if (!empty($_POST['thumb'])) {
$postvig = substr($_POST['thumb'], 22, 20);
copy($_POST['thumb'], $backupvig.$postvig); // Copie du dit fichier, avec non affichage des erreurs
}
echo "revenir à <a href='index.php' target ='_parent'>la page principale</a> ou sur <a href='listing.php5' target ='_parent'>la gestion des images en ligne</a> ?";
exit;
}
if(isset($_POST['suppr'])){
// bouclons sur le tableau qui a été transmis et supprimons les valeurs sélectionnées
if (!empty($_POST['photo'])) {
unlink($_POST['photo']); // Ceci supprimera le fichier
}
if (!empty($_POST['thumb'])) {
unlink($_POST['thumb']); // Ceci supprimera le fichier
}
echo "revenir à <a href='index.php' target ='_parent'>la page principale</a> ou sur <a href='listing.php5' target ='_parent'>la gestion des images en ligne</a> ?";
exit;
}
}
echo '</tr></table>';
echo '</div>';
?>
</th>
</tr>
</table>
</body>
</html>
Any idea ?