Multiple upload

Le
Axelar
Bonjour

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

Dans mon formulaire j'ai inclus un lien :

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

qui charge une foncion javascript :

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

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

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

qui à son tour appele une page web :

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

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 formulair=
e
précédent. Comment corriger cela ?

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.

Merci !
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Olivier Miakinen
Le #776463
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 !

Axelar
Le #776462
On 18 jan, 22:36, 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 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


Olivier Miakinen
Le #776461
On 18 jan, 22:36, Olivier Miakinen
[ 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.


SAM
Le #776222

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

Publicité
Poster une réponse
Anonyme