Certainement une variable mal utilisée

Répondre
Keika
le 24/08/2006 à 23:31
Keika
salut

j'ai ce code :

$dir = opendir('./galeries') ;
while (false !== ($file = readdir($dir))) {

if(is_dir($file)) {
echo '<div><a href="'.$_SERVER['PHP_SELF'].'?var_pages=3&amp;'.$file.'" title=""><?php echo $dir ?></a></div>' ;
}

}}


mais rien à l'affichage...
si je print($file) ; j'ai l'affichage du contenu du dossier galeries, alors ou ca ne marche aps ?

merci

K.
Le PHP --> C'est dur !
Muxy
le 25/08/2006 à 02:00
Muxy
Alors c'est vraiment parce que je pense aider mais désolé si c'est pas ca ...

peut etre

...
echo '<div><a href="'.$_SERVER['PHP_SELF'].'?var_pages=3&amp;'.$file.'" title="">"'.$dir.'"</a></div>' ;


Enfin un echo dans un echo me parait bizarre..

Voilà
Débutant mais motivé !
Keika
le 25/08/2006 à 11:00
Keika
ooooooook !

l'a ca m'affiche quelque chose, j'ai des liens qui sont créés effectivement, mais vers les repertoires . (dossier actuels) et .. (dossier parent) qui ne me sont d'aucune utilité...

à croire que is_dir ne reconnait que ca comme dossier dans galeries alors que j'en ai d'autre..
Le PHP --> C'est dur !
Bzh
le 25/08/2006 à 22:26
Bzh
<?php

$dir = opendir('./galeries') ;


while ( $file = readdir( $dir ) ) {

if( is_dir( $file ) ) {

echo '<div><a href="'.$_SERVER['PHP_SELF'].'?var_pages=&dossier='.$file.'" title="">'. $file .'</a></div>' ;

}

}

?>


Voili !

Tu t'embrouille encore les pinceaux avec les balises <?php et ?> ...

Attention ...

Tchuss
Keika
le 26/08/2006 à 11:54
Keika
ca ne m'affiche toujours que les dossiers actuel et parent (.) et (..)

alors qu'avec ca :

$dir = opendir('./galeries') ;
while ( $file = readdir($dir)) {

if(!is_dir($file)) {
echo '<div><a href="'.$_SERVER['PHP_SELF'].'?var_pages=3&amp;dossier='.$file.'" title="">'.$file.'</a></div>' ;
}

}


Bon là il m'affiche tout ce que contient galeries.. mais je n'ai qu'a ne mettre que des dossiers et ca ira... c'est une solution qui ne me convient pas entierement mais au moins ca fonctionne...
Le PHP --> C'est dur !
moogli
le 26/08/2006 à 12:16
moogli
salut,

pour . et .. il faut les filtrer, donc deux conditions dans le if !

tu cherche à afficher quoi ?

si tu veut affciher que les répertoires il faut enlever le ! (la tu n'affiche que ce qui n'est pas un répertoire).
<?php
$dir = opendir('.') ;
while ( $file = readdir($dir)) {

if(is_dir($file) && $file !='.' && $file != '..') {
echo '<div><a href="'.$_SERVER['PHP_SELF'].'?var_pages=3&amp;dossier='.$file.'" title="">'.$file.'</a></div>' ;
}

}
?>

ce code ne m'affiche que les répertoires du répertoire considéré (ici . pour l'essai).

smiley
Il en faut peu pour être heureux !!!!!
Keika
le 26/08/2006 à 13:56
Keika
ok, ca fonctionne bien.

Donc je dois avoir un soucis de chemin !
l'architecture de mon site est:

galeries
pages
scripts
index.php
style.css

alors, bien entendu, j'affiche tout dans index.php mais le script ou j'ai placé ce code est dans le dossier scripts (affiché par un include()). Quand je mets le code de moogli, les dossiers galeries, pages, scripts s'affichent. Quand je change le chemin dans opendir (./galeries/ ou /galeries/) je n'ai rien qui s'affiche alors que j'ai des dossiers dans galeries...

Il doit considérer me chemin à prendre à partir du fichier ou les script est affiché (index.php) et non à partir du dossier ou le script est enregistré (dossier scripts)

voyez vous quel chemin je dois mettre.
Le PHP --> C'est dur !
moogli
le 26/08/2006 à 15:09
moogli
Après quelque essai et reflexion : ton code fonctionne parfaitement smiley

Depuis le début, on se focalise sur le opendir, mais celui ci fonctionne parfaitement (il suffit pour t'en convraincre de faire un var_dump($dir);).
Donc le problème vient d'ailleur => id_dir().

Pourquoi ?

Parce que lors du traitement du script tu est dans le répertoire / (puisse qu'a aucun moment tu ne change de répertoire) donc php chercher si un répertoire /$file existe, ce qui n'est évidemment pas le cas (met un simple echo $file.'<br>'; dans le while).
Donc utilise is_dir('galeries/'.$file) et le tour est jouer :).


tordu mais logique smiley

smiley
Il en faut peu pour être heureux !!!!!
Keika
le 26/08/2006 à 21:17
Keika
ok merci moogli, avec ca j'ai réussi a le faire fonctionner. maintenant il ne reconnait effectivement que les dossiers.

donc ca donne ceci à la fin :

<?php
$dir = opendir('./galeries/') ;
while ( $file = readdir($dir)) {

if(is_dir('./galeries/'.$file) && $file !='.' && $file != '..') {
echo '<div><a href="'.$_SERVER['PHP_SELF'].'?var_pages=3&amp;dossier='.$file.'" title="">'.$file.'</a></div>' ;
}
}
?>


facile pourtant... ^_^
Le PHP --> C'est dur !
Keika
le 08/09/2006 à 14:43
Keika
hop je remets ce post au gout du jour.

Alors voila, la fonction m'affiche toujours les dossiers, et correctement en local. Mon soucis est que sur le serveur distant (free) il ne m'affiche pas les dossiers par ordre alphabetique... auriez-vous une idée pour que ca sorte correctement ?

Merci

K.
Le PHP --> C'est dur !
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours