begin process at 2012 02 13 03:18:57
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

Xml par ordre alphabétique


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

1 2

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


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales