Aide - Recherche - Membres - Calendrier
Version complète : Téléchargement dynamique en PHP
Forum Développeur - Administration serveur, programmation et base de données > Programmation > PHP
franquis
Bonjour et (encore) merci de votre attention, voila mon probleme, après avoir posté auparavant à ce sujet, j'ai une nouvelle requête:

dans une page .php, j'ai une liste de fichier que j'aimerais partager grâce au téléchargement.
J'aimerais que lorsque l'utilisateur clique sur le fichier de son choix, un popup s'ouvre, avec ecrit dedans du genre:
"Vous voulez telecharger $name...
Sa taille est de $taille
Cliquez ici ($url) si le telechargement ne commence pas"

Voila, j'ai quelques idées pour que ca marche, comme par exemple, cree un fichier popupdl.php, dans lequel je met ce que j'ai au dessus...
et je met kom liens pour mon fichier: javascript:popupcentree("popupdl.php",800,600,"menubar=no,scrollbars=no,statusbar=no")

ms comment faire pour que $name soit remplacé par le nom du fichier?
je sais qu'il faut utiliser les fonctions filetype, filesize et filemtime mais comment agencé tout ca?
même si je sais que pondre le code tout préparer ne sera pas tres educatif, essaye de faire comme vous le pouvez, car je débute en php et, même si le code est pondu, je pourrais essayer de le pigé tout seul!
merci!

ps: je pense a une autre chose: le lien du fichier doit il etre du genre http://toto.com/popupdl.php?name=1 par exemple??

Merci encore!!! biggrin.gif
franquis
J'ai un peu avancé dans mon problème, voila ce que j'ai fait: sur ma page de liens, j'ai mis sur chaque fichier:
CODE
<a href="javascript:OuvrirFenetre('/includes/popupdl.php?id=6','popup','width=300,height=220')"
avec un id different pour chaque fichier... dans ma page popudl.php j'ai mis:
CODE
<?php    if (isset($_GET["id"])) $id = $_GET["id"];             else $id = 0;          switch ($id) {          case 1 :          $nom_du_fichier = 'nom du fichier';          $url = 'http://toto.com/fichier.exe'         ; break;          case 2 : $nom_du_fichier = 't';          $url = ''         ; break;                    default : echo("Une Erreur est survenue");          break;         }          ?>
en remplissant evidement les $filename et les $nom_du_fichier... dans le contenu de mon popup, je met:
CODE
<?php echo $nom_du_fichier ?>
et:
CODE
<?php echo $nom_du_fichier . ': ' . filesize($url) . ' octets';?>
pour afficher la taille du fichier... Tout d'abord, est ce que c'est la meilleur façon de procéder? Sinon, une derniere question: je voudrais faire un lien dans ce popup vers le fichier, du genre: "si le telechargement ne commence pas, cliquez ici" avec un lien dynamique vers "ici" vers $filename... comment faire? Comment faire egalement pour lancer automatiquement le telechargement vers $url...? (il s'agit d'un forcage de téléchargement?) http://franquis.free.fr/?page=4 si vous voulez voir par vous même (seul le 1er dl marche)[/code] Merci de votre attention! ++
Ldo
perso à la lace d'un switch j'utiliserai un tableau et même encore mieux, un fichier ini pour gérer les fichiers, comme ça pas besoin d'editer le fichier php à chaque ajout/supprission de fichier en téléchargement tu créer un fichier download.ini dedans tu met :
CODE
[1] path = http://toto.com/fichier.exe name = toto [2] path = http://tata.com/fichier.exe name = tata ;comme ca tu as juste a rajouter 3 lignes dans ce fichier quand tu veut ajouter des fichiers en telechargement
et enfin dans ton fichier php, tu met [quote] <?php $files ); if(!empty([/color])) { [/color]); [/color]); [/color]//sinon tout va bien, on peu afficher le bazard en utilisant $files[$_GET['id']]['path'] et $files[$_GET['id']]['name'][/color]} [/color] [/quote] tu peut bien sur ajouter d'autre info dans le fichier ini smile.gif
franquis
Merci pour ton astuce, mais j'ai du mal a l'integrer: voici mon fichier download.ini:
CODE
[1]

path = http://franquis.free.fr/res/soundwork/deftones.mp3

name = Deftones - My Own Summer



[2]

path = http://franquis.free.fr/res/soundwork/nirvaje.mp3

name = Nirvana - Smell Like Team Spirit



[3]

path = http://franquis.free.fr/res/soundwork/hey joe.mp3

name = Jimi Hendrix - Hey Joe



[4]

path = http://franquis.free.fr/res/soundwork/little wing.mp3

name = Jimi Hendrix - Little Wing



[5]

path = http://franquis.free.fr/res/soundwork/led zep + solo.mp3

name = Led Zeppelin - Stairway to Heaven



[6]

path = http://franquis.free.fr/res/soundwork/manu chao.mp3

name = Manu Chao - Me Gustas tu



[7]

path = http://franquis.free.fr/res/soundwork/ben harper.mp3

name = Ben Harper - Excuse me Mister



[8]

path = http://franquis.free.fr/res/soundwork/

name = Muse - Sunburn



[10]

path = http://franquis.free.fr/res/soundwork/Franquis-autres.mp3

name = Franquis - Autres



[11]

path = http://franquis.free.fr/res/soundwork/demence acoustique.mp3

name = D&eacute;mence Acoustique



[12]

path = http://franquis.free.fr/res/soundwork/manu intro.mp3

name = Intro de Manu



[13]

path = http://franquis.free.fr/res/soundwork/Mimix - 1.mp3

name = Mimix &amp; Franquis 1 (Live :d)



[14]

path = http://franquis.free.fr/res/soundwork/Mimix - 2.mp3

name = Mimix &amp; Franquis 2 (Live :d)



[15]

path = http://franquis.free.fr/res/soundwork/portishead2.mp3

name = Portishead - Glory Box + Solo



[16]

path = http://franquis.free.fr/res/soundwork/taping.mp3

name = Tapping (Van Halen)



[17]

path = http://franquis.free.fr/res/soundwork/song to the death.mp3

name = Song to the Death



[18]

path = http://franquis.free.fr/res/soundwork/swing traditionnel.mp3

name = Swing Traditionel        


et voici mon fichier .php
CODE


<html>

<head>

<link href="../style.css" rel="stylesheet" type="text/css" />

<title></title>

</head>





<?php

$files = parse_ini_file('download.ini'); // c'est ici que se situe la ligne 11, et

//l'erreur par la meme occasion

if(!empty($_GET['id']))

{

   if (!array_key_exists($_GET['id'], $files)) exit('Aucun fichier ne correspond à cet id');

   if (!file_exists($files[$_GET['id']]['path'])) exit('Erreur, fichier introuvable, contactez l\'admin');

 else { $files[$_GET['id']]['path'];

     $files[$_GET['id']]['name'];}}

?>



<body>

<div class="ArticleTitle">The Franquis's Space Area - T&eacute;l&eacute;chargement <?php echo $name ?></div>

<div class="ArticleContent">

<?php $obj = readdir(path);

if(is_file($obj)); $resfic = fopen($path, "r+");

?>

 <p><strong><?php echo $name ?></strong> est en cours de t&eacute;l&eacute;chargement... Merci de patienter.</p>

 <p>Si rien ne se passe, cliquez <a href="http://franquis.free.fr/res/soundwork/" target="_blank">ici</a></p>





   <strong>Taille</strong>:<?php echo filesize(path) . ' octets';?>





   <p align="center"><a href="javascript:window.close();">Fermer la fenetre</a></p>

</div>

<div class="ArticleFooter">&nbsp;</div>



</body>

</html>



et voici le message d'erreur que j'obtiens:

QUOTE

Warning: Error parsing download.ini on line 59 in /var/www/free.fr/1/1/franquis/includes/popupdl.php on line 11
Aucun fichier ne correspond à cet id


Voila, si vous pouviez m'aider car je ne situe pas l'erreur...
ps: je vous rassure tout de suite, ce ne sont pas les fichiers originals, ce sont juste des reprises par moi et des potes...
escargot
Salut, comme vous pouvez le voir je suis tout nouveau sur ce forum et pas encore dans le PHP Embarassed
En fait, je cherche une réponse au sujet de la réalisation d'un site qui permettrait de mettre en ligne des fichiers d'objets 3D qu'il serait possible de télécharger grace à une vignette d'apperçu
J'ai 5600 objets que je souhaiterais mettre à la disposition des internautes en les classant par catégories et sous catégories
Avec si possible une lissibilité sur les ajouts réguliers que je fais, afin que les memebres puissent voir les nouveaux objets dispos

Afin de vous montrer et vous faire comprendre le besoin, voici le lien vers mon site actuel :
http://escargot06.free.fr/AC3D/index.htm
Comme vous pourrez le voir, les objets sont groupés dans des archives ce qui ne facilite par leurs MàJ, l'ajout d'objets m'oblige soit à créer une nouvelle archive (et c'est vite le bor... dans les tris), soit à grossir celles qui sont présentes mais dans ce cas les "téléchargeurs" ce retrouvent obligés de reprendre ce qu'ils ont déjà
J'ai chercher sur ce forum quelque chose du même genre mais je n'y est trouvé que des astuces sur les galeries d'images Confused rien sur la possibilité de lier une imagette à un fichier portant le même nom mes pas la même extention
Je place ici mon premier post parceque le sujet ouvert par franquis est asser proche de mon pb
Avez vous des conseils sur le sujet
D'avance merci
Ldo
avant pour repondre a franquis (mille excuse je n'avais pas vu ta réponse)

l'erreur de parsing est dû au fait des caractère spéciaux
met tes texte name entre guillemet

[4]
path = http://franquis.free.fr/res/soundwork/little wing.mp3
name = "Jimi Hendrix - Little Wing"


pour escargot maintenant, sans connaissance de base en php, ca va être dur
et puis sans etre compliqué, c'est surtout long a faire et a expliquer ...
escargot
Merci Ldo smile.gif
Ce n'est ni le courage ni l'envie qui me manque :roll:
Mais avant de commencer je cherche un point de départ pas trop loin de mon but :arrow: je ne cherche pas à créer un forum de discution mais un "centre de téléchargement" d'objets et de groupes d'objets biggrin.gif
Et visiblement, à part des site "professionnels" y a pas grand chose en explication sur le net :cry:
Le site que je souhaite réaliser ne sera pas commerciale, tout comme celui que j'ai déjà, je cherche juste à le rendre plus facilement administrable et beaucoup plus lisibles pour les visiteur laugh.gif
Du coup, toute indication ou conseil est vraiment le bien venu tongue.gif
Si vous avez des liens vers d'autres site qui dévelopent le sujet en français, vu qu'ici ce n'est visiblement pas trop votre tasse de thé, et que comme tu le dis, ce n'est certainement pas simple ni à comprendre ni à expliquer à un vrai nul dans ce domaine :wink:
escargot
QUOTE

pour escargot maintenant, sans connaissance de base en php, ca va être dur
et puis sans etre compliqué, c'est surtout long a faire et a expliquer ...

A ce sujet, et pour ce que je souhaite réaliser, que faut-il que je lise :?:
Les manuels sont nombreux, le choix est difficile :?

Au fait, désolé franquis d'avoir squatter ton post, mais ce que j'y est lu me semble très intéressant :wink:
Ldo
bon je tente l'explication en esperant que tu comprenne lol

etant donné que tu as un grand nombre d'image (5600 si j'ai bien compris)
le mieux a mon avis, c'est de s'affranchir d'une interface d'administration avec upload et tout le bastringe

avec un peu de rigeur, on peu faire des truc tres bien, et trés simplement.

pour les catégorie, tout peut se gérer avec des repertoires sur le ftp

par exemple, sur ton ftp tu créer un repertoire
images/
dedant tu créer d'autre repertoires au nom de tes catégories
images/divers
images/meuble/bois
images/meuble/plastic
images/bouteille
....

dans ces repertoires, tu va y mettre chaque image et chaque fichier a telecharger
par exemple
meuble-1.png
meuble-1.zip
c'est important qu'ils aient le même nom

ensuite avec un petit script, tu va lister le contenu des repertoires à la recherche d'image, les afficher et puis proposer le téléchargement

le plus magique dans tout cas, c'est qu'avec 3 fonctions php tu as fini biggrin.gif
t'as juste besoin de glob() foreach() et echo
bon j'embelie un peu la vérité car en réalité il y a quelque test de sécurité important a ajouter, mais en gros c'est tout

pour l'administration, ca revient juste a créer de nouveaux répertoire, uploader, déplacer, effacer des fichiers


voila pour un petit système simple et efficace, seul inconvenient, "pas" de possibilité de lister les derniers ajouts
j'ai mit pas entre guillement car on pourrait le faire en utilisant une fonction récursive qui regarderait la date de chaque fichier pour garder les plus récent, mais avec 6000 fichiers ca va etre beaucoup trop gourmand en ressource...

aprés tu peut aussi te lancer dans des truc plus compliqué, mais faut les compétences et le temps...
escargot
tongue.gif Ldo
Visiblement je ne souhaite rien de plus compliqué smile.gif
Ca à l'air simple, très simple et ça répond en grande partie à mon envie !!
De plus, pour les nouveauté il suffit de créer un répertoire spécifique et de mettre une copie des fichiers dans l'arborescence du site :idea:
En gros, ce que tu me propose c'est de mettre tout simplement l'arborescence des objets de mon logiciel en ligne, en y ajoutant simplement les imagettes biggrin.gif
Je pose la question bêtement, mais le type de fichier importe peu :?:
Du jpg :arrow: png et o2c :arrow: zip
Par contre il semble qu'il faut qu'il n'y est que ces deux type de fichier :?:

"t'as juste besoin de glob() foreach() et echo" :?:
Je trouve ça ou :?: je sais, j'abuse :oops:

Tu va te moquer, mais je viens d'installer PHP et MSql, EasyPHP et une galerie de photo en PHP et franchement, va falloir que je passe mon week-end dessus pour comprendre comment utiliser ça :oops:
Du coup, ce que tu propose me semble beaucoup plus résonnable :wink:
escargot
Encore une question (j'ai poster cette demande dans 8 forum et tu est la seule bonne âme à m'avoir donner une réponse tongue.gif désolé pour toi :wink: )

Je suppose que pour que tout cela fonctionne il faut que les noms de fichiers soit compatible "web", donc sans espace, accents.... :cry:
Si oui, c'est ça qui va être le plus dur pour moi :roll:
Mais un petit soft comme AntRnomer devrait me filer un sacré coup de main tongue.gif
Ldo
QUOTE

Je pose la question bêtement, mais le type de fichier importe peu :?:  
Du jpg :arrow: png et o2c :arrow: zip
Par contre il semble qu'il faut qu'il n'y est que ces deux type de fichier :?:  

non tu peut metre d'autres fichiers, ca ne devrait pas poser du pbm du moment que le fichier image ET le fichier de téléchargement sont présent et qu'il portent le même nom
pour les format de fichier, niveau image pour une question poid ca risque fort d'etre jpg, ensuite pour le fichier de téléchargement a toi de voir ce que tes visiteur prefèrent ...


QUOTE

\"t'as juste besoin de glob() foreach() et echo\" :?:  
Je trouve ça ou :?: je sais, j'abuse :oops:

tu trouvera toutes les fonctions ainsi que leur description dans la doc php http://fr.php.net/manual/fr/ mais pas forcement tres comprehensible pour un neophyte
pour le système de galerie, tu trouvera un debut de code sur mon blog ---> http://dwef.12h26.com/17-galerie-image-simple.htm
la fonction que tu va devoir faire ressemble beaucoup à celle qui est présentée la bas.

QUOTE

Tu va te moquer, mais je viens d'installer PHP et MSql, EasyPHP et une galerie de photo en PHP et franchement, va falloir que je passe mon week-end dessus pour comprendre comment utiliser ça :oops:  
Du coup, ce que tu propose me semble beaucoup plus résonnable :wink:

a toi de voir quelle solution tu prefère
utiliser une galerie deja prete comporte des avantages, tu aura probablement possibilité d'avoir les derniers ajouts, possibilité de laisser des commentaires.... et bien d'autres fonctions
mais peut etre pas forcément la possibilité de télécharger un autre fichier

enfin a toi de décider vers quoi tu veut aller smile.gif
escargot
tu trouvera toutes les fonctions ainsi que leur description dans la doc php http://fr.php.net/manual/fr/ mais pas forcement tres comprehensible pour un neophyte

C'est vrai :cry:
Mais bon, faut bien que je fasse des effort :wink:
J'ai vu le lien sur ton site avec le code pour la génération automatique des pages contenants des images, ainsi que la ligne qui renseigne le code sur les extentions à chercher :arrow: avec ça il est effectivement possible de trouver n'importe quel type de fichier portant le même nom que l'imagette tongue.gif

Vu qu'il n'y as pas d'exemple, ce code génère t'il une sorte d'arborescence afin de naviguer facilement dans les répertoires :?:
J'ai regarder hier soir et mon site devrait contenir au final une bonne cinquantaine de niveaux :shock:
Des exemples, ça existe :?:
escargot
J'ai lancer la page avec le code trouvé sur ton site, le sablier tourne depuis 1/2 heure et toujours rien d'affiché :cry:
Le fait d'avoir des sous répertoires le bloque visiblement :twisted:
franquis
Merci Ldo! Tu es mon héros! voila 3 semaines que je me cassais la tête! ++ love wink.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2009 Invision Power Services, Inc.