Besoin d'aide pour decrypter script php

Résolu
debutant -  
 debutant -
bonjour , j'ai du mal a interpréter deux ligne du code php ci dessous
je mettrais en gras a coter de la ligne ce que je ne comprend pas

<?php

$dir = isset($_POST['dir']) ? $_POST['dir'] : '';
$fic = isset($_POST['fic']) ? $_POST['fic'] : '';
$dir = (!empty($dir)) ? $dir : '.';

if(!empty($fic)) {
if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
if($file == $fic) {

echo '<br/>le fichier est trouvé<br/>';

}
}

closedir($handle);
}
}
?>
<form action="<?php $_SERVER['PHP_SELF'];?>" method="POST" >
<p><label for="dir">répertoire :</label><input id="dir" type="text" name="dir" /></p>
<p><label for="fic">fichier :</label><input id="fic" type="text" name="fic" /></p>
<p><input type="submit" value="go" /></p>
</form>
Configuration: Windows XP
Firefox 3.0.10

4 réponses

  1. 123pierre Messages postés 53 Statut Membre 2
     
    Hello,

    $_POST['dir']
    c'est ce que tu as recuperer du formulaire de la page precedente.
    $_POST recupere les element d'un formulaire postée en POST (Contrairement a GET)
    ['dir']: C'est la valeure rentrée dans le champs appelée 'dir'

    (false !== ($file = readdir($handle))):
    $handle est une variable qui a ete cree plus haut et qui contient un fichier externe $dir. ($dir doit l'adresse du fichier)
    > en gros la boucle est ouverte tant que le fichier ouvert $dir peut etre lu..

    A+,

    Pierre
    0
  2. juanou Messages postés 145 Statut Membre 58
     
    En ce qui concerne la première portion de code mise en gras, je me demande si "débutant" n'avait pas plutôt un problème pour interprérer la structure avec point d'interrogation.

    On appel ça un "opérateur ternaire".
    Tu en trouveras une bonne présentation à cette page : PHP - Les structures conditionnelles

    Mais pour résumer
    $dir = isset($_POST['dir']) ? $_POST['dir'] : '';
    revient à faire
    if ( isset($_POST['dir']) ) $dir = $_POST['dir'] ;
    else $dir = '';
    0
  3. juanou Messages postés 145 Statut Membre 58
     
    et quant à while (false !== ($file = readdir($handle))), on peut peut-être entrer dans le détail :

    !== signifie "différent, et de type différent".
    C'est un peu comme != (qui signifie "différent de"), à ceci près qu'on considère que 0 est différent de false et de null.
    Ca évite parfois des confusions.

    $file = readdir($handle) retourne le contenu du dossier $handle dans $file, mais un fichier à la fois.
    La première fois que tu fais $file = readdir($handle), $file prendra la valeur du premier fichier, la deuxième fois du deuxième, etc. Et quand tous fichiers auront été passés en revue, $file prendra false pour valeur.
    la structure while (false !== ($file = readdir($handle))) signifie donc que la boucle while va se répéter en attribuant à chaque fois à $file la valeur d'un des fichiers du dossier $handle, jusqu'à ce que tous les fichiers de $handle aient été examinés.

    Voilà.
    Ca te semble clair ?
    0
  4. debutant
     
    bonjour,

    oui c'est clair je vous remercie de votre aide
    a bientôt
    0