OUTIL "PARCOURIR" / CHOIX DE FICHIERS POUR FORMULAIRE

cs_najat Messages postés 3 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 22 avril 2003 - 22 avril 2003 à 20:13
cs_jacques-antoine Messages postés 79 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 22 mai 2017 - 11 mars 2013 à 09:30
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/13220-outil-parcourir-choix-de-fichiers-pour-formulaire

cs_jacques-antoine Messages postés 79 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 22 mai 2017
11 mars 2013 à 09:30
ave, dpitard
ce source m'a mis l'eau à la bouche : ça fait des jours que je cherche un truc similaire. Mon but est de, à partir d'un formulaire de saisie de pièces jointes, de récupérer le chemin complet du fichier à joindre et, bien sûr, son nom. Jusque là, je suis planté parce qu'aucun exemple de mail à pièce jointe, que j'ai pu pêcher ici ou là, n'aborde l'aspect de la récupération du chemin alors, quand on envoie le message avec juste le nom du fichier...

Bon, donc j'ai récupéré ton petit et je l'ai bidouillé à ma sauce, juste pour éviter les injures dues aux variables inconnues. Ouch! Je viens de voir la date des messages... Je suis un brin à la bourre.

Bref, après modifs, ça m'a l'air de coller sauf que :
- je n'arrive pas à parcourir les répertoires : je reste toujours scotché au même endroit (C:/), puisque les fichiers à joindre sont chez l'utilisateur, il doit pouvoir parcourir toutes ses arborescences,
- rien ne se passe quand je clique sur un nom, que ce soit un répertoire ou un fichier...

Est-ce que tu pourrais me dire où j'ai fait une connerie? Parce qu'il y en a forcément une...
Merci d'avance

J-A

Les fichiers :
**********************************************
le htm (non modifié sauf son nom)
=============================


Choix d'un fichier















=============================

**********************************************
le browser : j'ai aussi ajouté ce qu'il faut pour avoir une fenêtre plus grande, de façon à ce que le type apparaisse sur une seule ligne et que plus de lignes soient affichées.
=============================









large_fen = 700
haute_fen = 600
large_ecran = window.screen.width
haute_ecran = window.screen.height
px= (large_ecran - large_fen) / 2
py= (haute_ecran - haute_fen) / 2
self.resizeTo(large_fen,haute_fen)
self.moveTo(px,py)

theboubourse Messages postés 41 Date d'inscription mercredi 30 janvier 2008 Statut Membre Dernière intervention 6 mars 2008
5 févr. 2008 à 10:41
bonjour moi je souhaiterai juste pouvoir lire les fichier car on a la posibilité de sauvegardé.
j'ai fé un test sous easyPhp 1.8 et mon fichier word et modifié donc pas cool car le fichier normalement se trouve sur le serveur
si vs avé la solution merci
Beldom Messages postés 1 Date d'inscription jeudi 12 juillet 2007 Statut Membre Dernière intervention 12 juillet 2007
12 juil. 2007 à 11:15
Bonjour ;)
J'ai le même problème que Thomas84, et je peux vous assurer que mon serveur supporte le php, que je bosse bien dessus, etc ^^
En effet, je suis sur une appli en php et ce script correspond parfaitement à ce que je cherche à faire d'après ce que j'en ai lu.
Si il ya une solution, elle m'interesse, sinon, je vais me débrouiller :)
AlBud Messages postés 49 Date d'inscription mardi 18 juin 2002 Statut Membre Dernière intervention 19 décembre 2006
9 juin 2006 à 22:41
Salut,
très bon code c'est exactement ce que je cherchais, mais il ne marche pas bizarrement en local chez moi avec la config : easyphp 1.8 : apache 1.3.33 - php 4.3.10
j'ai déjà dû déclaré les variables car j'avais un message "non défini", mais en cliquant sur le bouton du browser la fenêtre s'ouvre mais le clic ne fonctionne pas, impossible d'aller dans un répertoire ou de choisir un fichier, la fenêtre ne se ferme pas.
Tout en bas j'ai le message "erreur sur la page" et quand j'active le déboggueur IE il me dit à la ligne 7 : chaîne non terminée
window.opener.document.forms["<? echo "$form"; ?>"].elements["<? echo "$textfield"; ?>"].value=choix;
??
Je ne vois pourtant pas d'erreur les seconds " sont inclus dans un code php
quelqu'un a t-il une solution car toujours testés sur le serveur c'est pas super.
Merci,
Ranx

