[PHP]Incrémenter variable lien

thepchou Messages postés 71 Statut Membre -  
 mam's -
Bonjour.
Je vous expose mon problème :

Je souhaite afficher des extensions seulement lorsque je clique sur le lien de l'extension précis, je m'explique avec un dessin :

- [BMP] :
- [TXT] :

Je clique sur BMP ->

- [BMP] : -toto.bmp -titi.bmp
- [TXT] :

J'ai crée une variable initialisé à 0, lorsque je clique sur le lien cette dernière doit incrémenter et permettre l'affichage, et c'est ce que je veux produire mais je n'y arrive pas...
Je vous passe mon code :

$dis = 0;
$ExpExt = $Extensions;
sort($ExpExt);
echo "<table cellspacing=\"1\" cellpadding=\"4\" border=\"1\">"; // On crée un tableau en html ; par la suite on affichera les extensions.

foreach($ExpExt as $findExt)
{
$getFile = browse($dir, $findExt); // Appel de fonction browse stocké dans une variable $getFile
$countFile = count($getFile); // On compte le nombre d'éléments dans $getFile et on le stock dans une variable $countFile.

if($countFile != 0)
{
echo "<tr style=\"font-size:8pt;font-family:arial;text-align=left\">"; // Purement esthétique au niveau de la police contenu dans le tableau : à modifier selon les goûts.
echo "<th><b>Fichier(s) <a href=\"$PHP_SELF?dir=".rawurlencode($dir)."\">".strtoupper($findExt)."</a></b> (".$countFile.") :</th><td> </td>"; // Affiche une catégorie d'extension et son nombre.

foreach($getFile as $myFile)
{
if($dis != 0)
{
echo "<td>- ".$myFile."</td><td> </td>"; // Affiche l'extension de la catégorie.
}
}
echo "</tr>";
}
}
echo "</table>";



J'ai déjà essayé quelques trucs mais sans succès, aidez-moi s'il vous plaît ! Sivous avez besoin des fonctions pour lancer le code, dîtes-le moi.
Merci.

