Nom image à inserer

Résolu
cathy9999 Messages postés 68 Date d'inscription dimanche 6 janvier 2013 Statut Membre Dernière intervention 10 décembre 2023 - 2 juil. 2007 à 15:37
cathy9999 Messages postés 68 Date d'inscription dimanche 6 janvier 2013 Statut Membre Dernière intervention 10 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

Je suis debutante de chez debutante

<!-- / message -->

79 réponses

cathy9999 Messages postés 68 Date d'inscription dimanche 6 janvier 2013 Statut Membre Dernière intervention 10 décembre 2023
5 juil. 2007 à 15:00
Mais ce n'est pas possible que je fasse comme cela vu que mon bouton qui suit en a besoin pour le premier champ
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
5 juil. 2007 à 15:30
pas compris...    pourquoi le 1er serait-il différent des autres ?
à moins que tu ne l'ajoutes pas de la même manière ques les autres ?

où en est ton script maintenant ?
ça ressemble au dernier exemple mis sur cette question page 4 le 05/07/2007 12:01:13 ?


remplacer le alert(num) mis, pour l'exemple,  dans la fonction





<hr />



Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
0
cathy9999 Messages postés 68 Date d'inscription dimanche 6 janvier 2013 Statut Membre Dernière intervention 10 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??

for($i=1; $i<=count($_FILES); $i++) {
   $nom_fic = $_FILES['fichier_'.$i]['name'];
   
   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
     
      move_uploaded_file($_FILES['fichier_'.$i]['tmp_name'], "images/".$sequence."/".$nom_dest); 
    }
   }
  }
0
cathy9999 Messages postés 68 Date d'inscription dimanche 6 janvier 2013 Statut Membre Dernière intervention 10 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';    
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
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 ).

<hr />
Cordialement                Bul     [mon Site]     [M'écrire]
<hr />
0
cathy9999 Messages postés 68 Date d'inscription dimanche 6 janvier 2013 Statut Membre Dernière intervention 10 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
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
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 !

<hr />


Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
0
cathy9999 Messages postés 68 Date d'inscription dimanche 6 janvier 2013 Statut Membre Dernière intervention 10 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++;
    }
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
6 juil. 2007 à 09:40
>>Comment dois je traiter le premier champ
    ne le met pas.  
    et appelle la fonction qui créé si 1 champ au départ doit exister.

>>ce que tu nous montres :

    on crée un div. dans lequel on crée un input file et un bouton "supprimer"

    ( ce bouton possèdant une fonction réagissant au click )

    ajoute ton bouton ( en prenant l'exemple sur le bouton "supprimer")
    et pour la fonction associée ce que tu as déjà fais pour insérer dans le textarea.

<hr />


Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
6 juil. 2007 à 09:42
il fallait lire :

    appeller la fonction qui créé si 1 champ, si au départ il doit en exister un.



<hr />



Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
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 />
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
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.



<hr />



Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
0
cathy9999 Messages postés 68 Date d'inscription dimanche 6 janvier 2013 Statut Membre Dernière intervention 10 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...

   
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
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é.










   
<hr />


<gras> Cordialement                Bul     [mon Site]     [M'écrire]




<hr />
0
cathy9999 Messages postés 68 Date d'inscription dimanche 6 janvier 2013 Statut Membre Dernière intervention 10 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';
}

[javascript:void(ajout()); Ajouter un champ]
0
cathy9999 Messages postés 68 Date d'inscription dimanche 6 janvier 2013 Statut Membre Dernière intervention 10 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++;
    }

<hr /><hr />
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
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












<hr />



Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
6 juil. 2007 à 11:48
croisment de message

b.onClick=function ()
{    ...

ça commence à aller mieux.   mais comme dit dans mon dernier message, le
    num ne convient pas ( il prend la valeur du dernier ajout ! )






<hr />



Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
6 juil. 2007 à 12:02
faites donc ( par exemple,  pas testé , mais probabement pas loin... )
         


this.parentNode.name="";
il vaudrait mieux tenter : this.
parentNode.getElementsByTagName("input")[0].name="";





<hr />



Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
0
cathy9999 Messages postés 68 Date d'inscription dimanche 6 janvier 2013 Statut Membre Dernière intervention 10 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???
0
Rejoignez-nous