Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Multiple upload

4 réponses
Avatar
Axelar
Bonjour

J'essaie de proposer un formulaire avec une text area dans laquelle
il
serait possible d'ins=E9rer plusieurs images.
Je bloque sur un d=E9tail.

Dans mon formulaire j'ai inclus un lien :

<div id=3D"imageainserer">
<a href=3D"javascript:getModule(\'nouvelles.php?
action=3Dinsererimage&numeroimage=3D1\',\'' . $_SESSION[utilisateur] .
'\',
\ 'imageainserer\',\'1\')">
<img src=3D"css/css' . $style . '/photos_22_22.png" alt=3D"" />
</a>
</div>

qui charge une foncion javascript :

var objRequete;
if(navigator.appName.search("Microsoft") > -1){
//objRequete =3D new ActiveXObject("Microsoft("Microsoft.XMLHTTP");
objRequete =3D new ActiveXObject("MSXML2.XMLHTTP");
}
else{
objRequete =3D new XMLHttpRequest();
}

function
getModule(url,utilisateur,divcible,argument1,argument2,argument3) {
objRequete.open('get',url,true);
objRequete.onreadystatechange =3D function ()
{ showData(divcible) ; } ;
objRequete.send(null);
}

function showData(divcible) {
if(objRequete.readyState =3D=3D 4){
document.getElementById(divcible).innerHTML
+objRequete.responseText;
}
}

qui =E0 son tour appele une page web :

if ($_GET[action] =3D=3D 'insererimage')
{
$numeroimage =3D $_GET[numeroimage] ; ;
echo $numeroimage . ' : ' ;
echo '<input type=3D"file" name=3D"imagejointe" size=3D"10">' ;
echo '&nbsp; <a href=3D"#" onClick=3D"insertion(\'[img]'.
$numeroimage .
'[/img]\', \'\')"><input type=3D"button" value=3D"Ins=E9rer l\'image dans
le
texte"></a>' ;
$numeroimage++ ;
echo '<br /><a href=3D"javascript:getModule(\'nouvelles.php?
action=3Dinsererimage&numeroimage=3D' . $numeroimage . '\',\'' .
$_SESSION[utilisateur] . '\',\'imageainserer\',\'' . $numeroimage .
'\')"><img src=3D"css/css' . $style . '/photos_22_22.png" alt=3D"" /></
a>' ;
}

Vu que dans ma fonction javascript j'ai bien mis +=3D dans la ligne

document.getElementById(divcible).innerHTML +objRequete.responseText;
Quand je clique sur le lien, un formulaire vient bien s'ajouter =E0
celui/ceux d=E9j=E0 pr=E9sent(s) mais en effa=E7ant les champs du formulair=
e
pr=E9c=E9dent. Comment corriger cela ?

Pour ceux qui utilisent Gmail, ce que je cherche =E0 faire ressemble =E0
l'insertion de plusieurs pi=E8ces jointes dans la fen=EAtre de r=E9daction
d'un email.

Merci !

4 réponses

Avatar
Olivier Miakinen
Bonjour,


<div id="imageainserer">
<a href="javascript:getModule('nouvelles.php?
action=insererimage&numeroimage=1','' . $_SESSION[utilisateur] .


Attention : l'URL étant dans un <a href=""> avant d'être dans une chaîne
JavaScript, je pense qu'il faudrait écrire « &amp;numeroimage » plutôt
que « &numeroimage ».

function showData(divcible) {
if(objRequete.readyState == 4){
document.getElementById(divcible).innerHTML
+objRequete.responseText;
}
}


Tu en fais quoi de innerHTML + responseText ?

Vu que dans ma fonction javascript j'ai bien mis += dans la ligne


Tu es sûr ?

document.getElementById(divcible).innerHTML +objRequete.responseText;


Visiblement, il y a erreur.

Quand je clique sur le lien, un formulaire vient bien s'ajouter à
celui/ceux déjà présent(s) mais en effaçant les champs du formulaire
précédent. Comment corriger cela ?


Ah ? J'aurais cru que ça ne ferait rien du tout. Bon, essaye déjà de
remplacer + par +=, et tiens-nous au courant !

Avatar
Axelar
On 18 jan, 22:36, Olivier Miakinen <om+ wrote:
Bonjour,




<div id="imageainserer">
<a href="javascript:getModule('nouvelles.php?
action=insererimage&numeroimage=1','' . $_SESSION[utilisateur] .


Attention : l'URL étant dans un <a href=""> avant d'être dans une ch aîne
JavaScript, je pense qu'il faudrait écrire « &amp;numeroimage » plut ôt
que « &numeroimage ».

function showData(divcible) {
if(objRequete.readyState == 4){
document.getElementById(divcible).innerHTML
+objRequete.responseText;
}
}


Tu en fais quoi de innerHTML + responseText ?

Vu que dans ma fonction javascript j'ai bien mis += dans la ligne


Tu es sûr ?

document.getElementById(divcible).innerHTML +objRequete.responseText;


Visiblement, il y a erreur.

Quand je clique sur le lien, un formulaire vient bien s'ajouter à
celui/ceux déjà présent(s) mais en effaçant les champs du formu laire
précédent. Comment corriger cela ?


Ah ? J'aurais cru que ça ne ferait rien du tout. Bon, essaye déjà de
remplacer + par +=, et tiens-nous au courant !


J'en ai profité pour corriger le lien avec &amp; mais ça reste sans
effet (mais ça fonctionnait avant la correction)
J'avais bien mis déjà += la preuve c'est que ma division cible se
remplissait bien d'un nouveau champ de formulaire du type input
type="file" ...
Le seul problème c'est que l'ajout du second formulaire input
type="file" ... efface la valeur déjà présente dans le premier


Avatar
Olivier Miakinen
On 18 jan, 22:36, Olivier Miakinen <om+ wrote:
[ citation intégrale ]



Merci de lire ceci (paragraphes 3a et 3b surtout) :
http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html

J'en ai profité pour corriger le lien avec &amp; mais ça reste sans
effet (mais ça fonctionnait avant la correction)


Ça marche tant que « numeroimage » n'est pas un nom d'entité pour les
navigateurs standards, et tant que « n », « nu », « num », etc. ne sont
pas des noms d'entité pour Internet Explorer. Quoi qu'il en soit c'est
une bonne habitude à prendre, parce que le jour où tu voudras passer
un paramètre nommé « reg » ou « para » ça ne marchera plus et tu ne
comprendras pas pourquoi.

Le seul problème c'est que l'ajout du second formulaire input
type="file" ... efface la valeur déjà présente dans le premier


Donne-nous une url où on puisse voir le phénomène, parce que là c'est
assez illisible (surtout si ton code réel est différent de celui que tu
recopies ici). Note qu'il est inutile de donner le code PHP, et tu
pourrais même faire une page de test où tu le remplaces par une page
statique afin d'éviter d'avoir des problèmes de session.


Avatar
SAM

Vu que dans ma fonction javascript j'ai bien mis += dans la ligne

document.getElementById(divcible).innerHTML +objRequete.responseText;
Quand je clique sur le lien, un formulaire vient bien s'ajouter à
celui/ceux déjà présent(s) mais en effaçant les champs du formulaire
précédent. Comment corriger cela ?


qu'y a t-il d'étonnant à celà ?
Tu as renommé tes champs avant l'introduction des nouveaux revus ?

Sauf à ce que ce soient des formulaires réellement séparés *ET* dont les
éléments n'ont *PAS* d'Id ça ne peut apporter que cafouillages.

Autre piste :
innerHTML a des limites ... surtout avec des champs de formulaires !
voir :
http://stephane.moriaux.pagesperso-orange.fr/truc/innerHTML_danger

Pour ceux qui utilisent Gmail, ce que je cherche à faire ressemble à
l'insertion de plusieurs pièces jointes dans la fenêtre de rédaction
d'un email.


Vaudrait mieux faire :

function showData(divcible) {
if(objRequete.readyState == 4){
var truc = document.createElement('DIV');
truc.innerHTML = objRequete.responseText;
var cible = document.getElementById(divcible);
cible.appendChild(truc);
}
}

Et même comme ça : bien vérifier que ces forms et leurs éléments n'aient
pas d'id. (ou alors les modifier à la volée de façon à ce qu'ils soient
différents pour tous)

--
sm