6 réponses

  1. mam*s
     
    Essaie alors un truc du genre :

    if ( ! isset($_GET['dis']) ) // si la variable $_GET['dis'] n'est pas définie (le lien n'a pas été cliqué)
    $dis = 0; // on initialise la variable dis à 0
    else
    $dis = $_GET['dis']; // sinon, on l'initialise au résultat de la requête.

    avec cela, je pense que ca devrait aller mieux !
    2
    1. thepchou Messages postés 71 Statut Membre 25
       
      J'ai placé le code juste avant la balise <a> et ça marche bien quand je clique sur le lien, Merci !

      Mais avec mon code comment faire pour ne faire apparaître que l'extension que je souhaite afficher en cliquant sur le lien approprié ?
      0
    2. thepchou Messages postés 71 Statut Membre 25
       
      Ton code marche seulement si j'ajoute $dis++;
      if( !isset( $_GET['dis'] ) )
      {
           $dis = 0;
      }else
      {
           $dis = $_GET['dis'];
           $dis++;
      }
      

      Si je mets en commentaire $dis = $_GET['dis']; ça marche mais c'est quand même source d'erreur.
      0
  2. mam*s
     
    Alors le probleme est surement dans le fait que tu ne devrais initialiser la variable dis à 0 que lorsque ta page est appelée pour la première fois : sinon ta variable est remise à 0 à chaque fois que ton code s'exécute. Au lieu de :

    $dis=0;

    Essaie plutot :

    if (! isset($dis)) // la fonction isset renvoie true si la variable passée en paramètre est définie, et false sinon.
    $dis = 0;

    Et aussi, assure toi que tu récupères bien les variables que tu passes dans l'URL du tableau $_GET.

    Avec ca, ca devrait aller mieux.
    1
    1. thepchou Messages postés 71 Statut Membre 25
       
      Comment faire pour récuperer cela dans l'url avec $_GET[dis] ?
      J'essaye mais je ne fais que des erreurs... :s
      0
  3. thepchou Messages postés 71 Statut Membre 25
     
    Voici le code qui manque pour faire fonctionner le programme.

    function browse($dir, $pExtension)
    {
    $files = array();
    	if($handle = opendir($dir))
    	{
    		while( false !== ($file = readdir($handle)) )
    		{
    			$getExt = explode(".", $file);
    			$countExt = count($getExt);
    			$fExt = $countExt - 1;
    			$myExt = $getExt[$fExt];
    
    			if( ($myExt == $pExtension) && ($file != ".") && ($file != "..") )
    			{
    				$files[] = $file;
    			}
    		}
    	}
    return $files;    
    closedir($handle);
    }
    
    $Extensions = array(
    		"exe",
    		"mp3",
    		"php",
    		"zip",
    		"doc",
    		"db",
    		"txt",
    		"BAT",
    		"SYS",
    		"log",
    		"xls",
    		"ppt",
    		"pdf",
    		"bmp",
    		"gif",
    		"jpg",
    		"png",
    		"php3",
    		"htm",
    		"html",
    		"css",
    		"js"
    		);
    


    Aidez-moi s'il vous plaît.
    Merci !
    0
  4. mam*s
     
    Salut,

    J'ai juste regardé vite fait ton code, et je ne vois pas où tu incrémentes la variable $dis.....
    0
    1. thepchou Messages postés 71 Statut Membre 25
       
      Excuse-moi, je me suis mal exprimé, je veux faire incrémenter la variable en cliquant sur le lien, mais je ne sais pas comment.
      J'avais essayé ça :
      echo "<th><b>Fichier(s) <a href=\"$PHP_SELF?dir=".rawurlencode($dir)."&amp;dis=".($dis+1)."\">".strtoupper($findExt)."</a></b> (".$countFile.") :</th><td>&nbsp;</td>"; 

      Mais ça ne marche pas...

      Aidez-moi s'il vous plaît.
      Merci !
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. komar
     
    DSL un tit test
    111111111111110000000000000000011111111111111111110000000000000000000011111111111111111111110000000000000011111111111111111111111111110000000000000000011111111111111111110000000000000000000011111111111111111111110000000000000011111111111111111111111111110000000000000000011111111111111111110000000000000000000011111111111111111111110000000000000011111111111111111111111111110000000000000000011111111111111111110000000000000000000011111111111111111111110000000000000011111111111111111111111111110000000000000000011111111111111111110000000000000000000011111111111111111111110000000000000011111111111111111111111111110000000000000000011111111111111111110000000000000000000011111111111111111111110000000000000011111111111111111111111111110000000000000000011111111111111111110000000000000000000011111111111111111111110000000000000011111111111111111111111111110000000000000000011111111111111111110000000000000000000011111111111111111111110000000000000011111111111111111111111111110000000000000000011111111111111111110000000000000000000011111111111111111111110000000000000011111111111111111111111111110000000000000000011111111111111111110000000000000000000011111111111111111111110000000000000011111111111111111111111111110000000000000000011111111111111111110000000000000000000011111111111111111111110000000000000011111111111111111111111111110000000000000000011111111111111111110000000000000000000011111111111111111111110000000000000011111111111111111111111111110000000000000000011111111111111111110000000000000000000011111111111111111111110000000000000011111111111111111111111111110000000000000000011111111111111111110000000000000000000011111111111111111111110000000000000011111111111111111111111111110000000000000000011111111111111111110000000000000000000011111111111111111111110000000000000011111111111111
    0
  7. thepchou Messages postés 71 Statut Membre 25
     
    Je vous rappel mon code pour afficher une extension :
    $ExpExt = $Extensions;
    			sort($ExpExt);
    			echo "<table cellspacing=\"1\" cellpadding=\"4\" border=\"1\">"; // On crée un tableau en html ; par la suite on affichera les extensions.
    
    			foreach($ExpExt as $findExt)
    			{
    				$getFile = browse($dir, $findExt); // Appel de fonction browse stocké dans une variable $getFile
    				$countFile = count($getFile); // On compte le nombre d'éléments dans $getFile et on le stock dans une variable $countFile.
    
    				if($countFile != 0)
    				{
    					if( !isset($_GET['dis']) )
    					{
    						$dis = 0;
    					}else
    					{
    						$dis = $_GET['dis'];
    						$dis++;
    					}
    					
    					echo "<tr style=\"font-size:8pt;font-family:arial;text-align=left\">"; // Purement esthétique au niveau de la police contenu dans le tableau : à modifier selon les goûts.
    					echo "<th><b>Fichier(s) <a href=\"$PHP_SELF?dir=".rawurlencode($dir)."&amp;dis\">".strtoupper($findExt)."</a></b> (".$countFile.") :</th><td>&nbsp;</td>"; // Affiche une catégorie d'extension et son nombre.
    
    					foreach($getFile as $myFile)
    					{
    						if($dis != 0)
    						{
    							echo "<td>- ".$myFile."</td><td>&nbsp;</td>"; // Affiche l'extension de la catégorie.
    						}
    					}
    					echo "</tr>";
    				}
    			}
    			echo "</table>";
    

    Grace à mam*s quand je clique sur un lien j'incrémente $dis et ça m'affiche toutes les extensions.
    Comment faire pour n'afficher que sur l'extension que je souhaite visualiser en cliquant sur le lien prédéfinit ?
    0
    1. mam's
       
      Le problème, c'est que dans cette partie la :

      foreach($getFile as $myFile)
      {
      	if($dis != 0)
      	{
      		echo "<td>- ".$myFile."</td><td> </td>"; // Affiche l'extension de la catégorie.
      	}
      }
      


      s'exécute pour chacune de tes extensions, alors qu'elle ne devrait s'exécuter que pour l'extension sélectionnée.

      Tu devrais utiliser une variable qui te permettra de savoir quelle extension a été sélectionnée.
      0
      1. thepchou Messages postés 71 Statut Membre 25 > mam's
         
        J'ai essayé de faire un foreach de $findExt as $Ext, mais ça ne marche pas (ça crée une erreur).

        Comment faire pour chaque extension trouvée, lui affecter une variable dans mon code ?

        -> $myFile correspond au fichier avec l'extension.
        -> $getFile correspond à la variable contenant l'appel de fonction de browse().

        Aidez-moi s'il vous plaît.
        Merci !
        0
      2. thepchou Messages postés 71 Statut Membre 25 > thepchou Messages postés 71 Statut Membre
         
        J'ai réussi à créer une variable qui prend chaque extension.
        foreach($ExpExt as $findExt)
        {
          $getFile = browse($dir, $findExt);
          $countFile = count($getFile);
          if($bis != 0)
          {
            if($countFile != 0)
            {
              echo "<tr style=\"font-size:8pt;font-family:arial;text-align=left\">";
              echo "<th><b>Fichier(s) <a href=\"$PHP_SELF?dir=".rawurlencode($dir)."&bis&dis\">".strtoupper($findExt)."</a></b> (".$countFile.") :</th><td> </td>";
             
               $Ext[] = $findExt; // Cette variable prend chaque extension !
              
              foreach($getFile as $myFile)
              {
                  if($dis != 0)
                  {
                      echo "<td>- ".$myFile."</td><td> </td>";
                  }
              }
             echo "</tr>";
          }
        }
        }
        

        Maintenant je cherche à faire un lien pour chaque extension, et lorsque je clique dessus, ça n'affiche que les fichiers portant la même extension.
        Comment faire ? Je ne vois pas l'algorithme à mettre en place...
        0
      3. mam's > thepchou Messages postés 71 Statut Membre
         
        Ben tout simplement, tu n'as qu'à passer le nom de l'extension dans l'url du lien qui corespond !
        0