Rechercher : dans
Par :

[PHP]Incrémenter variable lien

Dernière réponse le 21 jun 2007 à 13:33:25 thepchou, le 18 jun 2007 à 15:49:09 
 Signaler ce message aux modérateurs

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.

Meilleures réponses pour « [PHP]Incrémenter variable lien » dans :
PHP - Les variables Voir Concept de variable avec PHP Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage PHP peuvent être de trois...
PHP - Concaténation VoirPHP permet de concaténer des chaînes de caractères grâce à l'opérateur "." : $concatenation= $a . $b; Ou encore pour affecter, dans la variable $a, la valeur de la concaténation de $a et de $b : $a.=$b; Pour concaténer des chaînes et des...
[PHP] Les ressemblances à ne pas confondre VoirIntroduction Concaténation ou paramètres ? Guillemets/Apostrophe Structure require/include isset vs empty htmlentities ou htmlspecialchars ? Nombre de signes égal Introduction Cette astuce présente plusieurs fonction ou astuces en...
PHP - Les variables d'environnement VoirNotion de variable d'environnement Les variables d'environnement sont, comme leur nom l'indique, des données stockées dans des variables permettant au programme d'avoir des informations sur son environnement. L'environnement, dans le cas du script...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
Variables d'environnement VoirVariables d'environnement Une variable d'environnement est une valeur dynamique, chargée en mémoire, pouvant être utilisée par plusieurs processus fonctionnant simultanément. Sur la plupart des systèmes d'exploitation, les emplacement de...

1

thepchou, le 18 jun 2007 à 15:57:11

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 !

Répondre à thepchou

2

mam*s, le 18 jun 2007 à 16:08:09

Salut,

J'ai juste regardé vite fait ton code, et je ne vois pas où tu incrémentes la variable $dis.....

Répondre à mam*s

3

thepchou, le 18 jun 2007 à 16:16:46

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 !

Répondre à thepchou

4

mam*s, le 18 jun 2007 à 16:50:49
  • +1

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.

Répondre à mam*s

5

thepchou, le 18 jun 2007 à 17:20:56
  • +1

Comment faire pour récuperer cela dans l'url avec $_GET[dis] ?
J'essaye mais je ne fais que des erreurs... :s

Répondre à thepchou

6

mam*s, le 18 jun 2007 à 18:14:08
  • +1

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 !

Répondre à mam*s

8

thepchou, le 19 jun 2007 à 13:22:04
  • +1

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é ?

Répondre à thepchou

10

thepchou, le 19 jun 2007 à 13:42:15
  • +1

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.

Répondre à thepchou

7

komar, le 18 jun 2007 à 18:21:45

DSL un tit test
111111111111110000000000000000011111111111111111110000000000­000000000011111111111111111111110000000000000011111111111111­111111111111110000000000000000011111111111111111110000000000­000000000011111111111111111111110000000000000011111111111111­111111111111110000000000000000011111111111111111110000000000­000000000011111111111111111111110000000000000011111111111111­111111111111110000000000000000011111111111111111110000000000­000000000011111111111111111111110000000000000011111111111111­111111111111110000000000000000011111111111111111110000000000­000000000011111111111111111111110000000000000011111111111111­111111111111110000000000000000011111111111111111110000000000­000000000011111111111111111111110000000000000011111111111111­111111111111110000000000000000011111111111111111110000000000­000000000011111111111111111111110000000000000011111111111111­111111111111110000000000000000011111111111111111110000000000­000000000011111111111111111111110000000000000011111111111111­111111111111110000000000000000011111111111111111110000000000­000000000011111111111111111111110000000000000011111111111111­111111111111110000000000000000011111111111111111110000000000­000000000011111111111111111111110000000000000011111111111111­111111111111110000000000000000011111111111111111110000000000­000000000011111111111111111111110000000000000011111111111111­111111111111110000000000000000011111111111111111110000000000­000000000011111111111111111111110000000000000011111111111111­111111111111110000000000000000011111111111111111110000000000­000000000011111111111111111111110000000000000011111111111111­111111111111110000000000000000011111111111111111110000000000­000000000011111111111111111111110000000000000011111111111111­111111111111110000000000000000011111111111111111110000000000­000000000011111111111111111111110000000000000011111111111111­

Répondre à komar

9

thepchou, le 19 jun 2007 à 13:32:34

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 ?

Répondre à thepchou

11

mam's, le 19 jun 2007 à 15:02:43
  • +1

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.

Répondre à mam's

12

thepchou, le 20 jun 2007 à 11:00:53
  • +1

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 !

Répondre à thepchou

13

thepchou, le 20 jun 2007 à 12:35:45
  • +1

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...

Répondre à thepchou

14

 mam's, le 21 jun 2007 à 13:33:25

Ben tout simplement, tu n'as qu'à passer le nom de l'extension dans l'url du lien qui corespond !

Répondre à mam's