cathy9999
Messages postés68Date d'inscriptiondimanche 6 janvier 2013StatutMembreDernière intervention10 décembre 2023
-
2 juil. 2007 à 15:37
cathy9999
Messages postés68Date d'inscriptiondimanche 6 janvier 2013StatutMembreDernière intervention10 décembre 2023
-
11 juil. 2007 à 12:00
Bonjour,
Dans un formulaire qui a un champ qui permet d'uploader plusieurs fichiers, j'aimerais mettre un bouton "inserer" a coté de celui ci pour qu'il puisse selectionner le nom de l'image prête à être uploader, et que ce nom soit inserer dans la zone textarea. ou un glisser deposer.
Est ce possible? si oui comment faire? si non quel solution proposez vous?
J'ai déja mon champ upload et qui charge mes fichiers grace a mn bouton envoyer.
Quand je clique sur le bouton upload, ca me marque le chemin comme ceci C:\DocumentsandSettings\image1.jpg
et je recherche a faire un bouton inserer qui quand on cliquera dessus, prendre la valeur image1.jpg et ira l'inserer dans ma textarea avec les crochets <!-- / message -->
merci
cathy9999
Messages postés68Date d'inscriptiondimanche 6 janvier 2013StatutMembreDernière intervention10 décembre 2023 5 juil. 2007 à 15:45
Ma synthaxe pour traiter les champs est celle ci, elle marchait avant mais mainteannt que j'ai mofidier avec la fonction que vous m'avez faite, elle beugue et je ne vois pas ou ! et je n'arrive toujours pas a afficher le nom de l'image grrr ! ya t'il un pont pas loin que je me jette lol??
if($nom_fic!='') {
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg'); //verifie si le fichier a une bonne extension
if(!in_array( substr(strrchr($_FILES['fichier_'.$i]['name'], '.'), 1), $extensions_ok )) {
echo "Le fichier ".$nom_fic." n'est pas un fichier au format PNG, GIF, JPG ou JPEG.";
}
else {
$nom_dest = strtr($nom_fic, //enleve tout les accents
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$nom_dest = strtolower(str_replace(' ','',$nom_dest)); //enleve les espaces
cathy9999
Messages postés68Date d'inscriptiondimanche 6 janvier 2013StatutMembreDernière intervention10 décembre 2023 5 juil. 2007 à 15:47
et oui je le traite differement le premier
function ajout()
{
(...) //Bouton inserer nom image var b=document.createElement("input");
b.type="button";
b.value="inserer nom image";
b.onclick=function()
{ var text = document.getElementById('fichier_'+num).value;
var fichier = text.substr(text.lastIndexOf('\\')+1); //LastIndexOf recuperes le dernier ""
document.getElementById('textarea').value+= '\n';
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 5 juil. 2007 à 16:17
>>
for($i= 1; $i<=count($_FILES); $i++) {
je n'ai pas mis ça ? si ?
c'est plutôt for ( $n=0; $n<count($_FILES['fic']['name']) ;$n++ )
enfin... $i ou $n et 0 ou 1 faudrait voir
;-))
mais surtout count($_FILES['fic']['name'])
>>
et oui je le traite differement le premier
ben.. faut pas ;-))
ou alors ajouter la fonction onclick comme dans ajout() !
le plus simple c'est d'appeler ajout() même pour le 1er, tout simplement.
if($nom_fic! ='') {
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg'); //verifie si le fichier a une bonne extension
if(!in_array( substr(strrchr($_FILES['fichier_'.$i]['name'], '.'), 1), $extensions_ok )) {
echo "Le fichier ".$nom_fic." n'est pas un fichier au format PNG, GIF, JPG ou JPEG.";
}
else {
$nom_dest = strtr($nom_fic, //enleve tout les accents
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$nom_dest = strtolower(str_replace(' ','',$nom_dest)); //enleve les espaces
je n'ai pas regardé de près ça !
enlever pour les tests ? sauf si tu es sûre ( cathy, c'est bien une nana ? sinon sûr ).
cathy9999
Messages postés68Date d'inscriptiondimanche 6 janvier 2013StatutMembreDernière intervention10 décembre 2023 5 juil. 2007 à 16:27
C'est ma synthaxe que je vous ai marqué, celle qui marchait avant que je modifie tout lol
Oui cathy c'est bien moi !
ou alors ajouter la fonction onclick comme dans ajout() !
le plus simple c'est d'appeler ajout() même pour le 1er, tout simplement.
> ce n'est pas d'ajouter un champ qui me pose probleme, mais de récuperer le nom de l'image
j'ai traité differament le premier champ qui récupère le nom, des autres
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 6 juil. 2007 à 06:10
>>
C'est ma synthaxe
pas correcte.
>>récuperer le nom de l'image
document.getElementById("fichier_"+num).value par exemple.
>>j'ai traité differament le premier champ qui récupère le nom, des autres
faut pas.
et en informatique, faut pas être trop impatient...
ce n'est pas toujours simple. j'ai souvent mis des jours et des jours avant
de résoudre un problème... parfois des semaines, voire plus ( pas pour
des problèmes de syntaxe )
il a fallu contourner, faire les choses autrement "en attendant",
et continuer, malgré tout, à développer le projet !
cathy9999
Messages postés68Date d'inscriptiondimanche 6 janvier 2013StatutMembreDernière intervention10 décembre 2023 6 juil. 2007 à 09:25
Comment dois je traiter le premier champ alors je comprend pas
si je met :
b.onClick=document.getElementById("fichier_"+num).value
cela ne fonctionne pas!
si je met la fonction ajout dans le bouton, cela ajoute un champ alors que je veux juste inserer le nom
var num=0;
function ajout()
{ var i=document.createElement("input");
i.type="file";
i.id="fichier";
i.name="fichier[]";
var d=document.createElement("div");
d.appendChild(i);
document.getElementById( 'divFichiers' ).appendChild(d);
var b=document.createElement("input");
b.type="button";
b.value="inserer nom image";
b.onClick=document.getElementById("fichier_"+num).value
b.width="120";
var c=document.createElement("input"); // ajout du bouton pour supprimer
c.type="button";
c.value="Supprimer"; //nom du bouton
c.onclick=function() { //lors du clique, appel de la fonction qui suit
this.parentNode.style.display="none"; //suppresion d'un champ input
this.parentNode.innerHTML=""; }
c.width="81"; //Taille du bouton
d.appendChild(b);
d.appendChild(c);
num++;
}
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 6 juil. 2007 à 09:44
b.onClick=document.getElementById("fichier_"+num).value
ça ne peut pas fonctionner... onclick=ça doit être une fonction .
regarde comment on fait sur le bouton "supprimer" ( dans le script que tu postes )
<hr />
Cordialement Bul [mon Site] [M'écrire] <hr />
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 6 juil. 2007 à 09:46
>>si je met la fonction ajout dans le bouton, cela ajoute un champ alors que je veux juste inserer le nom
ben oui... mais tu as déjà fait voir ce qu'il fallait faire
pour en extraire ce que tu veux. applique le dans la fonction.
cathy9999
Messages postés68Date d'inscriptiondimanche 6 janvier 2013StatutMembreDernière intervention10 décembre 2023 6 juil. 2007 à 09:47
var num=0;
function ajout(){
var b=document.createElement("input");
b.type="button";
b.value="inserer nom image";
b.onClick=function() {
var text = document.getElementById('fichier_'+num).value;
var fichier = text.substr(text.lastIndexOf('\\')+1); //LastIndexOf recuperes le dernier ""
document.getElementById('textarea').value+= '\n';
}
}
[<gras>javascript:void(ajout()); Ajouter un champ]
Donc si j'ai tout bien compris ce que vous me dites, j'ai fais ainsi mais tjrs rien lol
je suis désolé de vous embêter...
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 6 juil. 2007 à 10:17
>>je suis désolé de vous embêter...
pas du tout, sinon il y a longtemps que je ne répondrais plus.
mais je ne veux tout vous faire, tout cuit.
ça ne vous servirait à rien.
quand ça fonctionnera vous pourrez dire : je l'ai fait.
fonction ajout
mais où est donc le reste ? createElement du div, du input file, les appendChild(...); ?
s'il n'y a que cela, c'est normal.
vous devez ajouter ce que vous nous postez ici à ce qui existe déjà dans la fonction
( création du div, de l'input file ) avec en plus un d.appendChild(b) .
juste avant le appendChild du div
>>
[javascript:void(ajout()); Ajouter un champ]
pourquoi le lien dans le div ?
mais pourquoi pas ? mais aussi : pas testé.
cathy9999
Messages postés68Date d'inscriptiondimanche 6 janvier 2013StatutMembreDernière intervention10 décembre 2023 6 juil. 2007 à 11:05
Tout marche, sauf au niveau du bouton inserer nom, je pense que cela vient du bouton : "onClick"
J'ai mis tout le code qui pose problème en dessous, et je ne vois pas où ca bloque.
var num= 0;
function ajout()
{ var i =document.createElement("input");
i.type= "file";
i.id="fichier_"+num;
i.name="fichier[]";
var d =document.createElement("div");
d.appendChild(i);
document.getElementById( 'divFichiers' ).appendChild(d);
var b= document.createElement("input");
b.type="button";
b.value="inserer nom image";
b.onclick="inserer_nom('"+num+"')";
b.width="120";
d.appendChild(b);
var c =document.createElement("input"); // ajout du bouton pour supprimer
c.type="button";
c.value="Supprimer"; //nom du bouton
c.onclick=function() { //lors du clique, appel de la fonction qui suit
this.parentNode.style.display="none"; //suppresion d'un champ input
this.parentNode.innerHTML=""; }
c.width="81"; //Taille du bouton
d.appendChild(c);
num++;
}
function inserer_nom(num)
{ var text = document.getElementById("fichier_"+num).value;
var fichier = text.substr(text.lastIndexOf('\\')+1); //LastIndexOf recuperes le dernier ""
document.getElementById('textarea').value+= '\n';
}
cathy9999
Messages postés68Date d'inscriptiondimanche 6 janvier 2013StatutMembreDernière intervention10 décembre 2023 6 juil. 2007 à 11:40
Au final j'ai fais comme vous m'avez dis, mais l'insertion du nom beugue encore, je pense que ça vient soit des variables ou carément de la fonction inserer_nom
<hr />
<hr />
var num=0;
function ajout()
{ var i=document.createElement("input");
i.type="file";
i.id="fichier_"+num;
i.name="fichier[]";
var d=document.createElement("div");
d.appendChild(i);
document.getElementById( 'divFichiers' ).appendChild(d);
var b=document.createElement("input");
b.type="button";
b.value="inserer nom image";
b.onClick=function ()
{ var text = document.getElementById('fichier_'+num).value;
var fichier = text.substr(text.lastIndexOf('\\')+1); //LastIndexOf recuperes le dernier ""
document.getElementById('textarea').value+= '\n';
}
b.width="120"; var c=document.createElement("input"); // ajout du bouton pour supprimer
c.type="button";
c.value="Supprimer"; //nom du bouton
c.onclick=function() { //lors du clique, appel de la fonction qui suit
this.parentNode.style.display="none"; //suppresion d'un champ input
this.parentNode.innerHTML=""; }
c.width="81"; //Taille du bouton
d.appendChild(b);
d.appendChild(c);
num++;
}
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 6 juil. 2007 à 11:42
vous ne respectez toujours pas la syntaxe requise.
il faut faire comme dans l'ajout du bouton supprimer
.
b.onclick=function() { inserer_nom(this); }
avec un modif dans la fonction inserer_nom. ( car dans ce cas on ne peut pas utiliser num )
var text = num.parentNode.getElementsByTagName("input")[0].value;
par exemple, car on peut faire ça autrement
une remarque encore...
tout (ou presque) est basé sur l'utilisation du num. qui est le n° d'ordre
et quand vous en supprimez un ? que va-t-il se passer ?
je parierais bien que ça va planter !
donc ne faites pas this.parentNode.innerHTML=""; dans la fonction
de suppression. là où elle était utilisé, num n'était pas employé.
faites donc ( par exemple, pas testé , mais probabement pas loin... )
this.parentNode.name="";
l'input file existera toujours, mais caché
(par this.parentNode.style.display="none"; )
et ne sera pas tranmis au php, puisque sans name
cathy9999
Messages postés68Date d'inscriptiondimanche 6 janvier 2013StatutMembreDernière intervention10 décembre 2023 6 juil. 2007 à 12:08
var num=0;
function ajout()
{ var i=document.createElement("input");
i.type="file";
i.id="fichier_"+num;
i.name="fichier[]";
var d=document.createElement("div");
d.appendChild(i);
document.getElementById( 'divFichiers' ).appendChild(d);
var b=document.createElement("input");
b.type="button";
b.value="inserer nom image";
b.onClick=function() { inserer_nom(this); }
b.width="120";
var c=document.createElement("input"); // ajout du bouton pour supprimer
c.type="button";
c.value="Supprimer"; //nom du bouton
c.onclick=function() { //lors du clique, appel de la fonction qui suit
this.parentNode.style.display="none"; //suppresion d'un champ input
this.parentNode.getElementsByTagName("input")[0].name="";
}
//this.parentNode.innerHTML="";
c.width="81"; //Taille du bouton
d.appendChild(b);
d.appendChild(c);
num++;
}
function inserer_nom(num)
{ //var text = document.getElementById('fichier_'+num).value;
var text = num.parentNode.getElementsByTagName("input")[0].value;
var fichier = text.substr(text.lastIndexOf('\\')+1); //LastIndexOf recuperes le dernier ""
document.getElementById('textarea').value+= '\n';
}
Est ce ainsi???