à quand une maj permettant par exemple de faire un upload ??
cs_iubito Messages postés 629 Date d'inscription mercredi 3 juillet 2002 Statut Membre Dernière intervention 9 octobre 2006
18 juil. 2005 à 13:48
même réponse que sur l'autre script
http://www.phpcs.com/code.aspx?ID=13073
cs_thomas84 Messages postés 3 Date d'inscription lundi 18 juillet 2005 Statut Membre Dernière intervention 18 juillet 2005
18 juil. 2005 à 12:09
Bonjour,
voila j'aimerai parcourir un serveur pour choisir un fichier puis l'avoir dans mon formulaire, j'ai l'impression que c'est exactement ce que fait ce script, alors j ai telechargé le zip mais quand je clique sur un des trois boutons, la fenetre qui souvre contient du texte (le texte de browser.php)alors je sais pas si il faut modifier qqchose, si vous avez une soluce merci d'avance.
Garry01 Messages postés 8 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 12 octobre 2004
6 oct. 2004 à 15:44
bonjour je voudrai remanier votre script dans ce sens :

ouvrir une pop- up dans laquelle s'affiche le contenu du dossier - que lorsque le contenu dans la pop-up est sélectionné, ça retourne dans un champ texte le nom de l'objet sélectionné. (j'en suis là :

<HTML>
<HEAD>
<script language="JavaScript">
<!--
function Reporter(choix) {
window.opener.document.forms["<? echo $form; ?>"].elements["<? echo $textfield; ?>"].value=choix;
window.close();
}

//-->
</script>
</HEAD>

<?

function cmp($ar1, $ar2, $key)
{
return ( (strtoupper($ar1[$key]) > strtoupper($ar2[$key])) ? 1 : ( (strtoupper($ar1[$key]) == strtoupper($ar2[$key])) ? 0 : -1));
}

function trier($array, $critere)
{
$cmp = create_function('$a, $b', 'return cmp($a, $b, "'.$critere.'");');
uasort($array, $cmp);
return $array;
}

function relative_url($chemin,$base_root) {
return "/".str_replace($base_root,"",$chemin);
}

//si le chemin est vide, on prend le repertoire courant
if (!isset($chemin)) {
//on récupère le chemin du répertoire courant
//on remplace les "" par "/" pour éviter les soucis liés a Windows/Unix
$chemin = "./";
}

if (!isset($base_root)) {
$base_root=$chemin;
}

$action=" ";
if ($action!="") {
//on récupère tous les types à afficher
$types_affiches= explode("|", $action);
}

echo "<TITLE>".relative_url($chemin,$base_root)."</TITLE>";
echo "".relative_url($chemin,$base_root)."
";

//si l'action est la sélection de dossier on ajoute un lien de sélection
if ($action=="directory")
echo "Sélectionner ce dossier

" ;

//on ouvre le répertoire
$dir = opendir($chemin);
$typ array("Fichier","dir"> "Dossier","0");

echo "<TABLE BORDER=0 CELLSPACING=0 CELLPADING=0>\n<TR BGCOLOR=#CCCCCC><TD WIDTH=150></TD></TR>";


//le chemin du dossier père
$chemin_pere = strtr(dirname($chemin)."/","\","/");

//on parcourt les fichiers
$index = 0;
$tab=array();
while ($fichier = readdir($dir)) {

// DOSSIER PERE
if ($fichier == "..") {
//bloque si on est au max de l'arborescence (le répertoire de base)
if ($chemin != $base_root)
echo "<TR><TD COLSPAN=4> ..</TD>\n";
}
// DOSSIER FILS
elseif (is_dir($chemin.$fichier)) {
if ($fichier != ".") {
$tab[$index]["n"] = $fichier;
$tab[$index]["t"] = "dossier";
$tab[$index]["s"] = "";
$tab[$index]["d"] = filemtime($chemin.$fichier);
$index++;
}
}
// FICHIER
elseif (is_file($chemin.$fichier) ) {
$ext = strtolower(substr($fichier,strrpos($fichier,".")+1,strlen($fichier)-strrpos($fichier,".")-1));
//si l'extension correspond aux types affiches
if (($action!="" && in_array($ext,$types_affiches)) || ($action=="") || ($action=="directory")) {
if (strtoupper($ext) substr(strtoupper($fichier),1)) $ext "";
$tab[$index]["n"] = $fichier;
$tab[$index]["t"] = "fichier ".strtoupper($ext);
$tab[$index]["s"] = filesize($chemin.$fichier);
$tab[$index]["d"] = filemtime($chemin.$fichier);
$index--;
}
}
}

//tri par nom par défaut
$tri = ("");
$form = ("");
$filename = (" ");
$textfield = (" ");
if ($tri "") $tri "n";
$tab=trier($tab,$tri);

while (list($key,$ligne)=each($tab)) {
$fname=$ligne["n"];
$ftype=$ligne["t"];
$fext = strtolower(substr($fname,strrpos($fname,".")+1,strlen($fname)-strrpos($fname,".")+1));


if (is_dir($chemin.$fname)) echo "<TR><TD nowrap> $fname </TD><TD WIDTH=75 ALIGN=CENTER>".$ftype."</TD><TD></TD><TD WIDTH=200 ALIGN=RIGHT>"."</TD></TR>\n";

elseif (is_file($chemin.$fname))
if ($action!="directory") echo "<TR><TD nowrap> $fname </TD><TD WIDTH=75 ALIGN=CENTER>".$ftype."</TD><TD ALIGN=RIGHT>".number_format(($fsize/1000), 3, ","," ")." Ko</TD><TD WIDTH=200 ALIGN=RIGHT>".date("d/m/Y h:i:s",$fdate)."</TD></TR>\n";
else echo "<TR><TD nowrap>$fname </TD><TD WIDTH=75 ALIGN=CENTER>".$ftype."</TD><TD ALIGN=RIGHT>".number_format(($fsize/1000), 3, ","," ")." Ko</TD><TD WIDTH=200 ALIGN=RIGHT>".date("d/m/Y h:i:s",$fdate)."</TD></TR>\n";
}

?>

</HTML>

merci d'avance pour votre aide.
awap Messages postés 1 Date d'inscription mardi 24 août 2004 Statut Membre Dernière intervention 24 août 2004
24 août 2004 à 12:25
il me met plei d erreur du genre quil ne connai pas la variable tri et insidesuite bizarre non ???
cs_damienp Messages postés 3 Date d'inscription jeudi 4 avril 2002 Statut Membre Dernière intervention 2 juin 2004
2 juin 2004 à 20:45
ben je fais tourner ce script sous php4 sans problème. mets moi le messsage d'erreur ici. peut être que je peux faire qqc pour toi
tsuiy0 Messages postés 1 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 2 juin 2004
2 juin 2004 à 14:16
J'ai également bcp de variables non définies mais cela vient certainement du fait que ce script est à base php 3 et que je suis en Php 4 et des poussières (version récente).

Enfin ce ne sont que des notice !

Mais c'est dommage car de ce fait le script ne fonctionne pas ! Je plance dessus pour essayer de le faire marcher et je tiens au courant !
dpitard Messages postés 11 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 3 mai 2003
18 mai 2004 à 13:03
as-tu utilisé les fichiers du zip?
peux_tu me mettre les messages d'erreur affiché?
piedpierre Messages postés 29 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 20 février 2007
18 mai 2004 à 10:21
ola !! j'ai quinze milles erreurs de variables indéfinies...
tri in, textfield, form in ,image n t d ,
Lcoder Messages postés 1 Date d'inscription jeudi 26 février 2004 Statut Membre Dernière intervention 26 février 2004
26 févr. 2004 à 14:41
franchement...
TROP EXCELLENT ...merci
(ça va m eviter pas mal de boulot.)
cs_Oscar Messages postés 3 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 24 octobre 2003
14 janv. 2004 à 12:59
Yahhhrgl !
Ca fait 3 soirs que je bosse comme un ouf pour faire la même chose et je ne vois cette source qu'aujourd'hui ! #@%$&!!!
Alors je vais suivre les conseils d'utilisation des commentaires, je vais rester calme et regarder tout ça d'un oeil attentif !

Oscar.
linxnew Messages postés 1 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 10 juin 2003
10 juin 2003 à 13:52
Felicitation pour se source je vais l'analyser et essayer d'y mettre ma sauce je suis debutant en PHP mais c'est pas grave :=) J'espere que j'y arriverai :=0 ?

ciao et bonne continuation pour le code a iubito , dpitard, DHKOLD
cs_iubito Messages postés 629 Date d'inscription mercredi 3 juillet 2002 Statut Membre Dernière intervention 9 octobre 2006
4 mai 2003 à 22:26
lol :-D
et dire que je suis dans la ville où y'a le + de bar au mètre carré !
c'est vraiment des ivrognes au Puy en Velay

non, non croyez pas que c pour ça que je viens d'y enménager :-DDD
dpitard Messages postés 11 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 3 mai 2003
4 mai 2003 à 19:54
function servir_une_biere_fraiche($volume) {
if ($volume<25) echo "petit joueur!
elseif ($volume>1000) echo "risque d'ivresse !";

$frigo=open_frigo();
$bouteille=prendre_bouteille($frigo);
$verre=prendre_verre();

if (volume(verre)<$volume) echo "liquide renversé!"
servir($verre,$bouteille);

}
dpitard Messages postés 11 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 3 mai 2003
4 mai 2003 à 19:46
function servir_une_biere_fraiche($volume) {


}
cs_iubito Messages postés 629 Date d'inscription mercredi 3 juillet 2002 Statut Membre Dernière intervention 9 octobre 2006
4 mai 2003 à 19:11
pas testé ta nouvelle version, je ferai ça bientôt
perso de mon côté chui en pleine forme et j'ai des idées

on peut créer un tablo qui permet de regrouper plusieurs types de fichiers sous un même nom générique.
Exemple : mid, mod, m3u, mp3 = type "Audio Winamp", une seule icône (celle de winamp elle est zolie :-) ) pour ces 4 fichiers.
Et si l'utilisateur met un fichier audiowinamp.php dans un répertoire, ça fait une action spéciale (du genre ça propose d'écouter le fichier)
et pour faire encore mieux, je prévois que si l'utilisateur fait un fichier audiowinampglobal.php ça proposera une action pour tous les fichiers du répertoire (du genre ça mettra une icône winamp à côté du nom du répertoire, qui permettra d'envoyer une playlist du répertoire dans winamp)...
bref si vous captez pas, attendez que le code vienne, et si c'truc là ça marche ça peut être hyper puissant et personnalisable à max ;-)
exemples d'actions :
- sur des fichiers images, afficher dans une popup
- sur un répertoire entier, faire un zip et le mailer...
bref au grès des imaginations de chacun
perso, j'implémenterai seulement quelques actions.

autre truc, je prévoi aussi que l'utilisateur personnalise facilement ce que la page fera au click sur un nom de fichier : télécharger, insérer le nom dans un formulaire...

si j'y arrive, ça sera un truc de ouf !
j'ai déjà mis en place un système d'upload, mais pas testé sur serveur distant (free), seulement en local.

bref que du bonheur ;-)))
j'ai pas encore trouvé la fonction servir_une_biere_fraiche et j'ai un peu de mal à l'implémenter lol :-D
dpitard Messages postés 11 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 3 mai 2003
4 mai 2003 à 02:04
nouvelle MAJ, ça marche correctement chez moi. feedback si prob
dpitard Messages postés 11 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 3 mai 2003
26 avril 2003 à 19:28
je l'ai dit ("basé sur le code de DHKold" mais je n'ai pas pensé à mettre l'url. Tout le mérite de l'explorateur revient à DHKold, je n'ai fait qu'ajouter les fonctions javascript.
cs_iubito Messages postés 629 Date d'inscription mercredi 3 juillet 2002 Statut Membre Dernière intervention 9 octobre 2006
26 avril 2003 à 13:00
t'aurait pu dire aussi de qui ça vient le code, non?
http://www.phpcs.com/article.aspx?Val=345
cs_iubito Messages postés 629 Date d'inscription mercredi 3 juillet 2002 Statut Membre Dernière intervention 9 octobre 2006
26 avril 2003 à 12:47
j'oubliais aussi, je v m'inspirer de quelques codes qui trainent sur phpcs pour afficher les idtags des mp3, ou encore pour uploader un fichier...
Que du bonheur !
cs_iubito Messages postés 629 Date d'inscription mercredi 3 juillet 2002 Statut Membre Dernière intervention 9 octobre 2006
26 avril 2003 à 12:41
c'est génial ton truc, bon ça mérite des améliorations mais ça marche nikel !

d'ailleurs je l'ai débuggé et amélioré, je posterai la source un de ces jours, il me reste encore kèk trucs à faire.
J'ai fait :
- optimisation du code
- possibilité de cacher certains fichiers (notamment ceux du script browse.php, répertoire ico...)
- possibilité d'interdire de remonter plus haut qu'un répertoire
c-à-d que ça fasse apparaître le répertoire du browse.php comme la racine d'un site, ainsi on ne peut aller voir que dans les sous-répertoires ;-)
- affichage des gifs/jpg quand la taille du fichier est < à n Ko, et les dimensions < à x et y pixels, sinon un p'tit bouton pour voir l'image dans une popup
- meilleure gestion du css
- beaucoup + d'icônes !
- des noms corrects aux variables !! boudiou $ggg ça veut pas dire grand chose !!!
il me reste à faire
- prévisualisation des fichiers audio, flash...
- améliorer le tri par nom quand il y a des accents
- ...
dpitard Messages postés 11 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 3 mai 2003
23 avril 2003 à 20:44
voir fichier zip fourni
cs_najat Messages postés 3 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 22 avril 2003
22 avril 2003 à 20:13
je cherche le code mais il ne figure pas sur cette page, veuillez donc l'inserer s'il vous plait
Rejoignez-nous