photo.stereo.free.fr

Photo.Stereo - Photographie Stéréoscopie

  • Accueil
  • Livre d'or
  • Contact

Accueil

Bienvenue sur Photo Stéréo!

Photographie

  • Principe de fonctionnement
  • Vitesse et ouverture
  • Cadrage et composition
  • Vignetage et distorsion
  • Poses longues
  • Macrophotographie
  • Photographier le ciel de nuit
  • Photographier les orages
  • Galerie de photos

Stéréoscopie

  • Principe de fontionnement
  • Les différentes techniques
  • Pratique et réalisation
  • Galerie de photos
  • La 3D au cinéma
  • Autostéréogrammes

Tutoriel: album en PHP

  • Installation et configuration
  • Gestion de l'administration
  • Affichage des images

Tourisme photo: Montpellier

  • Activités en LR
  • Animaux
  • Monuments et édifices
  • Nature
  • Villes et villages
  • Visites

Album photos

  • Animaux
  • Ciels
  • Fleurs
  • Paysages
  • Les plus vus
  • Connexion (réservé)

Projets photos

  • Projet Fig'Art

Album photos en PHP - Administration

Photo Stéréo > Tuturiel: album photos en PHP - Administration

Connexion à la base de données

Maintenant que nous avons créé les tables de la base de données, nous allons réaliser les page d'administration qui vont nous permettre d'ajouter et de supprimer facilement des rubriques et des images.

Il faut tout d'abord se connecter à la base de données. Cette connexion s'établit à l'aide de la fonction "mysql_connect" et le choix de la base s'effectue à l'aide de la fonction "mysql_select_db". Ce qui nous donne en local:


	$connection = mysql_connect("localhost","root","");
	$database = mysql_select_db("BDDPhotos");
					

Avec MySQL, par défaut l'utilisateur est "root" et le mot de passe est "". Pour mettre votre site en ligne, n'oubliez pas de changer ces paramètres. Si vous êtes hébergés chez Free par exemple, vous devez indiquer comme nom de serveur de base de données "sql.free.fr" et comme nom d'utilisateur et mot de passe ceux que vous avez choisis lors de votre inscription.

Il ne faudra pas oublier de fermer la connexion:


	mysql_close();
					

Ajout d'une rubrique à la base de données

Nom de la page: BDDPhotos_admin_add_rub.php.

Nous allons à présent créer le formulaire qui nous permettra d'ajouter une entrée à la table Rubrique. Il nous faut donc un champ pour son nom, un autre pour sa description et un bouton pour la validation. PHP permet de récupérer les données issues d'un formulaire. Il suffit pour cela de spécifier la méthode (ici POST) et le nom du fichier PHP qui réceptionnera ces information (ici BDDPhotos_admin_add_rub.php).Ce qui nous donne:

Ajouter rubrique

Obtenu par le code suivant:


	<form action="BDDPhotos_admin_add_rub.php" enctype="multipart/form-data" 
	method="post"> 
	Nom:<br/> 
	<input type="text" name="frm_rub_name" size="50"/> 
	<br/><br/>
	Description:<br/> 
	<textarea name="frm_textarea_desc" rows="5" cols="40"></textarea>
	<br/><br/>
	<input type="submit" value="Ajouter rubrique"/> 
	</form>
					

Maintenant que nous avons le formulaire permettant de renseigner notre rubrique, nous pouvons envoyer les informations recueillies lors de l'appui sur le bouton Ajouter rubrique. Chaque nom spécifié précédemment dans le formulaire ("name='nom'") va produire une variable de la forme "$_POST['nom']". La fonction "isset" permet de déterminer si une variable est définie, et donc si le formulaire a été validé. Nous récupérons les variables de la manière suivante:


	if (isset($_POST['frm_rub_name']))
	{
		$RubriqueName = $_POST['frm_rub_name'];
		$RubriqueDesc = $_POST['frm_textarea_desc'];
	}
					

Il ne nous reste plus alors qu'à appeler la fonction qui nous permettra de rentrer ces informations dans la base de données à l'aide de la fonction "mysql_query" qui envoi une requête à un serveur MySQL.


	// Date et Heure d'ajout de la rubrique
	$Date = date("Y-m-d");
	$Time = date("H:i:s");
	// Ajout de la rubrique
	$query = "INSERT INTO Rubrique SET
		RubriqueID='NULL', 
		RubriqueName='$RubriqueName',
		RubriqueDesc='$RubriqueDesc',
		Date='$Date',
		Time='$Time'"; 
	$result = mysql_query($query); 
					

Afin de simplifier la gestion des fichiers images appartenant à des rubriques différentes, nous allons créer un répertoire pour chaque rubrique ajoutée. Nous placerons toutes les images correspondant à des fleurs dans le répertoire de la rubrique FLEURS par exemple. Créez le répertoire "photos" à la racine dans lequel seront ajoutés ceux des rubriques. La création d'un répertoire se fait simplement à l'aide de la fonction "mkdir". Soit dans notre cas:

					
	mkdir("../photos/".$RubriqueName);
					
					

Ajout d'une ou plusieurs images à la base de données

Nom de la page: BDDPhotos_admin_add_img.php.

Nous pouvons maintenant nous attaquer à la page d'administration permettant de remplir les rubriques avec nos images. Pour cela nous avons besoin du chemin des images et du nom de la rubrique dans laquelle les insérer, ce qui nous donne le formulaire suivant:

Ajouter images

Vous pouvez également rajouter un champ description comme nous l'avons fait précédemment pour les rubriques.

La liste déroulante contient toutes les rubriques que nous avons créées. Pour la remplir, il va nous falloir interroger la base de données et générer le fomulaire d'après les résultats obtenus. Nous allons donc utiliser la fonction "mysql_fetch_array" qui retourne un tableau contenant la ligne demandée dans le résultat de la requête $result et se place automatiquement à l'enregistrement suivant. Le formulaire contenant la liste déroulante est créé par le script suivant:

					
	echo "<form action='BDDPhotos_admin_add_img.php' 
	enctype='multipart/form-data'
			method='post'>
		Répertoire des images:<br/>
		  <input type='text' name='frm_files_folder' size='40' 
	value='../photos'/>
		  <br/><br/> 
		Rubrique: ";
	$query = "SELECT RubriqueID, RubriqueName FROM Rubrique 
		  ORDER BY RubriqueName DESC";
	$result = mysql_query($query) or die("ERROR");
	echo "<select name='frm_select_rubrique'>";
	$Selected = 0;
	while ($row = mysql_fetch_array($result))
	{
	  if($Selected == 0)
	  {
		echo '<option value="', $row[0], '" selected="selected">', $row[1], 
	'</option>';
		$Selected = 1;
	  }
	  else
	  {
		echo '<option value="', $row[0], '">', $row[1], '</option>';
	  }
	}
	echo "</select>
		<br/><br/>
		<input type='submit' value='Ajouter images'/> 
		</form>";
					
					

Créez un répertoire temporaire (temp dans photos par exemple) et placez y les images à ajouter à la rubrique. Saisissez ce chemin dans le champ répertoire (pour notre exemple ../photos/temp sur un serveur ou c:\photos\temp en local). Ce chemin est vérifié afin de s'assurer qu'il s'agit bien d'un répertoire. La fonction "is_dir" nous permet d'effectuer cette vérification:

					
	$FilesFolder = $_POST['frm_files_folder'];
	// Ajoute / à la fin du chemin du répertoire si manquant
	if (substr($FilesFolder, -1) != "/") 
	  $FilesFolder = $FilesFolder."/";
	// Vérifie que le chemin correspond bien à un répertoire
	if (!is_dir($FilesFolder)) 
	{
	  echo "ERROR";
	  return;
	}
					
					

Il nous suffit maintenant de lire le contenu du répertoire et d'en extraire les images. Pour cela, nous allons utiliser les fonctions "opendir" et "closedir" permettant d'obtenir un descripteur sur le répertoire et de le libérer, "readdir" permettant de lire le contenu d'un répertoire et "copy" permettant de copier un fichier.
Les images seront copiées dans le répertoire de la rubrique correspondante, obtenue depuis la liste déroulante. Nous auront également besoin de l'identifiant de la rubrique ($RubriqueID) facilement récupérable par une simple requête portant sur le nom de celle-ci ou par l'index de la liste déroulante ($RubriqueID = $_POST['frm_select_rubrique'];) et de son nom ($RubriqueName). La fonction de récupération et d'ajout des images se présente donc ainsi:

					
	$handle = opendir($FilesFolder);
	if ($handle == 0)
	{
	  echo "ERROR";
	  return;
	}
	// Saute le . et le ..
	readdir($handle);
	readdir($handle);
	// Parcours les images
	while (($fichier = readdir($handle)) !== false)
	{	    
	  // TODO: Vérifier ici que l'extension du fichier correspond à une image
	  
	  // Copie les images du repertoire temporaire vers le répertoire images 
	  if (!copy($FilesFolder.$fichier, "../photos/".$RubriqueName."/".$fichier))
	  {
		echo "ERROR";
	  }

	  // TODO: Récupérer les informations sur l'image (taille, dimensions, ...)

	  // Ajoute l'image à la base de données
	  $Date = date("Y-m-d");
	  $Time = date("H:i:s");
	  $query = "INSERT INTO Image SET 
			ImageID='NULL', 
			RubriqueID='$RubriqueID',
			ImageName='$fichier',
			ImageDesc='', 
					ImageRes='', 
					ImageSize='',
			Date='$Date',
			Time='$Time'"; 
	  $result = mysql_query($query); 
	}
	closedir($handle);
					
					

De nombreuses informations peuvent être obtenues depuis le fichier image: les fonctions "ImageCreateFromJPEG", "imagesx" et "imagesy" permettent de récupérer sa résolution par exemple, de même que la fonction "filesize" permet de récupérer sa taille.

Certains serveurs ne permettent pas de longs temps d'exécution pour les scripts. Pour un nombre d'image important, ce script d'ajout d'images sera donc refusé. Il ne vous restera plus alors qu'à exécuter la requête seule dans le script et à copier les images manuellement.

Pour permettre un affichage plus rapide de l'ensemble d'une rubrique de l'album photos, nous allons associer à chaque image une imagette, correspondant à l'image originale réduite. Par convention, nous nommerons ces imagettes min_nomdelimage.jpg. Vous pouvez redimentionner les images à l'aide d'un logiciel et copier les imagettes obtenues dans le répertoire de la rubrique ou modifier le code pour créer les imagettes automatiquement à l'ajout des images.

Suppression d'une rubrique de la base de données

Nom de la page: BDDPhotos_admin_del_rub.php.

Supprimer rubrique

Pour suprimer la rubrique sélectionnée dans la liste déroulante, il nous suffira donc d'effectuer la requête suivante sur notre base de données:


	$RubriqueID = $_POST['frm_select_rubrique'];
	$query = "DELETE FROM Rubrique WHERE RubriqueID='$RubriqueID'";
	$result = mysql_query($query); 
					

Et de ne pas oublier de supprimer également les images et les imagettes qu'elle contient. Pour cela nous utiliserons la fonction "unlink" qui permet de supprimer un fichier. Les répertoires peuvent être supprimés par la fonction "rmdir". La suppression des images doit être effectuée avant la suppression de la rubrique, sinon la première requête échouera.


	$RubriqueID = $_POST['frm_select_rubrique'];

	// Récupération du nom de la rubrique
	$query = "SELECT RubriqueName AS RubName
					FROM Rubrique
			WHERE RubriqueID=$RubriqueID";
	$result = mysql_query($query) or die("ERROR");
	$RubriqueName = mysql_result($result,0,"RubName"); 

	$query = "SELECT ImageName FROM Image WHERE RubriqueID='$RubriqueID'"; 
	$result = mysql_query($query); 
	while ($row = mysql_fetch_array($result))  
	{
	  $ImageName = "$row[0]";
	  if ( (!unlink("../photos/".$RubriqueName."/".$ImageName)) ||
		   (!unlink("../photos/".$RubriqueName."/min_".$ImageName)) )
	  {
		echo "ERROR";
	  }
	}
	// Suprime le répertoire de la rubrique
	$RubPath = "../photos/".$RubriqueName;
	if (!rmdir($RubPath))
	{	
	  echo "ERROR";
	}
	// Supprime les images de la rubrique de la base de données
	$query = "DELETE FROM Image WHERE RubriqueID='$RubriqueID'";
	$result = mysql_query($query);
					

De même que de longs scripts peuvent être refusés par les serveurs, la fonction rmdir peut être interdite. Il faudra alors supprimer le répertoire manuellement.

Suppression d'une image de la base de données

Nom de la page: BDDPhotos_admin_del_img.php.

Toutes les techniques pour supprimer les images ont été fournies dans les explications précédentes. Cependant des cases à cocher s'avèrent plus pratiques qu'une liste déroulante pour sélectionner les images à supprimer. On obtiendrait alors un formulaire comme celui-ci, où la liste déroulante permet de sélectionner la rubrique à traiter et les cases à cocher les images à supprimer:

Supprimer image

Les pages d'administration de l'album photos sont terminées, il nous faut maintenant passer à l'affichage des images. C'est que nous allons voir dans la partie suivante...

Haut de page Chapitre suivant: affichage

A propos...

Magalie DUCROS

Photographe amatrice, informaticienne de profession, j'aime partager sur ces pages mes découvertes photographiques.
En voir plus...

Copyright

Site déposé sur CopyrightFrance.com

Aucune copie, même partielle, sans autorisation de l'auteur.

Navigation

  • Liens
  • Journal de bord
  • Plan du site


HTML5 Valide ! CSS3 Valide !

© 2003-2024 Magalie DUCROS