Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

GALLERIE D'IMAGE CONSTRUITE PAR APPELS RÉCURSIFS DANS UN RÉPERTOIRE


Information sur la source

Catégorie :Fichier / Disque Classé sous : galerie, récursivité, parcours, répertoire Niveau : Débutant Date de création : 31/03/2006 Date de mise à jour : 01/04/2006 11:47:34 Vu / téléchargé: 5 769 / 823

Note :
Aucune note

Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

Description

Mise en place d'une méthode de parcours de répertoire par appels récursif permettant la mise en ligne d'une gallerie d'images situées dans un répertoire et ses sous-répertoires. Pour le moment, il n'est implémenté que pour les photos et images. Il est destiné à s'enrichir avec la gestion de différents types de fichiers.

La seule chose à faire est la définition de la constante ROOT en début de code pour donner le répertoire de base de parcours et la limite au dessus de laquelle les visiteurs ne pourront pas aller.

Update du 01/04/2006 :
    - Ajout d'une méthode de tri simple sur les sous-répertoires et les fichiers
    - Ajout d'un méthode de définition de la constante ROOT en fonction de l'utilisateur connecté (id : Apache / Mandriva par htaccess)
    - Intégration dans une archive ZIP contenant les 2 fichiers PHP et le fichier CSS
    - Ajout d'un test pour eviter le cross scripting sur le nom du fichier
 

Source

  • //////////////////////////////////////////
  • // DEFINITION DU FICHIER PRINCIPAL DEFINEROOTS.INC.PHP
  • //////////////////////////////////////////
  • <?PHP
  • //Définition des ROOT par usr
  • $tbRoots = array('MICHEL' => 'Photos',
  • 'VISITEUR' => 'Photos/Divers',
  • '' => '');
  • ?>
  • //////////////////////////////////////////
  • // DEFINITION DU FICHIER PRINCIPAL INDEX.PHP
  • //////////////////////////////////////////
  • <?PHP
  • /*
  • Date : 30/03/2006
  • Auteur : The_Legacy
  • Description :
  • Mise en place d'une méthode de parcours de répertoire par appels récursif
  • permettant la mise en ligne d'une gallerie d'images situées dans un répertoire et ses sous-répertoires.
  • Pour le moment, il n'est implémenté que pour les photos et images. Il est destiné à s'enrichir
  • avec la gestion de différents types de fichiers.
  • */
  • include_once "defineRoots.inc.php";
  • define('ROOT', $tbRoots[strtoupper($_SERVER['PHP_AUTH_USER'])]); //Définition du répertoire à partir duquel on désire travail et corrspond également à la limite haute de l'arborescence
  • function TableauTrie($tab)
  • {
  • //Méthode simple du tri par permutation
  • $nbElements = count($tab);
  • do
  • {
  • $objTemp = null;
  • $idx = 0;
  • $permutation = false;
  • while ($idx < $nbElements - 1)
  • {
  • if (strtoupper($tab[$idx]->nom) > strtoupper($tab[$idx + 1]->nom))
  • {
  • if (!$permutation)
  • {
  • $permutation = true;
  • }
  • $objTemp = $tab[$idx];
  • $tab[$idx] = $tab[$idx + 1];
  • $tab[$idx + 1] = $objTemp;
  • }
  • $idx++;
  • }
  • }while ($permutation);
  • return $tab;
  • }
  • class Fichier
  • {
  • //Définition d'un objet fichier contenant simplement son nom et son chemin
  • public $nom = '';
  • public $chemin = '';
  • function Fichier($chemin)
  • {
  • $this->chemin = $chemin;
  • $tbChemin = explode("/", $chemin);
  • $this->nom = $tbChemin[count($tbChemin) - 1];
  • }
  • }
  • class repertoire
  • {
  • /*
  • L'objet réperoire contient un tableau d'objets REPERTOIRE correspondants aux sous-répertoire de celui désiré
  • et un autre tableau d'objets FICHIER correspondants aux fichiers contenus dans le répertoire désiré
  • */
  • public $nom = '';
  • public $chemin = '';
  • public $tbSRep = array();
  • public $tbFiles = array();
  • function repertoire($chemin, $descendre = true)
  • {
  • /*
  • Le deuxième paramètre du constructeur donne la limite de l'appel récursif
  • s'il est mis à true, cela signifie que l'appel récursif déscendra d'un niveau dans l'arborescence et listera
  • les sous-répertoires de l'élément analysé
  • */
  • if (is_dir($chemin)) //Vérifier si le chemin existe et est bien un répertoire
  • {
  • //Remplissage des propriétés de l'objet
  • $this->chemin = $chemin;
  • $tbChemin = explode("/", $chemin);
  • $this->nom = $tbChemin[count($tbChemin) - 1];
  • //Récupération des sous-répertoires
  • $lptRep = opendir($this->chemin); //Ouverture du répertoire désiré
  • $tbRepANePasLister = array('.', '..'); //Liste des sous-répertoires à ne pas lister
  • $tbExtANePasLister = array('db'); //Liste des extensions de fichiers à ne pas lister
  • while (false !== ($obj = readdir($lptRep))) //Parcours des objets contenus dans le répertoire désiré
  • {
  • if (!in_array($obj, $tbRepANePasLister)) //Vérification de la non présence de l'élément dans les éléments à ne pas lister
  • {
  • $cheminObj = $this->chemin.'/'.$obj;
  • if (is_dir($cheminObj)) //Si l'élément est un répertoire, le mettre dans le tableau des sous répertoires
  • {
  • if ($descendre)
  • {
  • //Appel récursif sur le sous-répertoire en cours
  • //Ici, je ne désire pas rentrer dans les sous-répertoires
  • $this->tbSRep[] = new repertoire($cheminObj, false);
  • }
  • }
  • if (is_file($cheminObj)) //Si l'élément est un fichier, je le mets dans le tableau des fichiers
  • {
  • /*
  • Je construit un tableau contenant les éléments consituant le nom de l'objet en cours
  • en général, 2 case : le nom sans l'extension puis l'extension.
  • */
  • $tbInfosFichiers = explode('.', $obj);
  • if (!in_array($tbInfosFichiers[count($tbInfosFichiers) - 1], $tbExtANePasLister))
  • {
  • //Ajout de l'objet fichier correspondant
  • $this->tbFiles[] = new Fichier($cheminObj);
  • }
  • }
  • }
  • }
  • closedir($lptRep); //Fermeture du répertoire désiré
  • }
  • else
  • {
  • die("Le chemin spécifié n'est pas un répertoire !");
  • }
  • }
  • function AfficheArborescence($niveau = 1)
  • {
  • //Parcours tous les sous-répertoires du répertoire en cours
  • //Le paramètre donné peut permettre d'effectuer un affichage décalé des sous-répertoire en fonction du niveau
  • //Par exemple en ajoutant (niveau) fois un espace devant le lien
  • //Le premier test permet de ne pas afficher le nom du répertoire en cours
  • if ($niveau > 1)
  • {
  • //Construction du lien pour le répertoire concerné par l'appel récursif
  • print '<A href="?REP='.$this->chemin.'">'.$this->nom.'</A><BR>';
  • }
  • //Affichage des sous-répertoires
  • for ($i = 0; $i < count($this->tbSRep); $i++)
  • {
  • //Appel récursif pour l'affichage
  • $srep = $this->tbSRep[$i];
  • $srep->AfficheArborescence($niveau + 1);
  • }
  • }
  • function ListeFichiers()
  • {
  • //Construction du lien pour les fichiers
  • if (count($this->tbFiles) > 0)
  • {
  • foreach ($this->tbFiles as $fichier)
  • {
  • print '<A href="?'.$_SERVER['QUERY_STRING'].'&file='.$fichier->chemin.'">'.$fichier->nom.'</A><BR>';
  • }
  • }
  • }
  • function LienParent()
  • {
  • //permet d'afficher le lien pour remonter au répertoire parent de celui consulté
  • //Le premier test permet de ne pas donner la possibilité de remonter au dessus d'un certain répertoire
  • //Dans mon cas le répertoire parent de ROOT est ma racine du serveur Web, je ne désire pas que mes
  • //visiteurs puissent y accéder
  • //Je suis en train de travailler sur la création dynamique du ROOT en fonction du visiteur
  • //Pour éviter par exemple que mes amis n'accèdent à mes photos de famille et inversement
  • if ($this->chemin != ROOT)
  • {
  • //Les 3 lignes qui suivent enlèvent le répertoire en cours du chemin de retour, pour remonter d'un seul niveau
  • $tbPath = explode('/', $this->chemin);
  • array_splice($tbPath, count($tbPath) - 1);
  • $pathOrigine = implode('/', $tbPath);
  • print '<A href="?REP='.$pathOrigine.'">Retour</A><BR>';
  • }
  • else
  • {
  • //Blanc pour remplir la case du tableau affiché en cas d'inexistence (ou d'inaccessibilité) du répertoire parent
  • print " ";
  • }
  • }
  • }
  • //Récupération des paramètres
  • if (isset($_GET['REP']))
  • {
  • $path = $_GET['REP'];
  • }
  • else
  • {
  • $path = ROOT;
  • }
  • $rep = new repertoire($path);
  • //Tri des tableaux
  • $rep->tbSRep = TableauTrie($rep->tbSRep);
  • $rep->tbFiles = TableauTrie($rep->tbFiles);
  • $dimensionOrigine = '';
  • if (isset($_GET['file']) AND is_file($_GET['file']))
  • {
  • //Pour redimensionner l'image pour un affichage plus "visible"
  • //De manière à en garder le rapport hauteur * largeur
  • //J'utilise cette méthode pour ne pas déformer les photos prises en hauteur en attendant de savoir retourner dynamiquement une photo
  • $image = $_GET['file'];
  • $tbInfos = getimagesize($image);
  • $largeurDesiree = 640;
  • $hauteurDesiree = ($largeurDesiree * $tbInfos[1]) / $tbInfos[0];
  • $hauteur = $tbInfos[1] * ((($hauteurDesiree * 100) / $tbInfos[1]) / 100);
  • $largeur = $tbInfos[0] * ((($largeurDesiree * 100) / $tbInfos[0]) / 100);
  • //Pour afficher les dimensions originales de l'image
  • $dimensionOrigine = 'Hauteur réelle : '.$tbInfos[1].' pixels    Largeur réelle : '.$tbInfos[0].' pixels';
  • }
  • ?>
  • <HTML>
  • <HEAD>
  • <TITLE>Les photos</TITLE>
  • <LINK href="styles.css" type="text/css" rel="stylesheet">
  • </HEAD>
  • <BODY style="text-align:center">
  • <TABLE width="100%">
  • <TR valign="top">
  • <TD colspan="2" align="left">
  • <SPAN class="tabmenus"><?=$path;?></SPAN>
  • </TD>
  • </TR>
  • <TR>
  • <TD width="200px" nowrap>
  • <TABLE height="100%" width="100%" border="1">
  • <TR>
  • <TD height="20"><?=$rep->LienParent();?></TD>
  • </TR>
  • <TR>
  • <TD><I>Répertoires :</I><BR><BR><?=$rep->AfficheArborescence();?></TD>
  • </TR>
  • <TR>
  • <TD><I>Images : </I><BR><BR><?=$rep->ListeFichiers();?></TD>
  • </TR>
  • </TABLE>
  • </TD>
  • <TD valign="top">
  • <?PHP
  • if (isset($_GET['file']) AND is_file($_GET['file']))
  • {
  • print $dimensionOrigine.'<BR>';
  • ?>
  • <IMG id="img" src="<?=$image?>" border="0" width="<?=$largeur?>" height="<?=$hauteur?>">
  • <?PHP
  • }
  • ?>
  • </TD>
  • </TR>
  • </TABLE>
  • </BODY>
  • </HTML>
//////////////////////////////////////////
// DEFINITION DU FICHIER PRINCIPAL DEFINEROOTS.INC.PHP
//////////////////////////////////////////
<?PHP

//Définition des ROOT par usr

$tbRoots = array('MICHEL' => 'Photos',
					'VISITEUR' => 'Photos/Divers',
					'' => '');
?>

//////////////////////////////////////////
// DEFINITION DU FICHIER PRINCIPAL INDEX.PHP
//////////////////////////////////////////
<?PHP
/*
	Date : 30/03/2006
	Auteur : The_Legacy
	Description : 
		Mise en place d'une méthode de parcours de répertoire par appels récursif
		permettant la mise en ligne d'une gallerie d'images situées dans un répertoire et ses sous-répertoires.
		Pour le moment, il n'est implémenté que pour les photos et images. Il est destiné à s'enrichir
		avec la gestion de différents types de fichiers.
*/
include_once "defineRoots.inc.php";
define('ROOT', $tbRoots[strtoupper($_SERVER['PHP_AUTH_USER'])]); //Définition du répertoire à partir duquel on désire travail et corrspond également à la limite haute de l'arborescence

function TableauTrie($tab)
{
	//Méthode simple du tri par permutation
	$nbElements = count($tab);
	do 
	{
		$objTemp = null;
		$idx = 0;
		$permutation = false;
		while ($idx < $nbElements - 1)
		{
			if (strtoupper($tab[$idx]->nom) > strtoupper($tab[$idx + 1]->nom))
			{
				if (!$permutation)
				{
					$permutation = true;
				}
				$objTemp = $tab[$idx];
				$tab[$idx] = $tab[$idx + 1];
				 $tab[$idx + 1] = $objTemp;
			}
			$idx++;
		}
	}while ($permutation);
	return $tab;
}

class Fichier
{
	//Définition d'un objet fichier contenant simplement son nom et son chemin 
	public $nom = '';
	public $chemin = '';
	
	function Fichier($chemin)
	{
		$this->chemin = $chemin;
		
		$tbChemin = explode("/", $chemin);
		$this->nom = $tbChemin[count($tbChemin) - 1];
	}
}

class repertoire
{
	
	/*
		L'objet réperoire contient un tableau d'objets REPERTOIRE correspondants aux sous-répertoire de celui désiré
		et un autre tableau d'objets FICHIER correspondants aux fichiers contenus dans le répertoire désiré
	*/
	
	public $nom = '';
	public $chemin = '';
	
	public $tbSRep = array();
	public $tbFiles = array();
	
	function repertoire($chemin, $descendre = true)
	{
		/*
			Le deuxième paramètre du constructeur donne la limite de l'appel récursif
			s'il est mis à true, cela signifie que l'appel récursif déscendra d'un niveau dans l'arborescence et listera
			les sous-répertoires de l'élément analysé
		*/
		
		if (is_dir($chemin)) //Vérifier si le chemin existe et est bien un répertoire
		{
			//Remplissage des propriétés de l'objet
			$this->chemin = $chemin;
			
			$tbChemin = explode("/", $chemin);
			$this->nom = $tbChemin[count($tbChemin) - 1];

			//Récupération des sous-répertoires
			$lptRep = opendir($this->chemin); //Ouverture du répertoire désiré
			$tbRepANePasLister = array('.', '..'); //Liste des sous-répertoires à ne pas lister
			$tbExtANePasLister = array('db'); //Liste des extensions de fichiers à ne pas lister
			while (false !== ($obj = readdir($lptRep))) //Parcours des objets contenus dans le répertoire désiré
			{
				if (!in_array($obj, $tbRepANePasLister)) //Vérification de la non présence de l'élément dans les éléments à ne pas lister
				{
					$cheminObj = $this->chemin.'/'.$obj;
					if (is_dir($cheminObj)) //Si l'élément est un répertoire, le mettre dans le tableau des sous répertoires
					{
						if ($descendre)
						{
							//Appel récursif sur le sous-répertoire en cours
							//Ici, je ne désire pas rentrer dans les sous-répertoires
							$this->tbSRep[] = new repertoire($cheminObj, false); 
						}
					}
					
					if (is_file($cheminObj)) //Si l'élément est un fichier, je le mets dans le tableau des fichiers
					{
						/*
							Je construit un tableau contenant les éléments consituant le nom de l'objet en cours
							en général, 2 case : le nom sans l'extension puis l'extension.
						*/
						$tbInfosFichiers = explode('.', $obj); 
						if (!in_array($tbInfosFichiers[count($tbInfosFichiers) - 1], $tbExtANePasLister))
						{
							//Ajout de l'objet fichier correspondant
							$this->tbFiles[] = new Fichier($cheminObj);
						}
					}
				}
			}
			closedir($lptRep); //Fermeture du répertoire désiré
		}
		else 
		{
			die("Le chemin spécifié n'est pas un répertoire !");
		}
	}
	
	function AfficheArborescence($niveau = 1)
	{
		//Parcours tous les sous-répertoires du répertoire en cours
		//Le paramètre donné peut permettre d'effectuer un affichage décalé des sous-répertoire en fonction du niveau
		//Par exemple en ajoutant (niveau) fois un espace devant le lien
		//Le premier test permet de ne pas afficher le nom du répertoire en cours
		if ($niveau > 1)
		{
			//Construction du lien pour le répertoire concerné par l'appel récursif
			print '<A href="?REP='.$this->chemin.'">'.$this->nom.'</A><BR>';
		}
		
		//Affichage des sous-répertoires
		for ($i = 0; $i < count($this->tbSRep); $i++)
		{
			//Appel récursif pour l'affichage
			$srep = $this->tbSRep[$i];
			$srep->AfficheArborescence($niveau + 1);
		}
	}
	
	function ListeFichiers()
	{
		//Construction du lien pour les fichiers
		if (count($this->tbFiles) > 0)
		{
			foreach ($this->tbFiles as $fichier)
			{
				print '<A href="?'.$_SERVER['QUERY_STRING'].'&file='.$fichier->chemin.'">'.$fichier->nom.'</A><BR>';
			}
		}
	}
	
	function LienParent()
	{
		//permet d'afficher le lien pour remonter au répertoire parent de celui consulté
		//Le premier test permet de ne pas donner la possibilité de remonter au dessus d'un certain répertoire
		//Dans mon cas le répertoire parent de ROOT est ma racine du serveur Web, je ne désire pas que mes
		//visiteurs puissent y accéder
		//Je suis en train de travailler sur la création dynamique du ROOT en fonction du visiteur
		//Pour éviter par exemple que mes amis n'accèdent à mes photos de famille et inversement
		if ($this->chemin != ROOT)
		{
			//Les 3 lignes qui suivent enlèvent le répertoire en cours du chemin de retour, pour remonter d'un seul niveau
			$tbPath = explode('/', $this->chemin); 
			array_splice($tbPath, count($tbPath) - 1);
			$pathOrigine = implode('/', $tbPath);
			
			print '<A href="?REP='.$pathOrigine.'">Retour</A><BR>';
		}
		else 
		{
			//Blanc pour remplir la case du tableau affiché en cas d'inexistence (ou d'inaccessibilité) du répertoire parent
			print " ";
		}
	}
}

//Récupération des paramètres
if (isset($_GET['REP']))
{
	$path = $_GET['REP'];
}
else 
{
	$path = ROOT;
}
			
$rep = new repertoire($path);

//Tri des tableaux
$rep->tbSRep = TableauTrie($rep->tbSRep);
$rep->tbFiles = TableauTrie($rep->tbFiles);

$dimensionOrigine = '';
if (isset($_GET['file']) AND is_file($_GET['file']))
{
	//Pour redimensionner l'image pour un affichage plus "visible"
	//De manière à en garder le rapport hauteur * largeur
	//J'utilise cette méthode pour ne pas déformer les photos prises en hauteur en attendant de savoir retourner dynamiquement une photo
	$image = $_GET['file'];
	$tbInfos = getimagesize($image);
	$largeurDesiree = 640;
	$hauteurDesiree = ($largeurDesiree * $tbInfos[1]) / $tbInfos[0];
	$hauteur = $tbInfos[1] * ((($hauteurDesiree * 100) / $tbInfos[1]) / 100);
	$largeur = $tbInfos[0] * ((($largeurDesiree * 100) / $tbInfos[0]) / 100);

	//Pour afficher les dimensions originales de l'image
	$dimensionOrigine = 'Hauteur réelle : '.$tbInfos[1].' pixels    Largeur réelle : '.$tbInfos[0].' pixels';
}
?>

<HTML>
  <HEAD>
    <TITLE>Les photos</TITLE>
    <LINK href="styles.css" type="text/css" rel="stylesheet">
  </HEAD>
	  <BODY style="text-align:center">
	  	<TABLE width="100%">
	  		<TR valign="top">
	  			<TD colspan="2" align="left">
	  				<SPAN class="tabmenus"><?=$path;?></SPAN>
	  			</TD>
	  		</TR>
	  		<TR>
	  			<TD width="200px" nowrap>
	  				<TABLE height="100%" width="100%" border="1">
	  					<TR>
	  						<TD height="20"><?=$rep->LienParent();?></TD>
	  					</TR>
	  					<TR>
	  						<TD><I>Répertoires :</I><BR><BR><?=$rep->AfficheArborescence();?></TD>
	  					</TR>
	  					<TR>
	  						<TD><I>Images : </I><BR><BR><?=$rep->ListeFichiers();?></TD>
	  					</TR>
					</TABLE>
	  			</TD>
	  			<TD valign="top">
	  				<?PHP
	  					if (isset($_GET['file']) AND is_file($_GET['file']))
	  					{
	  						print $dimensionOrigine.'<BR>';
	  						?>
	  						<IMG id="img" src="<?=$image?>" border="0" width="<?=$largeur?>" height="<?=$hauteur?>">
							<?PHP
						}
						?>
	  			</TD>
	  		</TR>
	  	</TABLE>
	  </BODY>
</HTML>

Conclusion

Pour le moment, je pense qu'il n'y a pas de bug, mais je ne l'ai pas exploitée à fond.
Merci pour vos commentaires.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

01 avril 2006 10:27:30 :
- Ajout d'une méthode de tri simple sur les sous-répertoires et les fichiers - Ajout d'un méthode de définition de la constante ROOT en fonction de l'utilisateur connecté (id : Apache / Mandriva par htaccess) - Intégration dans une archive ZIP contenant les 2 fichiers PHP et le fichier CSS
01 avril 2006 11:47:35 :
- Ajout d'un test pour eviter le cross scripting sur le nom du fichier

Commentaires et avis

signaler à un administrateur
Commentaire de sniogleerf le 01/04/2006 18:45:28

Bonjour,
J'ai essayé ton script, mais quand je lance la page d'index, j'obtien le message suivant: "Le chemin spécifié n'est pas un répertoire !". Merci de m'expliquer comment on met tout ca en place, il n'y a aucune explication dans les commentaires.

sniogleerf

signaler à un administrateur
Commentaire de Evangun le 01/04/2006 21:38:29

Salut,
anglais : "gallery"
français : "galerie"
à part ça j'aime bien le principe de pouvoir faire une seule galerie tout en classant ses photos...

signaler à un administrateur
Commentaire de satanik_mike le 02/04/2006 10:16:41

Evangun : Oui désolé, j'ai pas fait attention :)

Sniogleerf : Normalement il faut que tu définisses un répertoire de base à mettre dans la constante ROOT. Soit tu le mets en dur dedans, soit tu passe par le tableau associatif par rapport aux noms d'utilisateurs déclaré dans le include associé. Si tu as fait un copier-coller du code ci-dessus, le plus simple est de le mettre en dur, sinon récupère le ZIP tu as tout dedans.

Merci pour vos commentaires, c'est ma première source en PHP alors tout est bon à prendre pour apprendre parfaitement.

signaler à un administrateur
Commentaire de GRenard le 04/04/2006 13:28:09

Attention, c'est du PHP5, PHP4 tu fais des copies ici :
$objTemp = $tab[$idx];
$tab[$idx] = $tab[$idx + 1];
$tab[$idx + 1] = $objTemp;

Ta fonction de sorting (permutation) est vraiment étrange... il y a des fonctions PHP qui permettent de faire du tri en lui fournissant un callback...

"<?=$hauteur?>"> WOUAAAAAA C'est vieux ca !!! un petit <?php echo serait apprécié.

signaler à un administrateur
Commentaire de satanik_mike le 05/04/2006 07:44:31

Salut,

Oui en effet, désolé pour les notations courtes, j'ai tout corrigé avant que tu me le signales mais je n'ai pas eu le temps de faire un update.

Concernant la permutation, qu'est-ce qui te choque ? Elle me permet de permuter de Objets pour les trier. Au passage, je n'ai trouvé aucune fonction PHP permettant de trier des objets en fonction d'une proporiété. Si tu en connais une, cela m'intéresse.
Perso, c'est comme ca que j'ai appris à trier (tri simple, avant tri fusion et dycho) quand j'ai appris le C, C++.

Merci de cos commentaires.

signaler à un administrateur
Commentaire de GRenard le 05/04/2006 14:10:48

Rien ne me choque... mais en faisant une permutation comme ca il faut mentionner que ton script est pour PHP5 car il fonctionne par référence, sinon tu fais une copie en PHP4... pour ne pas faire de copie tu dois écrire une perluète (&) après le =.

Fonction usort permet de trier en fonction d'un callback.

signaler à un administrateur
Commentaire de drunk3n95 le 15/06/2006 14:11:08

Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home.2/capbeaut/www/index.php on line 44

Voici mon erreur :'(

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

arborescence de repertoire et sous répertoire avec galerie d'image [ par bladehelsing ] Bonjours à tous,après avoir essayer tous les codes arborescence avec galerie d'image.j'en ai trouvé aucun qui:affiche d'abord les répertoires qui seul creer un répertoire dans un répertoire [ par mouloudikhaled ] Bonjour a tous, S'il vous plait. j'essaye de crée un dossier dans un dossier mais je n'y arrive pas. Pouvez vous me dire comment dois-je procédé ? Mer Positionner ma galerie flash sur ma page [ par mel06 ] Bonjour,Je possède une galerie flash sur mon site internet mais le problème c'est qu'elle se trouve en bas de la page : http://www.tristane-banon-offi ouvrir une autre fenetre [ par hou1919 ] SalutEst ce que vous pouvez m'aider à avoir une idée sur ce truc qui  se trouve  dans  le  lien  <a href="http://www.wks.fr/Nouvel-article,158.html#" Création site de vente [galerie Objet] [ par Brydjy ] Bonjour à tous,Vraiment besoin d'aide...Je suis à l'école et j'ai pour projet de créer un site web.J'ai pas choisis le plus simple ! Site de vente...J galerie photo mysql [ par nissweb ] Bonjour j'ai besoin un code qui pemet d' ajouter et suprimer des photo à partir d'un formulaire  qui contiens discription; style de photo et parcurir Diaporama depuis une structure avec répêrtoire et sous-repertoire [ par patrick672 ] Hello,A ce jour aucune connaissance php, je suis autodidacte et je me lance .J'ai créé pour un ami qui démarre son affaire, un site Web classique en h Lister dans un tableau à 2 colonnes des dossiers et leurs contenus [ par jibtothenight ] Bonjour,Avec mon php j'arrive à  aficher le nom de mes dossiers et leurs contenus qui sont sur le serveur, voici mon code : &lt;?phpfunction parcours_ Ouvrir un dossier répertoire du disque dur [ par sebalex ] Bonjour à tous,Voilà. J'ai un form "fichier"  sur une page relative à un client (id_client). Ce form sert à uploader un document PDF dans ma base. Ce Comment lister le contenu d'un répertoire? [ par stankov ] j'ai monté le site d'une église, site dans lequel se trouve un repertoire ARCHIVES. Pour lister le contenu de ce repertoire j'ai écris le script ci-de


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,749 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.