problème avec un input file
Posté : 26 sept. 2007, 10:00
Bonjour tout le monde.
Je suis confronté à un problème là.
En fait, je suis en train de dév une partie administration qui permet de modifier des paragraphe d'une page.
Chaque paragraphe est composé d'une description en français, d'une description en anglais, d'un titre en francias et d'un titre en anglais et aussi d'une image commune à l'anglais et au franais.
Je travaille avec des fichiers xml pour stocker mon contenu.
Je fais donc une boucle pour chaque paragraphe pour afficher (et modifier avec textarea) le titre, la description et l'image (ou les images associées).
Seulement, lorsque je suis "côté français" que je clique sur le bouton parcourir pour afficher le chemin de mon image et que je passe du "côté anglais" avec un onglet, mon chemin n'apparait plus dans le input file.
y a-t-il une solution pour ce problème ?
Voila mon code pour afficher les différents paragraphes :
Je suis confronté à un problème là.
En fait, je suis en train de dév une partie administration qui permet de modifier des paragraphe d'une page.
Chaque paragraphe est composé d'une description en français, d'une description en anglais, d'un titre en francias et d'un titre en anglais et aussi d'une image commune à l'anglais et au franais.
Je travaille avec des fichiers xml pour stocker mon contenu.
Je fais donc une boucle pour chaque paragraphe pour afficher (et modifier avec textarea) le titre, la description et l'image (ou les images associées).
Seulement, lorsque je suis "côté français" que je clique sur le bouton parcourir pour afficher le chemin de mon image et que je passe du "côté anglais" avec un onglet, mon chemin n'apparait plus dans le input file.
y a-t-il une solution pour ce problème ?
Voila mon code pour afficher les différents paragraphes :
<form enctype="multipart/form-data" name="form" id="form" action="#" method="post">
<input type="hidden" value="<? echo $_GET['traitement']; ?>" name="id_traitement" />
<ul class="tabs">
<a id="modif-lang1" href="#lang1">Français</a>
<a id="modif-lang2" href="#lang2">Anglais</a>
</ul><br />
<a href="?add_paragraphe=<? echo $_GET['traitement']; ?>">Ajouter un paragraphe</a><br /><br />
<?
$traitement = $xpTraitement->query('//traitement[@id="'.$_GET['traitement'].'"]');
$idTraitement = $traitement->item(0)->getAttribute('id');
$nameTraitement = $traitement->item(0)->getAttribute('name');
$labelTraitement = $traitement->item(0)->getAttribute('label');
$paragraphe = $xpTraitement->query('//traitement[@id="'.$idTraitement.'"]/paragraphe');?>
<fieldset id="lang1">
<legend>Français</legend><br /> <?
for ($j=0; $j<$paragraphe->length; $j++) {
$idParagraphe = $paragraphe->item($j)->getAttribute('id');
$titreTraitementFr = $xpTraitement->query('//traitement[@id="'.$idTraitement.'"]/paragraphe[@id="'.$idParagraphe.'"]/title[@lang="fr"]')->item(0)->nodeValue;
$descriptionTraitementFr = $xpTraitement->query('//traitement[@id="'.$idTraitement.'"]/paragraphe[@id="'.$idParagraphe.'"]/description[@lang="fr"]')->item(0)->nodeValue;
?>
<label>Paragraphe <? echo $idParagraphe; ?></label><a href="?dell_paragraphe=<? echo $idTraitement."/".$idParagraphe; ?>">Supprimer ce paragraphe</a>
<label>Titre : </label><input type="text" name="titre_fr[]" value="<? echo $titreTraitementFr; ?>" size="50" /><br />
<label>Description : </label><textarea name="paragraphe_fr[]" style="width: 90%; height: 200px;" ><? echo $descriptionTraitementFr; ?></textarea><br /><br />
<fieldset id="images">
<legend>Images associées au paragraphe <? echo $idParagraphe; ?> : </legend><br /><br />
<? $file = $xpTraitement->query('traitement[@id="'.$idTraitement.'"]/paragraphe[@id="'.$idParagraphe.'"]/file[@img]');
if ($file->length > 0 ) {
echo "Pour ce paragraphe, vous avez déjà associé les images : <em class='explain'>pour supprimer les images, sélectionnez-les</em><br />";
for ($im=0; $im<$file->length; $im++) {
$srcFile = $file->item($im)->getAttribute('img');
echo "<input type='checkbox' value='".$srcFile."/".$idParagraphe."' name='currentImgDel[]' /><input type='hidden' value='".$srcFile."' name='currentImg[]' />".$srcFile."<br /><br />";
}
}
else {
echo "Il n'y a aucune image pour ce paragraphe<br /><br />";
} ?>
<label>Nouvelle image : </label>
<div id="source-<? echo $idParagraphe; ?>">
<input type="file" name="image[<? echo $idParagraphe; ?>][]" size="40" onChange="setModified();" value="" /><em class="explain">(image au format jpeg ou gif uniquement)</em><!--<a href="#" onclick="return delLinkElt(this);" class="element-delete" title="supprimer cette image"> Supprimer cet élément</a>--><br /><br />
<div class="clear"></div>
</div>
<div id="add-<? echo $idParagraphe; ?>">
<a href="#" onclick="return addLinkElt('<? echo $idParagraphe; ?>');"><?php echo " ++ Ajouter une image"; ?></a>
</div><br />
Aligner toutes les images à
<select name="align">
<option value="left">Gauche</option>
<option value="right">Droite</option>
</select>
</fieldset>
<? } ?>
</fieldset>
<fieldset id="lang2">
<legend>Anglais</legend><br /> <?
for ($v=0; $v<$paragraphe->length; $v++) {
$idParagraphe = $paragraphe->item($v)->getAttribute('id');
$titreTraitementEn = $xpTraitement->query('//traitement[@id="'.$idTraitement.'"]/paragraphe[@id="'.$idParagraphe.'"]/title[@lang="en"]')->item(0)->nodeValue;
$descriptionTraitementEn = $xpTraitement->query('//traitement[@id="'.$idTraitement.'"]/paragraphe[@id="'.$idParagraphe.'"]/description[@lang="en"]')->item(0)->nodeValue;
?>
<label>Paragraphe <? echo $idParagraphe; ?></label><a href="?dell_paragraphe=<? echo $idTraitement."/".$idParagraphe; ?>">Supprimer ce paragraphe</a>
<label>Titre : </label><input type="text" name="titre_en[]" value="<? echo $titreTraitementEn; ?>" size="50" /><br />
<label>Description : </label><textarea name="paragraphe_en[]" style="width: 90%; height: 200px;" ><? echo $descriptionTraitementEn; ?></textarea><br /><br />
<fieldset id="images">
<legend>Images associées au paragraphe <? echo $idParagraphe; ?> : </legend><br /><br />
<? $file = $xpTraitement->query('traitement[@id="'.$idTraitement.'"]/paragraphe[@id="'.$idParagraphe.'"]/file[@img]');
if ($file->length > 0 ) {
echo "Pour ce paragraphe, vous avez déjà associé les images : <em class='explain'>pour supprimer les images, sélectionnez-les</em><br />";
for ($im=0; $im<$file->length; $im++) {
$srcFile = $file->item($im)->getAttribute('img');
echo "<input type='checkbox' value='".$srcFile."/".$idParagraphe."' name='currentImgDel[]' /><input type='hidden' value='".$srcFile."' name='currentImg[]' />".$srcFile."<br /><br />";
}
}
else {
echo "Il n'y a aucune image pour ce paragraphe<br /><br />";
} ?>
<label>Nouvelle image : </label>
<div id="source-<? echo $idParagraphe; ?>">
<input type="file" name="image[<? echo $idParagraphe; ?>][]" size="40" onChange="setModified();" value="" /><em class="explain">(image au format jpeg ou gif uniquement)</em><!--<a href="#" onclick="return delLinkElt(this);" class="element-delete" title="supprimer cette image"> Supprimer cet élément</a>--><br /><br />
<div class="clear"></div>
</div>
<div id="add-<? echo $idParagraphe; ?>">
<a href="#" onclick="return addLinkElt('<? echo $idParagraphe; ?>');"><?php echo " ++ Ajouter une image"; ?></a>
</div><br />
Aligner toutes les images à
<select name="align">
<option value="left">Gauche</option>
<option value="right">Droite</option>
</select>
</fieldset>
<? } ?>
</fieldset>
<div class="btns">
<input type="button" onclick="history.back();" class="submit" value="Retour" />
<input type="submit" class="submit" value="Enregistrer" />
</div>
</form>
et voici le javascript qui me permet de passer d'un onglet à l'autre :
Code : Tout sélectionner
<script type="text/javascript">
var panels = ['lang1', 'lang2'], panel, link;
var tmp = document.location.href.split('#');
var currentPanel = ( tmp.length == 2 ) ? tmp[1] : panels[0];
document.getElementById('modif-' + currentPanel).className = 'selected';
for ( var i = 0, count = panels.length; i < count; i++ ) {
// On ajoute les actions sur les liens
link = document.getElementById('modif-' + panels[i]);
link.onclick = function() {
this.className = 'selected';
var tmp = this.href.split('#');
for ( var i = 0, count = panels.length, panel; i < count; i++ ) {
panel = document.getElementById(panels[i]);
if ( panels[i] == tmp[1] ) {
panel.style.display = 'block';
} else {
document.getElementById('modif-' + panels[i]).className = null;
panel.style.display = 'none';
}
}
return false;
} // end of 'onclick()'
// On masque les panneaux
if ( currentPanel == panels[i] ) continue;
panel = document.getElementById(panels[i]);
panel.style.display = 'none';
} // endif
</script>