PHP, affichage dossiers, pb \ et /
Résolu
redyom
Messages postés
19
Date d'inscription
Statut
Membre
Dernière intervention
-
redyom -
redyom -
Bonjour tout le monde,
J'ai récupéré un bout de code car j'ai besoin d'afficher une arborescence avec mes dossiers, mes sous-dossiers et mes fichiers (et qu'on puisse ouvrir les fichiers).
Le code fonctionne mais les liens vers les fichiers ne fonctionnent pas car ça me met un slash au lieu d'un antislash ???
Là on peut voir le slash juste avant le "coucou.php" :)
c:\program files\easyphp1-8\www\tests\Dossiers\Trois dossier/coucou.php
Donc impossible d'ouvrir mes fichiers en cliquant sur ces liens.
J'ai essayé avec str_replace mais comme il s'agit de remplacer un / par un \ ça marche pô.
Voici mon code
Si quelqu'un peut m'aider ça serait super sympa, je galère encore un peu en php :)
J'ai récupéré un bout de code car j'ai besoin d'afficher une arborescence avec mes dossiers, mes sous-dossiers et mes fichiers (et qu'on puisse ouvrir les fichiers).
Le code fonctionne mais les liens vers les fichiers ne fonctionnent pas car ça me met un slash au lieu d'un antislash ???
Là on peut voir le slash juste avant le "coucou.php" :)
c:\program files\easyphp1-8\www\tests\Dossiers\Trois dossier/coucou.php
Donc impossible d'ouvrir mes fichiers en cliquant sur ces liens.
J'ai essayé avec str_replace mais comme il s'agit de remplacer un / par un \ ça marche pô.
Voici mon code
<?php function scan($rep) { $dir = opendir($rep); if($dir) { while (false !== ($f = readdir($dir))) { if(is_file($rep.$f)) { echo '<a href="'.$rep.$f.'"><span class="fichier">|__'.$f.'</span></a><br />'; } if(is_dir($rep.$f) && $f!=".." && $f!="." ) { echo '<ul><span class="dossier">'.$f.'</span><br />'; $new_dir=realpath($rep.$f); scan("$new_dir/"); } } } echo "</ul>"; } scan("./"); ?>
Si quelqu'un peut m'aider ça serait super sympa, je galère encore un peu en php :)
A voir également:
- Redyom
- Affichage double ecran - Guide
- Easy php - Télécharger - Divers Web & Internet
- Windows 11 affichage classique - Guide
- Problème affichage fenêtre windows 10 - Guide
- Expert php pinterest - Télécharger - Langages
12 réponses
Euh en fait j'avai pas vu mais c'est encore plus chaint que ça :)
Quand il liste les fichiers qu sont à la racine le lien est bon :
par exemple
http://127.0.0.1/tests/concatenation.php
Mais pour tous les autres il me met le lien en partant de c:\program files etc etc...
Bref, donc en gros il faudrait que je puisse avoir un lien de type http://127.0.0.1/dossier/fichier.php pour chaque fichiers de tous mes sous dossiers
Voilà :)
Quand il liste les fichiers qu sont à la racine le lien est bon :
par exemple
http://127.0.0.1/tests/concatenation.php
Mais pour tous les autres il me met le lien en partant de c:\program files etc etc...
Bref, donc en gros il faudrait que je puisse avoir un lien de type http://127.0.0.1/dossier/fichier.php pour chaque fichiers de tous mes sous dossiers
Voilà :)
Dans le navigateur, tu remarqueras que ce n'est pas des antislashs mais bel et bien des slash. Essaye d'ouvrir un fichier avec ton navigateur (fichier->ouvrir) et tu te retrouveras avec une adresse du genre :
file:///C:/Documents%20and%20Settings/Administrateur/Mes%20documents/maths/parcoursLargeur.htm
file:///C:/Documents%20and%20Settings/Administrateur/Mes%20documents/maths/parcoursLargeur.htm
Salut,
bah oui justement je m'en rend compte :)
Comment ça se fait qu'il y ait des "problèmes" avec les slash et antislash, ça devrait pas être QUE des slash normalement si c'est des liens web ?
bah oui justement je m'en rend compte :)
Comment ça se fait qu'il y ait des "problèmes" avec les slash et antislash, ça devrait pas être QUE des slash normalement si c'est des liens web ?
Le problème ne vient pas à mon avis des slash et antislash.
Si tu arrives à ouvrir les fichiers qui sont dans le dossier test et pas les autres... Mauvaise gestion du PHP? Tu as du installer un logiciel qui "comprends le PHP". (logiciel type wamp). Hé bien avec WAMP, il ne gèrera sur mon PC que les fichiers PHP mis dans le répertoire adéquate.
echo "<img src='photos/ordinateur.jpg'>"
revient en fait chez moi à aller à C:\wamp\www\site\Photos\ordinateur.jpg
Et évidemment, le programme ne fera comme si rien n'existe en dessous du dossier www
[edit] Dés que j'essaye effectivement d'atteindre un fichier qui n'est plus dans le sous-dossier www, et je ne peux pas.
Ton http://127.0.0.1 doit déjà correspondre, lui aussi, à un dossier sous lequel tu ne peux atteindre aucun fichier avec des commandes du style echo "<img src='../../../ordinateur.jpg'>".
Par contre, si je met un lien direct echo "<img src='c:/ordinateur.jpg'>"; la oui sa marche <- Peut-être revoir ton code dans ce sens.
Si tu arrives à ouvrir les fichiers qui sont dans le dossier test et pas les autres... Mauvaise gestion du PHP? Tu as du installer un logiciel qui "comprends le PHP". (logiciel type wamp). Hé bien avec WAMP, il ne gèrera sur mon PC que les fichiers PHP mis dans le répertoire adéquate.
echo "<img src='photos/ordinateur.jpg'>"
revient en fait chez moi à aller à C:\wamp\www\site\Photos\ordinateur.jpg
Et évidemment, le programme ne fera comme si rien n'existe en dessous du dossier www
[edit] Dés que j'essaye effectivement d'atteindre un fichier qui n'est plus dans le sous-dossier www, et je ne peux pas.
Ton http://127.0.0.1 doit déjà correspondre, lui aussi, à un dossier sous lequel tu ne peux atteindre aucun fichier avec des commandes du style echo "<img src='../../../ordinateur.jpg'>".
Par contre, si je met un lien direct echo "<img src='c:/ordinateur.jpg'>"; la oui sa marche <- Peut-être revoir ton code dans ce sens.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re-salut :)
Je crois que j'ai réussi, avec ce code là ça fonctionne
Je vais faire d'autres test mais j'ai bon espoir que ça marche enfin :)
Je crois que j'ai réussi, avec ce code là ça fonctionne
<?php function scan($repert) { $dir = opendir($repert); if($dir) // suite au commentaire { while (false !== ($f = readdir($dir))) //lecture du contenu ,prend en compte si le fichier est nommé 0 et n'arrete la boucle merci pour cette remarque très judicieuse :) { if(is_file($repert.$f)) { //echo '<span class="fichier">|__'.$f.'</span><br />'; echo '<a target="_blank" href='.$f.'>'.str_replace(".pdf","",str_replace("_"," ",$f)).'</a><br>'; } if(is_dir($repert.$f) && $f!=".." && $f!="." ) // on regarde si il ya des sous répertoires si oui on recommence la fonction. { echo '<ul><span class="dossier">'.$f.'</span><br />'; $new_dir=realpath($repert.$f); ///chemin absolu du répertoire scan("$new_dir/"); //fonction récurrente qui prend le chemin absolu du dossier et le scanne à nouveau. } } } echo "</ul>"; } //Utilisation de la fonction scan('./'); echo '<br><br>OK'; ?>
Je vais faire d'autres test mais j'ai bon espoir que ça marche enfin :)
Arrrrggghhh, toujours pas résolu!!!!
Je pensai que j'y étais mais non, toujours pas :)
J'arrive enfin à afficher tout ce que je veux MAIS... les liens ne comportent pas les sous dossiers! Je n'ai plus de probleme de slash ou antislash, la liste des fichiers contenus dans les sous-dossiers est OK mais le lien zape le sous-dossier.
Voici le code que j'ai maintenant :)
Au final ça m'affiche :
Dossier
fichier.pdf <== lien cliquable
Autre_dossier
autre_fichier.pdf <== lien cliquable aussi
Mais les liens zapent les sous-dossiers : j'ai ça comme lien http://127.0.0.1/Monsite/22551A2RT/ATTESTATIONS/fichier.pdf
Alors que je devrai avoir http://127.0.0.1/Monsite/22551A2RT/ATTESTATIONS/Dossier/fichier.pdf
Rholala j'aurai pas du essayer tous ces codes différents je m'y retrouve plus :)
Je pensai que j'y étais mais non, toujours pas :)
J'arrive enfin à afficher tout ce que je veux MAIS... les liens ne comportent pas les sous dossiers! Je n'ai plus de probleme de slash ou antislash, la liste des fichiers contenus dans les sous-dossiers est OK mais le lien zape le sous-dossier.
Voici le code que j'ai maintenant :)
<?php function scan($repert) { $num_cont= mysql_fetch_array(mysql_query("SELECT cont_num, cont_pol, pol_nom, pol_id, comp_id, comp_nom, cont_comp FROM contrat, police, compagnies WHERE pol_id = cont_pol AND comp_id = cont_comp AND cont_id='".$_SESSION['extranetUser_contrat']."'")) or die (mysql_error()); $dir = opendir($repert); if($dir) // suite au commentaire { while (false !== ($f = readdir($dir))) //lecture du contenu ,prend en compte si le fichier est nommé 0 et n'arrete la boucle merci pour cette remarque très judicieuse :) { if(is_file($repert.$f)) { //echo '<span class="fichier">|__'.$f.'</span><br />'; echo '<a target="_blank" href='.$num_cont['cont_num'].'/ATTESTATIONS/'.$f.'>'.str_replace(".pdf","",str_replace("_"," ",$f)).'</a>'; } if(is_dir($repert.$f) && $f!=".." && $f!="." ) // on regarde si il ya des sous répertoires si oui on recommence la fonction. { echo '<ul><span class="dossier">'.$f.'</span><br />'; $new_dir=realpath($repert.$f); ///chemin absolu du répertoire scan("$new_dir/"); //fonction récurrente qui prend le chemin absolu du dossier et le scanne à nouveau. } } } echo "</ul>"; } //Utilisation de la fonction ?> <?php scan($num_cont['cont_num'].'/ATTESTATIONS/'); echo '<br><br>OK'; ?>
Au final ça m'affiche :
Dossier
fichier.pdf <== lien cliquable
Autre_dossier
autre_fichier.pdf <== lien cliquable aussi
Mais les liens zapent les sous-dossiers : j'ai ça comme lien http://127.0.0.1/Monsite/22551A2RT/ATTESTATIONS/fichier.pdf
Alors que je devrai avoir http://127.0.0.1/Monsite/22551A2RT/ATTESTATIONS/Dossier/fichier.pdf
Rholala j'aurai pas du essayer tous ces codes différents je m'y retrouve plus :)
Dans
href='.$num_cont['cont_num'].'/ATTESTATIONS/'.$f.'>
$f représente bien juste le nom du fichier ou j'ai mal compris ton code?
Si tu remplaces ce morceau par
href='.$num_cont['cont_num'].'/ATTESTATIONS/'.$repert.$f.'>'
Sa fait n'importe quoi je pense mais vu que $f représente seulement le nom du fichier (selon moi, mais je suis pas sur), c'est normal qu'il n'y ait pas de sous-dossier
href='.$num_cont['cont_num'].'/ATTESTATIONS/'.$f.'>
$f représente bien juste le nom du fichier ou j'ai mal compris ton code?
Si tu remplaces ce morceau par
href='.$num_cont['cont_num'].'/ATTESTATIONS/'.$repert.$f.'>'
Sa fait n'importe quoi je pense mais vu que $f représente seulement le nom du fichier (selon moi, mais je suis pas sur), c'est normal qu'il n'y ait pas de sous-dossier
Oui $f c'est le nom de fichier, mais justement j'ai essayé en mettant $repert.$f mais le lien devient :
http://127.0.0.1/Monsite/22551A2RT/ATTESTATIONS/c:\program !!!!!
Donc ouai ça fait n'importe quoi, ce qu'il faudrait c'est que je puisse différencier mes dossier/sous-dossiers et mes fichiers? que ce soit pas dans la même variable.
http://127.0.0.1/Monsite/22551A2RT/ATTESTATIONS/c:\program !!!!!
Donc ouai ça fait n'importe quoi, ce qu'il faudrait c'est que je puisse différencier mes dossier/sous-dossiers et mes fichiers? que ce soit pas dans la même variable.
Oui.
Une suggestion me vient en tête mais que tu n'es pas du tout obligé de suivre : dans un tableau avec un petit truc du genre $repert[$i]
Une suggestion me vient en tête mais que tu n'es pas du tout obligé de suivre : dans un tableau avec un petit truc du genre $repert[$i]
Oué je crois que je vais essayer quelque chose comme ça. Mais là ça commence à me prendre la tête, je vais me faire une petite fonction maison pour faire tout ça selon mon bon désir :) :) Je posterai mon code quand j'aurai réussi :)
En tout cas merci beaucoup Archeus01 :)
Bonne journée
En tout cas merci beaucoup Archeus01 :)
Bonne journée
PHP, affichage dossiers, pb \ et /
redyom, le vendredi 2 novembre 2007 à 10:42:33
bonjour, je suis trés intéréssé par ton code j'ai eu bcp de probléme aussi pour afficher mes rép et sous rep tu peux m'expliquer stp comment ta fait si sa te dérange pas
redyom, le vendredi 2 novembre 2007 à 10:42:33
bonjour, je suis trés intéréssé par ton code j'ai eu bcp de probléme aussi pour afficher mes rép et sous rep tu peux m'expliquer stp comment ta fait si sa te dérange pas
Salut!
Je suis plus là dessus depuis longtemps mais au final j'ai utilisé ce code là :
https://codes-sources.commentcamarche.net/
voilà :)
Je suis plus là dessus depuis longtemps mais au final j'ai utilisé ce code là :
https://codes-sources.commentcamarche.net/
voilà :)