Accueil > Forum > > > > Xml par ordre alphabétique
Xml par ordre alphabétique
vendredi 26 juin 2009 à 11:44:03 |
Xml par ordre alphabétique

f0nzy
|
Salut, J'ai un code php qui génère un fichier xml, mais les résultats s'affichent dans un ordre aléatoire, hors j'aimerais trier les données dans un ordre alphabétique. Est-ce que je dois créer un xsl ou est ce qu'il y a moyen de trier dans le code php? Merci le code php(il s'agit d'une galerie flash) : function listerIMG($s_nomrep_courant) { global $s_xml; global $listeRepertoires; /*--- Liste des images du Répertoire ---*/ if( strlen($s_nomrep_courant) > 1 ) { $repActu = opendir($s_nomrep_courant); // Scan du répertoire while($scanimg=readdir($repActu)) { // Fichier if(is_file($s_nomrep_courant."/".$scanimg)) { // Verification de l'extension d'image $ext = strtolower(substr($scanimg, strrpos($scanimg, '.') + 1)); // à modifier suivant l'extension des images du répertoire //if (($ext=="PNG") || ($ext=="png")) if (($ext=="jpg") || ($ext=="jpeg") || ($ext=="JPEG") || ($ext=="JPG") ) { $nomrep = substr($s_nomrep_courant, 2); $s_param = explode(".", $scanimg); $nomimage = $s_param[0]; /*--- création des miniatures ---*/ $s_chemin_mini = substr($s_nomrep_courant, 2); $s_mini_img = $scanimg; // on ne redimensionne pas la miniature if( substr($s_mini_img, 0, 5) != "mini_" ) { if( file_exists($s_chemin_mini."/mini_".$s_mini_img) ) { //echo " le fichier existe : ".$s_chemin_mini."/mini_".$s_mini_img."<br>"; } else { //echo "creation de la miniatures <br>"; resize( $s_chemin_mini."/", $s_mini_img); } // mise à jour du fichier xml $s_xml .="<detail nomimage=\"".$nomimage."\" urlimage=\"".$s_nomrep_courant."/".$scanimg."\" nomrepertoire=\"".$nomrep."\" vignette=\"".$s_nomrep_courant."/mini_".$scanimg."\" ><p align='center'>Des commentaires optionnels)</p> </detail>"; } // remplit le tableau des répertoires array_push ($listeRepertoires, $nomrep); } } } closedir($repActu); return true; } } // entrée : le nom du répertoire (le chemin), le nom du fichier à redimensionner // sortie : true or false // fonction : redimensionne des images function resize($s_chemin, $file) { $size = getimagesize($s_chemin.$file); # getimagesize() retourne un tableau de 4 éléments. # L'index 0 contient la largeur. L'index 1 contient la longueur. L'index 2 # contient le type de l'image : 1 = GIF, 2 = JPG, # 3 = PNG, 5 = PSD, 6 = BMP. # L'index 3 contient la chaîne à placer dans les balises # HTML : "height=xxx width=xxx" # (source www.php.net) $dest_width = ($size[0]/4); //détermine la taille de la miniature, ici l'on désire quelles soient d'un sixième de leur taille normale $dest_eight = ($size[1]/4); //$dest_width = 200; //$dest_eight = 200; $src_img = imagecreatefromjpeg($s_chemin.$file); $dst_img = imagecreatetruecolor($dest_width,$dest_eight); imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $dest_width, $dest_eight, $size[0], $size[1]); // la fonction qui redimensionne les photos imagejpeg($dst_img, $s_chemin."mini_".$file, 60); imagedestroy($src_img); imagedestroy($dst_img); return true; } $s_xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?> "; /*--- Récupère toutes les images d'un répertoire ---*/ $s_xml .= "<image> "; // Répertoire courant $repcou = @$_GET["dir"]; if(!$repcou) $repcou = "."; // Liste des dossiers $dir = opendir($repcou); // Scan du répertoire while($scan=readdir($dir)) { // Dossier sauf répertoire courant if(is_dir($repcou."/".$scan)&&($scan!=".")) { // Répertoire parent if($scan=="..") { // Lien vers le répertoire parent if($repcou!=".") { $tmp = strrpos($repcou,"/"); $s_nomrep_courant = substr($repcou,0,$tmp); } } else { $s_nomrep_courant = $repcou."/".$scan; $b_retour = listerIMG($s_nomrep_courant); } } } closedir($dir); $s_xml .="</image> ";
|
|
dimanche 28 juin 2009 à 08:32:59 |
Re : Xml par ordre alphabétique

TropNul
|
Bonjour,
Mets d'abord tes données dans un array puis fais un sort() dessus.
Cordialement
|
|
lundi 29 juin 2009 à 10:25:38 |
Re : Xml par ordre alphabétique

f0nzy
|
Ok, j'essaie, mais je n'y arrive pas ...
Je suppose que je dois mettre ca dans la boucle.
Tu saurais me guider svp?
merci
|
|
lundi 29 juin 2009 à 17:02:35 |
Re : Xml par ordre alphabétique

TropNul
|
Montres nous le code qui ne fonctionne pas stp.
Cordialement
|
|
mardi 30 juin 2009 à 10:04:05 |
Re : Xml par ordre alphabétique

f0nzy
|
Ceci doit être la fonction qui remplit le fichier xml, donc je suppose que c'est cette fonction que je dois attaquer. J'ai essayé de m'inspirer du tableau $listeRepertoires, et mon tableau s'appelle $tri. Si tu penses que je n'attaque pas la bonne partie, tout le code est dans le premier post. Je te remercie énormément
/*--- génération du fichier xml ---*/ $s_xml = ""; $listeRepertoires = array(); $tri = array(); $count=0; // entrée : le nom du répertoire à scanner // fonction : liste les images d'un répertoire et met à jour le fichier xmlfunction listerIMG($s_nomrep_courant) { global $s_xml; global $listeRepertoires; global $tri; /*--- Liste des images du Répertoire ---*/ if( strlen($s_nomrep_courant) > 1 ) { $repActu = opendir($s_nomrep_courant); // Scan du répertoire while($scanimg=readdir($repActu)) { // Fichier if(is_file($s_nomrep_courant."/".$scanimg)) { // Verification de l'extension d'image $ext = strtolower(substr($scanimg, strrpos($scanimg, '.') + 1)); // à modifier suivant l'extension des images du répertoire //if (($ext=="PNG") || ($ext=="png")) if (($ext=="jpg") || ($ext=="jpeg") || ($ext=="JPEG") || ($ext=="JPG") ) { $nomrep = substr($s_nomrep_courant, 2); $s_param = explode(".", $scanimg); $nomimage = $s_param[0]; /*--- création des miniatures ---*/ $s_chemin_mini = substr($s_nomrep_courant, 2); $s_mini_img = $scanimg; // on ne redimensionne pas la miniature if( substr($s_mini_img, 0, 5) != "mini_" ) { if( file_exists($s_chemin_mini."/mini_".$s_mini_img) ) { //echo " le fichier existe : ".$s_chemin_mini."/mini_".$s_mini_img."<br>"; } else { //echo "creation de la miniatures <br>"; resize( $s_chemin_mini."/", $s_mini_img); } // mise à jour du fichier xml $s_xml .="<detail nomimage=\"".$nomimage."\" urlimage=\"".$s_nomrep_courant."/".$scanimg."\" nomrepertoire=\"".$nomrep."\" vignette=\"".$s_nomrep_courant."/mini_".$scanimg."\" ><p align='center'>Des commentaires optionnels)</p> </detail>"; } // remplit le tableau des répertoires array_push ($listeRepertoires, $nomrep); } } } closedir($repActu); return true; } array_push ($tri, $s_xml); sort($tri); }
|
|
mardi 30 juin 2009 à 18:01:09 |
Re : Xml par ordre alphabétique

TropNul
|
Bonjour f0nzy,
Je préconiserai la méthode suivante (qui fera un tri sur le nom de l'image) :
// Ici tu mets à jour ta variable $s_xml $s_xml .="<detail nomimage=\"".$nomimage."\" urlimage=\"".$s_nomrep_courant."/".$scanimg."\" nomrepertoire=\"".$nomrep."\" vignette=\"".$s_nomrep_courant."/mini_".$scanimg."\" ><p align='center'>Des commentaires optionnels</p></detail>"; // on rajoute ici le nom de l'image à l'array tri pour ensuite le trier $tri[] = $nomimage;
// Cette partie viendra en dehors de la boucle pour effectuer le tri sort($tri); // Initialization d'un array qui contiendra la liste triée. trie=array(); foreach ($tri as $key => $val) { // Vérification de la présence de l'image ... if (preg_match($val, $s_xml)) { // Extraction de cet 'item' de la liste ... $regex='/(<detail.?nomimage="'.$val.'".?urlimage="[^"]+?".?nomrepertoire="[^"]+?".?vignette="[^"]+?".?><p.?align=\'center\'>[^<]*?</detail>)/i'; if (preg_match($regex, $s_xml, $res)) { // Sauvegarde de l'item dans l'array final ... $trie[]=$res[0]; } } } // Enfin, ta variable $s_xml peut être réécrite ... unset($s_xml); foreach ($trie as $key => $val) { $s_xml .= $val; } // Ici donc, $s_xml sera normalement une variable triée !
En espérant que cela fonctionne comme prévu.
Cordialement
|
|
mercredi 1 juillet 2009 à 11:31:50 |
Re : Xml par ordre alphabétique

f0nzy
|
L'ordre se fait toujours aléatoirement, je n'ai peut être pas copier au bon endroit, je l'ai mis en fin de fonction Merci beaucoup en tout cas function listerIMG($s_nomrep_courant) { global $s_xml; global $listeRepertoires; /*--- Liste des images du Répertoire ---*/ if( strlen($s_nomrep_courant) > 1 ) { $repActu = opendir($s_nomrep_courant); // Scan du répertoire while($scanimg=readdir($repActu)) { // Fichier if(is_file($s_nomrep_courant."/".$scanimg)) { // Verification de l'extension d'image $ext = strtolower(substr($scanimg, strrpos($scanimg, '.') + 1)); // à modifier suivant l'extension des images du répertoire //if (($ext=="PNG") || ($ext=="png")) if (($ext=="jpg") || ($ext=="jpeg") || ($ext=="JPEG") || ($ext=="JPG") ) { $nomrep = substr($s_nomrep_courant, 2); $s_param = explode(".", $scanimg); $nomimage = $s_param[0]; /*--- création des miniatures ---*/ $s_chemin_mini = substr($s_nomrep_courant, 2); $s_mini_img = $scanimg; // on ne redimensionne pas la miniature if( substr($s_mini_img, 0, 5) != "mini_" ) { if( file_exists($s_chemin_mini."/mini_".$s_mini_img) ) { //echo " le fichier existe : ".$s_chemin_mini."/mini_".$s_mini_img." "; } else { //echo "creation de la miniatures "; resize( $s_chemin_mini."/", $s_mini_img); } // mise à jour du fichier xml $s_xml .=" Des commentaires optionnels) "; $tri[]=$nomimage; } // remplit le tableau des répertoires array_push ($listeRepertoires, $nomrep); } } } closedir($repActu); return true; } sort($tri); $trie=array(); foreach ($tri as $key => $val) { // Vérification de la présence de l'image ... if (preg_match($val, $s_xml)) { // Extraction de cet 'item' de la liste ... $regex='/( [^<]*?)/i'; if (preg_match($regex, $s_xml, $res)) { // Sauvegarde de l'item dans l'array final ... $trie[]=$res[0]; } } } unset($s_xml); foreach ($trie as $key => $val) { $s_xml .= $val; } }
|
|
mercredi 1 juillet 2009 à 11:35:07 |
Re : Xml par ordre alphabétique

f0nzy
|
L'ordre se fait toujours aléatoirement, je n'ai peut être pas copier au bon endroit, je l'ai mis en fin de fonction
Merci beaucoup en tout cas
le code:
function listerIMG($s_nomrep_courant)
{
global $s_xml;
global $listeRepertoires;
/*--- Liste des images du Répertoire ---*/
if( strlen($s_nomrep_courant) > 1 )
{
$repActu = opendir($s_nomrep_courant);
// Scan du répertoire
while($scanimg=readdir($repActu))
{
// Fichier
if(is_file($s_nomrep_courant."/".$scanimg))
{
// Verification de l'extension d'image
$ext = strtolower(substr($scanimg, strrpos($scanimg, '.') + 1));
// à modifier suivant l'extension des images du répertoire
//if (($ext=="PNG") || ($ext=="png"))
if (($ext=="jpg") || ($ext=="jpeg") || ($ext=="JPEG") || ($ext=="JPG") )
{
$nomrep = substr($s_nomrep_courant, 2);
$s_param = explode(".", $scanimg);
$nomimage = $s_param[0];
/*--- création des miniatures ---*/
$s_chemin_mini = substr($s_nomrep_courant, 2);
$s_mini_img = $scanimg;
// on ne redimensionne pas la miniature
if( substr($s_mini_img, 0, 5) != "mini_" )
{
if( file_exists($s_chemin_mini."/mini_".$s_mini_img) )
{
//echo " le fichier existe : ".$s_chemin_mini."/mini_".$s_mini_img."<br>";
}
else
{
//echo "creation de la miniatures <br>";
resize( $s_chemin_mini."/", $s_mini_img);
}
// mise à jour du fichier xml
$s_xml .="<detail nomimage=\"".$nomimage."\" urlimage=\"".$s_nomrep_courant."/".$scanimg."\" nomrepertoire=\"".$nomrep."\" vignette=\"".$s_nomrep_courant."/mini_".$scanimg."\" ><p align='center'>Des commentaires optionnels)</p>
</detail>";
$tri[]=$nomimage;
}
// remplit le tableau des répertoires
array_push ($listeRepertoires, $nomrep);
}
}
}
closedir($repActu);
return true;
}
sort($tri);
$trie=array();
foreach ($tri as $key => $val) {
// Vérification de la présence de l'image ...
if (preg_match($val, $s_xml)) {
// Extraction de cet 'item' de la liste ...
$regex='/(<detail.?nomimage="'.$val.'".?urlimage="[^"]+?".?nomrepertoire="[^"]+?".?vignette="[^"]+?".?><p.?align=\'center\'>[^<]*?</detail>)/i';
if (preg_match($regex, $s_xml, $res)) {
// Sauvegarde de l'item dans l'array final ...
$trie[]=$res[0];
}
}
}
unset($s_xml);
foreach ($trie as $key => $val) {
$s_xml .= $val;
}
}
|
|
mercredi 1 juillet 2009 à 14:42:42 |
Re : Xml par ordre alphabétique

TropNul
|
Tu dois mettre la 2ème partie juste avant ta commande return true; je pense. Autrement, tu es sortie du script avant même de faire le tri.
Cordialement
|
|
jeudi 2 juillet 2009 à 11:35:50 |
Re : Xml par ordre alphabétique

f0nzy
|
Ah oui, tu as raison, je viens de remonter le code et j 'ai du changement, mais il y a une petite erreur dans le code :
Warning: preg_match() [function.preg-match]: Delimiter must not be
alphanumeric or backslash in ...
Après des recherches google, il dit d'utiliser la fonction strpos(), ca marche pour la premiere ligne ("if (preg_match($val, $s_xml))"), mais pour la seconde qui contient trois valeurs, c'est un autre problème
Encore merci
|
|
Cette discussion est classée dans : img, mini, courant, nomrep, if
Répondre à ce message
Sujets en rapport avec ce message
redimenssionner image [ par fvv ]
Bonjour, Le code que j'utilise pour réduire la taille de mes images ne marche pas : ça me crée une miniature 150*150 dans le bon dossier mais toute no
Fatal error: Allowed memory size [ par LiTtLeBuBu ]
Bonjour à tous,J'ai un code qui crée des miniatures après upload des photos. Quand j'envoi des photos de 400ko environ il n'y a aucun soucis mais lors
Affichage de mes images aprés redimension [ par boubeuch1 ]
Bonjour, Je viens d'effectuer une fonction pour me permettre de redimensionner mes photos afin de les afficher dans une galerie Jquery qui possède de
Affichage de mes images aprés redimension en php [ par boubeuch1 ]
Bonjour, Je viens d'effectuer une fonction pour me permettre de redimensionner mes photos afin de les afficher dans une galerie Jquery qui possède de
Custum plugging présentation de photos en full background [ par donzus ]
Bonjour, je cherche à transformer le pluging suivant: "Djuve" (Système de présentation d'images avec vignettes) voici un exemple de ce pluging: ex (
pbm de fonction [ par jphilippev ]
bonjour et bonne année mon soucis --> if (!empty($dest_fichier)) { fun
case php et mysql [ par yoyo77yo ]
bonjour et bonne annéeJe vous explique mon probleme (je suis débutant)j'ai un script d'espace membre mais je veux rajouter des choses : en effet je so
random Visual Index correction plugging [ par donzus ]
Bonjour, dernière petite aide... c'est toujours un peu génant de bombarder de questions... J'utilise un pluging (random Visual Index) permettant d'i
verification de formulaire et envoi dans bbd [ par lorant59 ]
bonjour, j ai comme erreur Fatal error: Call to undefined function: filter_var() in je suis chez free j ai renommer le fichier en .php5 toujours la
Livres en rapport
|
Derniers Blogs
[WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : SONDAGE..RE : SONDAGE.. par phpAnonyme
Cliquez pour lire la suite par phpAnonyme RE : SONDAGE..RE : SONDAGE.. par TychoBrahe
Cliquez pour lire la suite par TychoBrahe
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|