IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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 :

Petit soucis avec un tableau


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 759
    Points : 184
    Points
    184
    Par défaut Petit soucis avec un tableau
    Bonjour,

    Je m'essaye aux tableaux. J'ai un formulaire qui envoie des fichiers. Et j'affiche le nom plus quelques informations sur ces fichiers dans la même page.
    Je voudrais afficher le nombre total de fichier présent dans le répertoire mais je n'y arrive pas, avec count. Et, plus difficile, je voudrais afficher le poids total de ces fichiers.
    Chaque info (nom, poids, droits) est dans un tableau différent, car j'ai essayé de faire un seul tableau pour le tout, mais je n'arrivais pas à accéder ensuite aux différentes variables dedans (je ne récupérais que des lettres des noms de fichier par exemple.

    Donc, c'est un peu le bazar mon code, avec tous ces tableaux...

    Code php : 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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    <?php
     
    echo 'Fichiers dans le dossier ' . $dossier . ' : ' . '<br /><br />';
     
    $i = 0;
    $n = 0; 
     
    foreach (new DirectoryIterator($dossier) as $fileInfo) {
     
    $nom = $fileInfo->getFilename();
    $fichierS = $fileInfo->getPath().'/'.$fileInfo->getFilename();
    $tailleF = $fileInfo->getSize();
    $Tm = GetSizeName($tailleF);
     
    if($fileInfo->isDot()) continue;
     
    $result = count($nom);
    echo 'Total : ' . $nom;
     
    $n++;
    $octal_perms = substr(sprintf('%o', $fileInfo->getPerms()), -4);
     
     
    $parametres1 = array($nom);
    $s=0;
    foreach($parametres1 as $param)
    {
    $array[$param] = $value[$s++];
    } 
     
    $parametres3 = array($fichierS);
    $s=0;
    foreach($parametres3 as $param)
    {
    $array[$param] = $value[$s++];
    } 
     
    $parametres4 = array($tailleF);
    $s=0;
    foreach($parametres4 as $param)
    {
    $array[$param] = $value[$s++];
    } 
     
    $parametres5 = array($octal_perms);
    $s=0;
    foreach($parametres5 as $param)
    {
    $array[$param] = $value[$s++];
    } 
     
    $parametres6 = array($Tm);
    $s=0;
    foreach($parametres6 as $param)
    {
    $array[$param] = $value[$s++];
    } 
     
    echo $n . ' Nom : ' . '<a href='.$chemin.'/'.$nom.' target="_blank"> '.$nom.'</a>' . ' / Droits : ' . $octal_perms . ' / Taille : ' . $Tm . '<a href="suppr.php?fic='.$nom.'"><img src="delete.jpg"></a>' . "<br>\n";    
     
    }
     
    ?>

    Si quelqu'un peu m'aider pour le count, et pour le total du poids des fichiers svp ?
    Merci d'avance,

    ANDRE ANi

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Déjà si tu écrivais ton code proprement en indentant et en donnant des noms explicites et cohérents à tes variables ($fichierS ? $Tm ? $tailleF ?) tu t'y retrouverais mieux

    Le tableau ici n'est pas utile mais pour l'exercice :

    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
    foreach (new DirectoryIterator($dossier) as $fileInfo) {
    	if (!$fileInfo->isDot()) {
    		$files[] = array(
    		'nom'=>$fileInfo->getFilename(),
    		'chemin'=>$fileInfo->getPath(),
    		'taille'=>$fileInfo->getSize(),
    		'Tm'=>GetSizeName($taille),
    		'octal_perms'=>substr(sprintf('%o', $fileInfo->getPerms()), -4)
    		);
    	}
    }
     
    echo '<p>' . count($files) . ' fichiers dans le dossier ' . $dossier . '</p>';
     
    $n = 0;
    foreach ($files as $value) {
    	echo ++$n . ' Nom : ' . '<a href='.$value['chemin'].'/'.$value['nom'].' target="_blank"> '.$value['nom'].'</a>' . ' / Droits : ' . $value['octal_perms'] . ' / Taille : ' . $value['Tm'] . '<a href="suppr.php?fic='.$value['nom'].'"><img src="delete.jpg"></a>' . "<br>\n";   
    }

  3. #3
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 759
    Points : 184
    Points
    184
    Par défaut
    Oui, il serait tant que j'y fasse attention, pour commencer sur de bonnes bases, merci du conseil ;-)

    Au départ, je n'avais pas fait cela en tableau, mais j'ai supposé que ça pourrait être plus pratique pour accéder aux variables. Et ton tableau est beaucoup mieux que ce que j'avais réussi à faire, merci !

    Par contre, la variable Tm (c'était pour taille en mega), convertie dans une fonction, ne fonctionne plus correctement, je n'ai plus que l'unité et plus le chiffre... Bizarre puisque rien a changé de ce côté la.

    Et je n'arrive pas à faire la somme, même en gardant la taille en octets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo '<p>' . 'Taille totale : ' . array_sum($value['taille']) . '</p>';

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Non le tableau n'apport rien :
    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
     
    $n = 0;
    $taille_totale = 0;
     
    foreach (new DirectoryIterator($dossier) as $fileInfo) {
    	if (!$fileInfo->isDot()) {
    		$nom = $fileInfo->getFilename();
    		$chemin = $fileInfo->getPath();
    		$taille = $fileInfo->getSize();
    		$taille_Mo=>GetSizeName($taille);
    		$octal_permission = substr(sprintf('%o', $fileInfo->getPerms()), -4);
                    $taille_totale += $taille;
     
                    echo ++$n . ' Nom : ' . '<a href='.$chemin .'/'.$nom.' target="_blank"> '.$nom.'</a>' . ' / Droits : ' . $octal_permission . ' / Taille : ' . $taille_Mo . '<a href="suppr.php?fic='.$nom.'"><img src="delete.jpg"></a>' . "<br>\n";   
    	}
    }
     
    echo '<p>' . $n . ' fichiers dans le dossier ' . $dossier . ' pour ' . GetSizeName($taille_totale) . '</p>';

  5. #5
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 759
    Points : 184
    Points
    184
    Par défaut
    Bon, autant pour moi. Il me semblait plus simple ensuite de manipuler les variables mais vu ton code, c'est sûr que ça n'apporte rien...
    Difficile quand on débute de savoir qu'elle est la meilleur solution parfois.

    Par contre, tjs le soucis avec GetSizeName qui ne fonctionne plus. Je ne comprend pas pourquoi. Le require est tjs la, le fichier tjs au même endroit. Il fonctionnait bien dans mon premier code.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    A quoi ressemble la fonction ?

  7. #7
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 759
    Points : 184
    Points
    184
    Par défaut
    C'est un code que j'ai trouvé sur le net, fichier GetSizeName.php :

    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
     
    <?php
     
    // convertir taille fichiers 
     function GetSizeName($octet){
        $unite = array(' octet',' Ko',' Mo',' Go');
     
        if ($octet < 1000) {
            return $octet.$unite[0];
        } else {
            if ($octet < 1000000) {
                $ko = round($octet/1024,2);
                return $ko.$unite[1];
            } else {
                if ($octet < 1000000000) {
                    $mo = round($octet/(1024*1024),2);
                    return $mo.$unite[2];
                } else {
                    $go = round($octet/(1024*1024*1024),2);
                    return $go.$unite[3];
                }
            }
        }
    }
     
    ?>

  8. #8
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 759
    Points : 184
    Points
    184
    Par défaut
    En enlevant cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $taille_Mo=>GetSizeName($taille);
    GetSizeName sur $taille_totale fonctionne.
    Donc, c'est bon pour moi,même si j'aurais aimé comprendre pourquoi ça ne fonctionne pas avec taille_Mo.
    Je passe en résolu.
    Merci pour tout ;-)

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est "=", comme sur les autres lignes, pas "=>".

  10. #10
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 759
    Points : 184
    Points
    184
    Par défaut
    Je n'avais pas remarqué ça... Désolé...
    Je passe en résolu.

    Merci beaucoup pour tout !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] petit souci avec un tableau croisé dynamique
    Par AAffy dans le forum Excel
    Réponses: 7
    Dernier message: 13/04/2014, 12h54
  2. Petit soucis avec un tableau de structures
    Par OVpex dans le forum Débuter
    Réponses: 4
    Dernier message: 22/04/2013, 15h51
  3. (bash) petit souci avec un tableau
    Par lrgtk dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 25/08/2010, 05h41
  4. Réponses: 10
    Dernier message: 26/10/2006, 12h25
  5. [DEBUTANT] petits soucis avec un prgm de chat
    Par LechucK dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2004, 16h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo