Se connecter / S'enregistrer
Votre question

Amelioration de script

Tags :
  • Script
  • Programmation
Dernière réponse : dans Programmation
a b L Programmation
16 Août 2008 19:04:25

bonjours alors voila
je voudrais faire un script, pour lister le contenu d'un répertoire et proposée sont contenue au téléchargement .

Donc voila le script actuel :
<?php
$dir = opendir("dl");
while($file = readdir($dir)) {
echo "<a href='dl/$file'>$file</a><br />";
}
closedir($dir);
?>


mais je voudrais exclure les fichier qui comporte moins de 7 caractères
( xxxx.xxx avec leur extension ou 4 si il y a la possibilité de pas les compter )

Autres pages sur : amelioration script

a b L Programmation
18 Août 2008 11:42:16

UP
18 Août 2008 11:45:33

salut,
avec la fonction strlen() tu peut le faire.
  1. <?php
  2.  
  3. $dir = opendir("dl" );
  4.  
  5. while($file = readdir($dir)) {
  6.  
  7. $files = strlen($file);
  8. if ( $files > 7 )
  9. {
  10.  
  11. echo "<a href='dl/$file'>$file</a><br />";
  12. } else {}
  13. }
  14. closedir($dir);
  15. ?>

Voila,
si jamais il y a une erreur dit le moi
Contenus similaires
a b L Programmation
18 Août 2008 12:22:00

Parfais ,une autre petit question ...
donc je voudrais faire un affichage dans un tableau...
mais comme faire pour faire en sort que mon tableau comporte 3 colonnes
voila le script actuel
<h1>Telechargement</h1>
<table width="auto" border="2" cellspacing="0" align="center">
<?php
$dir = opendir("dl" );
while($file = readdir($dir)) {
$files = strlen($file);
if ( $files > 7 )
{
echo "<tr><td>$file</td><td><a href='dl/$file'><img src='install.png' width='48' height='48' /></a></td></tr>";
} else {}
}
closedir($dir);
?>
</table>

Ps:Mais t'es script entre les balise fixed et /fixed au lieux de code ...

Merci
18 Août 2008 18:09:10

tu peut mettre sa sur ton serveur et me passer le lien pour avoir un aperçu pour aller plus vite ....
a b L Programmation
19 Août 2008 11:58:17

Mais bien sure ...
je te file l'adresse en mp , veux pas trop que sa ce divulgue ...
19 Août 2008 15:02:43

Pour faire en 3 colonnes, tu dois dans un premier temps compter le nombre d'élement dans ton tableau et le divisier par 3 (puis arrondi à l'entier).

Ensuite tu fait 3 boucles qui font 3 fois la taille obtenue en oubliant pas de ne garder en mémoire à combien tu étais arriver lors de la boucle précédente.
19 Août 2008 19:57:18

voila
<h1>Telechargement</h1>
<table width="auto" border="2" cellspacing="0" align="center">
<?php
$dir = opendir("dl" );
while($file = readdir($dir)) {
$files = strlen($file);
if ( $files > 7 )
{
echo "<tr><td>$file</td><td><a href='dl/$file'><img src='install.png' width='48' height='48' /></a></td><td>la 3eme colone</td></tr>";
} else {}
}
closedir($dir);
?>
</table>
19 Août 2008 23:48:57

tu peux retirer le else {} il est totalement inutil.

sebjsp tu es sur que ton code marche ? non car ca semble pas super logique à première vu ...
a b L Programmation
20 Août 2008 13:18:18

a non , je vois ce que sebjsp a a fais , mais c'est pas sa ....

je voudrais qu'il y est 3 "doublecolones" ...

_______________________________________
| Nom | logo | Nom | logo | Nom | logo |


un truc de ce genre ....
avec une colone vide entre mais sa , c'est facile a faire ... ya pas de soucis ....

donc je commence la modification
voila le nouveau code :
<?php
$dir = opendir("dl" );
while($file = readdir($dir)) {
$files = strlen($file);
$nbfiles = count($files > 7);
$nbfilespc = ceil($nbfiles / 3) ;
echo "<p class='style1'>$nbfiles</p>";
echo "<p class='style1'>$nbfilespc</p>";
if ( $files > 7 )
{
echo "<tr><td><span class='style2'>$file</span></td><td><a href='dl/$file'><img src='install.png' width='48' height='48' /></a></td></tr>";
} else {}
}
closedir($dir);
?>

Le problème c'est que 1 est retourne a chaque fois , et 2fois plus que le nombres de fichier dans le dossier ...



Mais je pence a une autre solution ... je regarde si je peut cree le script vite fais ...
20 Août 2008 13:38:13

  1. <?php
  2. $dir = opendir("dl" );
  3. while($file = readdir($dir)) {
  4. $files[] = $file;
  5. }
  6. closedir($dir);
  7. $nb_file = count($files);
  8. $nb_file_by_col = ceil($nb_file/3);
  9.  
  10. $start=0;
  11. //on fait la premiere colonne
  12. echo "<table><tr><td>";
  13. for($i=$start;$i<$nb_file_by_col;$i++) {
  14. echo "<tr>titre : {$files[$i]}</tr>";
  15. }
  16. $start=$i;
  17. echo "</td>";
  18. echo "<td>";
  19. for($i=$start;$i<($nb_file_by_col*2);$i++) {
  20. echo "<td>titre</td><td>{$files[$i]}</td>";
  21. }
  22. $start=$i;
  23. echo "</td>";
  24. echo "<td>";
  25. for($i=$start;$i<($nb_file_by_col*3);$i++) {
  26. echo "<tr>titre : {$files[$i]}</tr>";
  27. }
  28. echo "</td></tr></table>"
  29.  
  30. ?>


Bon j'ai fait le code dans le textarea mais l'idée est là et en théorie un peu de debug et ça devrait fonctionner.
20 Août 2008 13:40:44

Bon en fait je viens de penser mais c'est pas exactement ce que tu veux car là je fais à priori la mise en page en ligne et non en colonne. Il faut dire faire les colonnes ainsi c'est un peu plus chiant.

Avec ma technique il serait préférable de faire des <div> qui flotte pour faire les colonne, dans la logique du code xHTML c'est plus simple.
a b L Programmation
20 Août 2008 13:58:16

finalement si on réfléchie autrement , on obtient :

<table width="auto" border="2" cellspacing="0" align="center">
<tr>
<?php
$fl = 0 ;
$dir = opendir("dl" );
while($file = readdir($dir))
{
$files = strlen($file);
if ( $files > 7 )
{
if( $fl < 3 )
{
$fl++;
echo "<td><span class='style2'>$file</span></td><td><a href='dl/$file'><img src='install.png' width='48' height='48' /></a></td>";
}
else
{
echo "</tr>";
$fl = 0 ;
echo "<tr>";
}
}
else
{
}

}
closedir($dir);
?>

et sa marche
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS