Aller au contenu

Problème javascript avec innerHTML sous IE et problème javascript avec les Doctypes


bibi-arnaud

Sujets conseillés

Bonjour,

encore en plein phase de débogage du site je me retrouve confronté à un nouveau problème ou plutôt deux ! confus confused

En fait le premier vient de mon formulaire de contact.

J'ai mis au début un input type select où la personne à le choix du statut entre Particulier et Société.

Si il choisit particulier rien de spécial ne se passe et il continue à remplir son formulaire de contact tout normalement. Par contre s'il choisit Société alors là le javascript rentre en action pour rajouter dynamiquement un input type texte où la personne saisira son nom de société. Ce rajout dynamique je l'effectue grâce au innerHTML.

Après test, cela marche impeccable sous MFF par contre sous IE de nouveau la galère. Il ne me prend pas du tout le innerHTML en compte.

J'ai un peu cherché et j'ai pu voir que ce bug était déjà recensé par microsoft depuis 2003 ....... et toujours pas corrigé en 2008 :s :s mais je n'ai pas réussi à mettre de méthode en application pour résoudre ce problème.

Voila mon code

contact.php

CODE
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns=&quot;http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<title>Kreazone - PAGE DE CONTACT - Design graphique - Marquage tous supports - Textile - Objet pub</title>

<link rel="shortcut icon" href="images/favicon/favicon.ico" />

<link href="styles/styles.css" type="text/css" rel="stylesheet" />

<link href="styles/menu.css" type="text/css" rel="stylesheet" />

</head>

<script language="javascript">

var bodycolor_list = new Array ( "#3F3F3F", "#B1C800" );;

var bodycolor_index = Math.floor (Math.random() * bodycolor_list.length);

var bodycolor = bodycolor_list[bodycolor_index];

document.write ("<body bgcolor=" + bodycolor + ">");

</script>

<script language="javascript" type="text/javascript">

function affiche_text_reponse(contact)

{

var Obj = document.getElementById( 'D_INPUT'); // Recup du DIV

var Html = ""; // le nouveau contenu

var nb_rep = eval(contact.statut.value);

if (nb_rep == 1)

{

Html += "<td>Société:</td><td><input name='societe' size='20' type='text'></td>";

}

else

{

Html += "";

}

Obj.innerHTML = Html; // ecriture dans le DIV

}

</script>

<div id="div_generale">

<?php

include 'header.php';

include 'menu.php';

include 'contenu_contact.php';

include 'footer.php';

include 'validation.php';

?>

</div>

</body>

</html>

contenu_contact.php

CODE
<div id="div_contenu_contact">

<span class="titre_partie">CONTACT</span>

<br /><br /><br />

<form action="valid_contact.php" method="post" id="contact" name="contact">

<center>

<table id="table_contact">

<tr>

<td>Statut : </td>

<td>

<select id="statut" name="statut" onChange="affiche_text_reponse(form)">

<option id='part' value='0'>particulier</option>

<option id='soc' value='1'>société</option>

</select>

</td>

</tr>

<tr>

<td>Nom : </td>

<td><input type="text" id="nom" name="nom" size="20"/></td>

</tr>

<tr>

<td>Prénom : </td>

<td><input type="text" id="prenom" name="prenom" size="20"/></td>

</tr>

<tr id="D_INPUT" name="D_INPUT">

</tr>

<tr>

<td>Adresse :</td>

<td><input type="text" id="adresse" name="adresse" size="20" /></td>

</tr>

<tr>

<td>Code Postal : </td>

<td><input type="text" id="code_postal" name="code_postal" size="20"/></td>

</tr>

<tr>

<td>Ville : </td>

<td><input type="text" id="ville" name="ville" size="20"/></td>

</tr>

<tr>

<td>Email : </td>

<td><input type="text" id="email" name="email" size="20"/></td>

</tr>

<tr>

<td>Téléphone : </td>

<td><input type="text" id="telephone" name="telephone" size="20"/></td>

</tr>

<tr>

<td>Message : </td>

<td><textarea id="message" name="message" cols="50" rows="10" wrap="virtual"></textarea></td>

</tr>

<tr>

<td colspan="2">

<center>

<input type="submit" id="valid_contact" name="valid_contact" value="ENVOYER" />

<input type="reset" id="annul_contact" name="annul_contact" value="ANNULER" />

</center>

</td>

</tr>

</table>

<br/><br/>

<fieldset class="legal_contact">

Les informations recueillies font l’objet d’un traitement informatique destiné à mettre en place un fichier de clients et de propsects .

Les destinataires des données sont : la société Kreazone. Conformément à la loi «informatique et libertés» du 6 janvier 1978,

vous bénéficiez d’un droit d’accès et de rectification aux informations qui vous concernent. Si vous souhaitez exercer ce droit

et obtenir communication des informations vous concernant, veuillez vous adresser à Kreazone 10, rue du faubourg 67260 Keskastel.

</fieldset>

</center>

</form>

</div>

Et mon deuxième problème est le suivant j'ai mes codes javascript pour mettre en place la galerie d'image défilante mais aussi le système de news pour la page d'accueil, et mon problème est le suivant. Si je mets le doctype en en-tête mes images de la galerie javascript n'aparaissent pas mais par contre le javascript doit surement être actif car en ouvrant Firebug et en plaçant mon curseur de la souris sur les DIV devant contenir les images je vois un cadre bleu qui se deplace, donc le défilement en lui même fonctionne je pense.

J'ai donc effectué quelques recherches et j'ai pu lire quelque chose comme MODE QUIRCKS ou quelque chose du genre.

Qu'est ce que c'est exactement ?

Comment résoudre ce problème de galerie qui disparait lorsque j'inscrit mes doctypes, car si j'enlève les doctypes, pas de problème, la galerie s'affiche correctement.

slide.js

CODE
var sliderwidth="50px"

var sliderheight="120px"

var slidespeed=1

slidebgcolor="00OO00"

var finalslide=''

var copyspeed=slidespeed

leftrightslide='<nobr>'+leftrightslide.join(" ")+'</nobr>'

var iedom=document.all||document.getElementById

if (iedom)

document.write('<span id="temp" style="visibility:hidden;position:absolute;top:-100px;left:-9000px">'+leftrightslide+'</span>')

var actualwidth=''

var cross_slide, ns_slide

function fillup()

{

if (iedom)

{

cross_slide=document.getElementById? document.getElementById("test2") : document.all.test2

cross_slide2=document.getElementById? document.getElementById("test3") : document.all.test3

cross_slide.innerHTML=cross_slide2.innerHTML=leftrightslide

actualwidth=document.all? cross_slide.offsetWidth : document.getElementById("temp").offsetWidth

cross_slide2.style.left=actualwidth+4+"px"

}

else if (document.layers)

{

ns_slide=document.ns_slidemenu.document.ns_slidemenu2

ns_slide2=document.ns_slidemenu.document.ns_slidemenu3

ns_slide.document.write(leftrightslide)

ns_slide.document.close()

actualwidth=ns_slide.document.width

ns_slide2.left=actualwidth+4

ns_slide2.document.write(leftrightslide)

ns_slide2.document.close()

}

lefttime=setInterval("slideleft()",30)

}

addLoadEvent(fillup);

function slideleft()

{

if (iedom)

{

if (parseInt(cross_slide.style.left)>(actualwidth*(-1)+0))

cross_slide.style.left=parseInt(cross_slide.style.left)-copyspeed+"px"

else

cross_slide.style.left=parseInt(cross_slide2.style.left)+actualwidth+4+"px"

if (parseInt(cross_slide2.style.left)>(actualwidth*(-1)+0))

cross_slide2.style.left=parseInt(cross_slide2.style.left)-copyspeed+"px"

else

cross_slide2.style.left=parseInt(cross_slide.style.left)+actualwidth+4+"px"

}

else if (document.layers)

{

if (ns_slide.left>(actualwidth*(-1)+0))

ns_slide.left-=copyspeed

else

ns_slide.left=ns_slide2.left+actualwidth+4

if (ns_slide2.left>(actualwidth*(-1)+0))

ns_slide2.left-=copyspeed

else

ns_slide2.left=ns_slide.left+actualwidth+4

}

}

if (iedom||document.layers)

{

with (document)

{

if (iedom)

{

write('<table width=680 align=center border=0 id="cinesearch"><tr><td>')

write('<div style="position:relative;top:1px;left:-1px;width:100%;height:1;" onMouseover="copyspeed=0" onMouseout="copyspeed=slidespeed">')

write('<div style="position:absolute;top:305px;left:-2px;width:100%;height:170;overflow:hidden;">')

write('<div id="test2" style="position:absolute;width:100%;left:-1px;top:1px"></div>')

write('<div id="test3" style="position:absolute;width:100%;left:-1000px;top:1px"></div></div></div>')

write('</td></tr></table>')

}

else if (document.layers)

{

}

}

}

imageslide_accueil.js

CODE
// JavaScript Document

var leftrightslide = new Array();

leftrightslide[0] ='<IMG src="images/diapo/accueil/1.png" border=1 alt="Kreazone Accueil Agence Graphique Marquage Textile Objets pub Design"/>';

leftrightslide[1] ='<IMG src="images/diapo/accueil/2.png" border=1 alt="Kreazone Accueil Agence Graphique Marquage Textile Objets pub Design"/>';

leftrightslide[2] ='<IMG src="images/diapo/accueil/3.png" border=1 alt="Kreazone Accueil Agence Graphique Marquage Textile Objets pub Design"/>';

leftrightslide[3] ='<IMG src="images/diapo/accueil/4.png" border=1 alt="Kreazone Accueil Agence Graphique Marquage Textile Objets pub Design"/>';

leftrightslide[4] ='<IMG src="images/diapo/accueil/5.png" border=1 alt="Kreazone Accueil Agence Graphique Marquage Textile Objets pub Design"/>';

Merci d'avance.

Arnaud S.

Modifié par captain_torche
Lorsque tu postes des codes longs, il vaut mieux utiliser la balise CODEBOX, qui ne détruit pas la mise en page (captain_torche, modérateur)
Lien vers le commentaire
Partager sur d’autres sites

Salut,

Pour ton innerHTML, de memoire (mais il y a un bail que j'avais eu ce pb), il faut que tu essayes d'ecrire dans un div , car IE a du mal a le faire dans un tr.

Donc essaye de mettre

 
<tr>
<div id="D_INPUT" name="D_INPUT"></div>
</tr>

Et pour ton probleme de galerie essaye de passer en mode transitional plutot que strict, ce qui pourra peut-etre resoudre ton pb.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Voila.

Modifié par rdd
Lien vers le commentaire
Partager sur d’autres sites

Merci rdd d'avoir pris le temps de lire et d'essayer de comprendre mon problème.

J'ai donc essayé ce que tu as proposé et aucune des 2 solutions malheureusement ne fonctionne :(

Autant pour le innerHTML que pour la galerie malheureusement.

Sniffffff

Mais merci quand même d'avoir essayé, c'est sympa !

Lien vers le commentaire
Partager sur d’autres sites

Je reviens a la charge :P

En fait c'etait bien une histoire de syntaxe pour IE, il fallait mettre l'ID soit sur un div soit sur un td.

Donc ce qui donne a peu pres :

function affiche_text_reponse(contact)
{
var Obj = document.getElementById( 'D_INPUT'); // Recup du DIV
var Html = ""; // le nouveau contenu
var nb_rep = eval(contact.statut.value);
if (nb_rep == 1)
{
Html += "<table width=\"100%\" cellpading=0 cellspacing=0><tr><td width=100>Société:</td><td><input name='societe' size='20' type='text'></td></tr></table>";
}
else
{
Html += "";
}
Obj.innerHTML = Html; // ecriture dans le DIV
}

Et dans ton contenu_contact.php a la place de ton <tr id="D_INPUT" name="D_INPUT">, tu mets :

<tr>
<td colspan="2" id="D_INPUT" name="D_INPUT">
</td>
</tr>

Pourt ton probleme de galerie d'images, c'est un script perso que tu utilises ?

Lien vers le commentaire
Partager sur d’autres sites

Merci mec tu me sauves la vie pour le formulaire de contact.

Cela faisait au moins 1 semaine que je planchais la dessus et que je ne trouvais rien et je vois que c'était un truc tout con, mais il est vrai que je n'ai à aucun moment pensé à essayer de mettre mon ID sur un TD au lieu d'un TR.

Mais en, tout cas c'est super con de la part de MS de nous avoir programmé un truc où l'on ne peut mettre que cela sur une DIV ou un TD alors que plein d'autres balises sont prêtes à accueillir du contenu ... enfin bref le débat sur l'illogisme de MS n'est plus à commencer ^^

Pour ce qui est du code de la galerie d'images, ce n'est pas un code qui vient de ma conception personnelle, c'est un code adapté.

Pourquoi ?

@++ et encore merci mec, tu assures !

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines plus tard...

J'ai essayé avec HTML Validator et il me marquait des erreurs et me donnait le code à changer et la manière de le changer.

Je l'ai fait et après il me disait que le code qu'il m'a dit de mettre était faux .... :(

Par contre mon problème c'est un peu étendu subitement :( ... sous IE bien entendu !

Sur les pages où je spécifie un Doctype, pas de problème mon menu s'affiche correctement mais mes applis javascript ne fonctionnent pas, par contre sur les pages où je ne le spécifie pas, mon dernier élément du menu se décale complètement (à noter que le fichier du menu est un seul fichier qui est comment à toutes les pages et intégré en PHP à l'aide d'un include). mais mes applis javascript fonctionnent.

Je deviens fou.

Pour avoir un exemple concret, je vous donne le lien de deux pages ou cela se passe.

Là, c'est une page où le Doctype n'est pas déclaré et donc vous pouvez constater que ma galerie javascript fonctionne correctement mais le menu est complètement décalé (enfin, le dernier élément!) : Cliquez ici

Là, c'est une page où le Doctype est déclaré et donc vous pouvez constater que le menu est placé de façon impeccable. J'ai pu déclaré le doctype car sur cette page, il n'y a aucun javascript, mais si j'avais eu une galerie javascript placée sur cette page, elle n'aurait pas fonctionné du fait que mon Doctype était déclaré. Cliquez ici

A noter que ces problèmes sont sous IE, si je regarde mon site tel quel sous MFF, aucun problème au niveau du menu avec ou sans doctype, par contre j'aurais le même problème de non affichage de la galerie d'image en javascript si je déclare les Doctype.

Lien vers le commentaire
Partager sur d’autres sites

C'est juste un problème de css je suppose, sans dtd, ie rajoute des marges donc ton menu devient trop large et le dernier bouton passe en dessous.

Merci pour ta réponse, mais comment cela se fait-il qu'en rajoutant les DTD les images de ma galerie javascript disparaissent subitement ?

Pour info j'ai pense qu'il devait y avoir un pb de largeur ou quelque chose comme ça alors j'ai essayé en mettant une toute petite taille pour l'image du menu en question. Elle est bien plus petite mais ne se remet pas pour autant en place.

Voila le code du menu ainsi que le css associé.

Pour info le code de la galerie javascript est situé au début du document.

menu.php

<div id="div_menu">
<div id="menu"><!--début du menu-->

<ul class="menu2">

<li class="top"><a href="http://www.kreazone.fr" id="kreazone" class="top_link"><span>ACCUEIL</span></a></li>

<li class="top"><a href="design.php" id="design" class="top_link"><span>DESIGN</span></a></li>

<li class="top"><a href="marquage.php" id="marquage" class="top_link"><span>MARQUAGE</span></a></li>

<li class="top"><a href="textile.php" id="textile" class="top_link"><span>TEXTILE</span></a></li>

<li class="top"><a href="pub.php" id="pub" class="top_link"><span>OBJETS PUB</span></a></li>

<li class="top"><a href="client.php" id="esp_client" class="top_link"><span>ESPACE CLIENT</span></a></li>

<li class="top"><a href="contact.php" id="contact" class="top_link"><span>CONTACT</span></a></li>

<li class="top"><a href="kreashop.php" id="kreashop"><img src="images/menu/kreashop_off.png" /></a></li>

</ul>

</div>
</div>

menu.css

CODE

_AT_charset "utf-8";

/* CSS Document */

#menu{

width:800px;

margin-left:0px;

position:absolute;

z-index:1;

height:35px;

}

.menu2 {

padding:0 0 0 24px;

margin:0;

list-style:none;

height:35px;

background:#fff url(../images/menu/bouton1v4.png) repeat-x;

position:relative;

z-index:500;

font-family:arial, verdana, sans-serif;

}

.menu2 li.top {

display:block;

float:left;

position:relative;

}

.menu2 li a.top_link {

display:block;

float:left;

height:40px;

line-height:37px;

color:#3E3E40;

text-decoration:none;

font-size:11px;

font-weight:bold;

padding:0 0 0 8px;

cursor:pointer;

}

.menu2 li a.top_link span {

float:left;

display:block;

padding:0 18px 0 12px;

height:40px;

}

.menu2 li a.top_link span.down {

float:left;

display:block;

padding:0 17px 0 12px;

height:40px;

background:url(../images/menu/down.gif) no-repeat right top;

}

.menu2 li a.top_link:hover {

color:#fff;

background: url(../images/menu/button5.gif) no-repeat;

}

.menu2 li a.top_link:hover span {

background:url(../images/menu/button5.gif) no-repeat right top;

}

.menu2 li a.top_link:hover span.down {

background:url(../images/menu/button5a.gif) no-repeat right top;

}

.menu2 li:hover > a.top_link {

color:#fff;

background: url(../images/menu/button5.gif) no-repeat;

}

.menu2 li:hover > a.top_link span {

background:url(../images/menu/button5.gif) no-repeat right top;

}

.menu2 li:hover > a.top_link span.down {

background:url(../images/menu/button5a.gif) no-repeat right top;

}

.menu2 table {

border-collapse:collapse;

width:0;

height:0;

position:absolute;

top:0;

left:0;

}

/* Default link styling */

/* Style the list OR link hover. Depends on which browser is used */

.menu2 a:hover {

visibility:visible;

}

.menu2 li:hover {

position:relative;

z-index:200;

}

/* keep the 'next' level invisible by placing it off screen. */

.menu2 ul,

.menu2 :hover ul ul,

.menu2 :hover ul :hover ul ul,

.menu2 :hover ul :hover ul :hover ul ul,

.menu2 :hover ul :hover ul :hover ul :hover ul ul {

position:absolute;

left:-9999px;

top:-9999px;

width:0;

height:0;

margin:0;

padding:0;

list-style:none;

}

.menu2 :hover ul.sub {

left:2px;

top:40px;

background: #fff;

padding:3px 0;

border:1px solid #9CF70E;

white-space:nowrap;

width:130px;

height:auto;

}

.menu2 :hover ul.sub li {

display:block;

height:20px;

position:relative;

float:left;

width:90px;

}

.menu2 :hover ul.sub li a {

display:block;

font-size:11px;

height:20px;

width:124px;

line-height:20px;

text-indent:5px;

color:#000;

text-decoration:none;

border:3px solid #fff;

border-width:0 0 0 3px;

}

.menu2 :hover ul.sub li a.fly {

background:#fff url(../images/menu/arrow.gif) 120px 7px no-repeat;

}

.menu2 :hover ul.sub li a:hover {

background:#BEBEBD;

color:#fff;

}

.menu2 :hover ul.sub li a.fly:hover {

background:#BEBEBD 80px 7px no-repeat;

color:#fff;

}

.menu2 :hover ul li:hover > a.fly {

background:#BEBEBD 80px 7px no-repeat;

color:#fff;

}

.menu2 :hover ul :hover ul,

.menu2 :hover ul :hover ul :hover ul,

.menu2 :hover ul :hover ul :hover ul :hover ul,

.menu2 :hover ul :hover ul :hover ul :hover ul :hover ul{

left:100px;

top:-4px;

background: #fff;

padding:3px 0;

border:1px solid #9CF70E;

width:130px;

z-index:200;

height:auto;

}

Merci d'avance

Arnaud S.

Lien vers le commentaire
Partager sur d’autres sites

Problème résolu à moitié.

J'ai mis l'image du bouton dans un SPAN et ça a réglé le problème du décalage.

Par contre j'ai toujours le problème avec les DTD, car pour le moment les DTD sur les pages ne sont pas déclarés, car si je les mets, ma galerie d'image javascript disparait :wacko:

En tout cas déjà merci à ceux qui ont répondu et ont essayé de m'aider.

Merci d'avances aux autres.

Arnaud S.

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Le Doctype sert principalement a faire passer le test W3C.

Essaye de faire valider ta page ici avec tes doctypes sur tes pages (tu auras surement des erreurs a corriger).

Je te conseille aussi une petite lecture interessante sur les doctypes ici

Je sais que ca ne repond pas directement a ta question, mais ca peut faire avance ton probleme.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour

Le Doctype sert principalement a faire passer le test W3C.
Mais bien sûr :huh:

C'est parfaitement faux, ainsi qu'une bonne partie de ce qui est dit dans le lien que tu donnes :nonono:

Le Doctype est la définition du type de document utilisé. Il déclare le langage utilisé, et par conséquent, il déclare aussi le nom des éléments, sous-éléments et attributs pouvant être utilsés dans ce document.

Petite lecture (vraiment) intéressante:

http://openweb.eu.org/articles/toi_comprendre_moi/

http://www.pompage.net/pompe/doctype/

http://fr.wikipedia.org/wiki/Doctype

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Merci pour les liens que tu as donne (qui remettent largement en question ce que j'ai lu avant).

Comme quoi tout n'est pas bon a prendre sur le net.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour, merci d'avoir répondu, car comme bibi arnaud, ce problème m'a pris 1 semaine avant de la résoudre grâce à ce topic.

Cependant un problème subsiste:

Je voudrai récupérer les données du nouveau formulaire, mais je n'y arrive pas avec cette méthode. Tout ce passe comme si les noms des champs crées ne se transmettaient à la page php.

Voici les codes:

formulaire.html:

<form action="sitephp.php" method="post" name="form1" id="form1">

<table align="left" id="table_select">

<tr>

<td>

<select name="selec" id="selec" onclick="affiche_text_reponse(form)">

<option></option>

<option value="1" >CTD

<option value="2">Hydrophone

<option value="3">ADCP

<option value="4">Fluorometer

<option value="5">Sediment Sampler

<option value="6"> Other

</select>

<!--add serial number, or a sensor which is not in the previous menu, or information on the sensor-->

<input name="sensor_name2" type="text style7" id="sensor_name2" size="60">

</td>

</tr>

<tr>

<td>

<div class="bodytext style7" colspan="2" id="D_INPUT" name="D_INPUT"></div>

</td>

</tr>

</table>

</form>

codejava script:

function affiche_text_reponse(form1)

{

var Obj = document.getElementById( 'D_INPUT'); // Recup du DIV

var Html = ""; // le nouveau contenu

var nb_rep = eval(form1.selec.value);

if (nb_rep == 1)

{

Html += "<form method='post' name='CTD_mesures' action='sitephp.php'>

<table width=\"100%\" cellpading=0 cellspacing=0>

<tr>

<td width=100>Conductivity:</td><td><input name='Conductivity' id='Conductivity' size='20' type='text'></td>

</tr>

<tr>

<td width=100>Temperature:</td><td><input name='Temperature' id='Temperature' size='20' type='text'></td>

</tr>

<tr>

<td width=100>Pressure:</td><td><input name='Pressure' id='Pressure' size='20' type='text'></td>

</tr>

</table>

</form>";

}

else

{

Html += "choose an other sensor";

}

Obj.innerHTML = Html; // ecriture dans le DIV

}

Code php

sitephp.php:

<?php

$cond = $_POST['Conductivity'];

$temp = $_POST['Temperature'];

$pres= $_POST['Pressure'];

//creation of a new DOM document

$document = new DomDocument;

//write the new XML element in a unclouded presentation, instead of on a single line

$document->preserveWhiteSpace = FALSE;

$document->formatOutput = TRUE;

//load the XML presentation

$document->load("tableau_eso.xml");

// creating new nodes from the datas received

// in order to build a new array line

$sensor = $document->createElement("sensor" );

$document->documentElement->appendChild($sensor);

$sens_type = $document->createElement("sensor_number","$sensor_type" );

$sens_type= $sensor->appendChild($sens_type);

$cal = $document->createElement("calibrationdate","$caldate" );

$cal = $sensor->appendChild($cal);

$weight1 = $document->createElement("weight","$weight" );

$weight1 = $sensor->appendChild($weight1);

$cond1 = $document->createElement("conductivity","$cond" );

$cond1 = $sensor->appendChild($cond1);

$temp1 = $document->createElement("temperature","$temp" );

$temp1 = $sensor->appendChild($temp1);

$pres1 = $document->createElement("pressure","$pres" );

$pres1 = $sensor->appendChild($pres1);

// writing new nodes in the XML file

$document->save("tableau_eso.xml");

// Reading an XML file

function lit_xml($fichier,$item,$champs)

{

// reading the file

if($chaine = _AT_implode("",@file($fichier)))

{

// exploding on <item>

$tmp = preg_split("/<\/?".$item.">/",$chaine);

// for each <item>

for($i=1;$i<sizeof($tmp)-1;$i+=2)

// reading the domain wanted <champ>

foreach($champs as $champ)

{

$tmp2 = preg_split("/<\/?".$champ.">/",$tmp[$i]);

// add to board

$tmp3[$i-1][] = @$tmp2[1];

}

// return the board

return $tmp3;

}

}

// Exemple :

$xml = lit_xml("tableau_eso.xml","sensor",$tab = array("sensor_number","calibrationdate","weight","conductivity","temperature","pressure"));

// how many members are there in the array

$var_count = count($tab);

// print it

echo "<table border>";

foreach($xml as $row)

{

?>

<html>

<body>

<!--build the board with all datas received, since the beginning-->

<!--.$row[] is the line of the array which will be in the board -->

<tr>

<font size=2 color=gray></font>

<?php for($i = 0;$i < $var_count; $i++) {

echo "<td align=center>".$row[$i]."</td>";

}?>

</tr>

</body>

</html>

<?php

}

echo "</table>" ;

?>

Ce code php récupère un tableau via un fichier XML et l'implémente à chaque nouvelle saisie de formulaire

Merci d'avance pour votre aide

P.S, je sais que dans le code javascript, il faut mettre la réponse sur une seule ligne, mais je l'ai mis comme ça sur ce message afin de faciliter la compréhension

Modifié par gael_info
Lien vers le commentaire
Partager sur d’autres sites

en fait le problème n'est pas que ça ne marche pas.

Le formulaire apparait nickel, mais je n'arrive pas à récupérer ce que je rentre dans ce formulaire dans le fichier sitephp.php.

Pour reprendre le 1er exemple de bibi arnaud, c'est comme si le champ texte "société" ne pouvait être récupéré dans valid_contact.php

Lien vers le commentaire
Partager sur d’autres sites

var nb_rep = eval(form1.selec.value);

eval() permet d'évaluer un script, pas de récupérer une valeur...

Ensuite, pour atteindre le select, c'est :

var nb_rep = document.forms['form1'].selec[document.forms['form1'].selec.selectedIndex].value;

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...