Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Incrémentation spécifique dans un WHILE


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Incrémentation spécifique dans un WHILE
    Bonjour,

    Ceci étant ma première tentative sur forum et après avoir galéré dans tous les sens pour trouver une réponse depuis 2 mois, je me dois de m'en remettre à vous pour me dire où je fais erreur dans mon code.
    En effet, dans le but d'afficher le contenu de mon répertoire dans un tableau de page HTML avec tri et regroupement alphabétique des dossiers contenus, j'ai voulu incrémenter une variable [$i], malheureusement sans succès.. Mon $i reste irrémédiablement égal à 0 malgré le $i++;
    De plus la différenciation entre les [$lettre] initiales et la lettre de référence à vérifier ne se fait pas.
    Chaque entrée est traitée comme un tableau différent.
    Pourriez-vous m'indiquer l'erreur que je fais.

    Je vous joint le code concerné :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    // TABLEAU_SOCIETES
    function table_soc($titre) {
    $i = 0;
    $ref_lettre = '0';
    $dir = $titre;
    $dossier = opendir($dir);
    while ($fichier = readdir($dossier)) {
    			if(($fichier != '.') && ($fichier != '..')) {
    			$rep_name = substr(strrchr($dir,'/'),1);
    			$lettre = substr($rep_name,0,1);
    			$rep = $dir.'/'.$fichier;
    			$id_file = $lettre.$i;
    				if ($ref_lettre !== $lettre) {
    					$ref_lettre = $lettre;
    					echo '</tr><td class="section" id="'.$id_file.'">'.$lettre.'</td></tr><tr>';
    					$i = 0;
    					}
    				if ($i == 5) {
    					echo '</tr><tr>';
    					$i = 0;
    					}
    			$id_file = str_replace(' ','_',$rep_name).$lettre.$i;
    			echo '<td class="nds"><a href="'.$dir.'/'.$fichier.'" target="navig">'.$rep_name.'</a></td>';
    			$i++;
    			}
    	}
    }


    Merci d'avance pour votre intérêt et vos éventuelles réponses

  2. #2
    Modérateur

    A aucun moment tu ne gère le fait que substr peut te retourner false.
    C'est surement ce qui se produit dans ton cas, ce qui fait que tu tombe toujours dans un des tes if qui remet $i à 0
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Nouveau Candidat au Club
    Bonjour grunk,

    Je n'ai à priori pas de retour d'erreur sur les substr puisque je récupère bien les nom de repertoire et les initilaes.
    Mais comme le script liste un dossier contenant des sous-dossiers et les fichiers à l'intérieur de ceux-ci il me fait un array par sous-dossier au lieu de me faire un array contenant tous les sous-dossiers

    Résultat
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Array
    (
        [0] => 1000MERCIS.php
    )
    Array
    (
        [0] => 4PMC.php
    )
    Array
    (
        [0] => ACOLAD.php
    )
    Array
    (
        [0] => AC_GROUPE.php
    )
    Array
    (
        [0] => CENTRIC.php
    )
    Array
    (
        [0] => CGI_CONSULTING.php
    )
    Array
    (
        [0] => CONSORT_NT.php
    )
    Array
    (
        [0] => DELOITTE.php
    )
    Array
    (
        [0] => EIFFAGE.php
    )

    au lieu de :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Array
    (
        [0] => 1000MERCIS.php
        [1] => 4PMC.php
        [2] => ACOLAD.php
        [3] => AC_GROUPE.php
        [4] => CENTRIC.php
        [5] => CGI_CONSULTING.php
        [6] => CONSORT_NT.php
        [7] => DELOITTE.php
        [8] => EIFFAGE.php
    )

    Merci toutefois de ton intérêt pour mon problème

  4. #4
    Membre expert
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function test($titre) {
      if(is_dir($titre)){
        $scanned_dir = array_diff(scandir($titre), array('..', '.'));
        echo '<pre>';
        print_r($scanned_dir);
        echo '</pre>';
      }
      else{
        echo $titre. 'n est pas un répertoire accessible.';
      }
    }
    Mes billets de blog : un billet = une problématique précise
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

###raw>template_hook.ano_emploi###