Ma variable A la valeur Null ou n'est pas un objet

4lman78 Messages postés 44 Date d'inscription jeudi 19 octobre 2006 Statut Membre Dernière intervention 9 février 2010 - 22 juil. 2009 à 19:32
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 - 24 juil. 2009 à 10:54
Bonjour j'ai un soucis,

J'ai ma page :

http://www.poussieresdepistes.com/page/comand.php?product_partenaire=BLACK-STAR

Sous Firefox -> aucun soucis,
Sous IE -> Un soucis :

J'ai ce message la : 'p4' a la valeur null ou n'est pas un objet.

Pour informations,
p1, p2, p3 sont des produits (Dans cette mini-boutique, il n'y a que 3 produits) Lors du calcul, il vérifie si le 4ème produit est présent:

if(typeof(p4)!='undefined') {

Je me demande si c'est pas cette ligne qui pose problème.

function calcul_form() {
with (document.forms.form1) {
total.value	= 0;
total.value	= (((total.value*100)+(comand_fdp.value*100))/100).toFixed(2); 
if(typeof(p1)!='undefined') {
p1.value = (((q1.value*100)*(pu1.value*100))/10000).toFixed(2);
total.value	= (((total.value*100)+(p1.value*100))/100).toFixed(2);
if(typeof(p2)!='undefined') {
p2.value = (((q2.value*100)*(pu2.value*100))/10000).toFixed(2);
total.value	= (((total.value*100)+(p2.value*100))/100).toFixed(2);
if(typeof(p3)!='undefined') {
p3.value = (((q3.value*100)*(pu3.value*100))/10000).toFixed(2);
total.value	= (((total.value*100)+(p3.value*100))/100).toFixed(2);
if(typeof(p4)!='undefined') {
p4.value = (((q4.value*100)*(pu4.value*100))/10000).toFixed(2);
total.value	= (((total.value*100)+(p4.value*100))/100).toFixed(2);	


Que faut-il modifié pour résoudre le problème, merci à tous

11 réponses

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
23 juil. 2009 à 06:33
Bonjour,

bah... je je met un html qui pourrait convenir
pas de soucis...

vous auriez d'ailleurs pu nous le mettre ce html !
ça nous aurait évité de le taper
mais surtout de faire quelque chose de
différent de vous, qui fonctionne, alors
que vous, mon foie, il y a peut-être des
erreurs

remarque : disons... curieux de faire ça comme ça ?!?
mais nous n'avons pas toutes les billes ?

Cordialement [mon Site] [M'écrire] Bul
0
jdmcreator Messages postés 647 Date d'inscription samedi 30 décembre 2000 Statut Membre Dernière intervention 20 juillet 2012 7
23 juil. 2009 à 19:22
Bonjour,

Essaye de faire plutôt ceci :

if(typeof p4!='undefined')

JDMCreator
--------
Participez au nouveau projet : la wiki sur le javascript !
fr.jsinfo.wikia.com
0
jdmcreator Messages postés 647 Date d'inscription samedi 30 décembre 2000 Statut Membre Dernière intervention 20 juillet 2012 7
23 juil. 2009 à 19:23
Ah non, laisse faire, je viens de trouver ton erreur. C'est :

if(typeof p4!=undefined)
JDMCreator
--------
Participez au nouveau projet : la wiki sur le javascript !
fr.jsinfo.wikia.com
0
4lman78 Messages postés 44 Date d'inscription jeudi 19 octobre 2006 Statut Membre Dernière intervention 9 février 2010
23 juil. 2009 à 19:53
J'ai essayé:

if(typeof p4!= undefined)
if(typeof (p4)!=undefined)
if(typeof (p4)!='undefined')
if(typeof p4!='undefined')

toujours la même erreur.

Et voila le code HTML

<td style="width: 83%;" colspan="3"><table cellpadding="0" cellspacing="0" style="width: 100%; border-width: 0px;">
----,  <?php echo stripslashes(utf8_decode($donnees['product_name'])); ?> \" value =\"<?php echo stripslashes($donnees['product_name']); ?>\" size= \"60\" readonly=\"readonly\"></td>
 <?php echo stripslashes(utf8_decode($donnees['product_price'])); ?>" value="<?php echo $donnees['product_price']; ?>" size="3" onChange="champ_verrouille(this,<?php echo $donnees['product_price']; ?>)">€  |
" size ="3" maxlength="3" onBlur="test_champ(this)" onChange="affichechoix('s<?php echo stripslashes($donnees['id_product_partenaire']); ?>', this)" > |
</td>
</tr>
<tr>
<td style="height: 3px;"></td>
</tr>


Merci a tous !
0

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

Posez votre question
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
24 juil. 2009 à 08:39
1° vous pourriez mettre en forme
difficile de voir comme c'est
2° en php ? comment on devine ce que
ça génère ?
vous êtes devin et vous pensez que
tous les lecteurs ici le sont également ???
néanmoins, ça m'étonnerait que
name= "???<?php echo .... crée un name="p4" !
c'est la page html générée qu'il nous faut !
et d'ailleurs si vous la regardiez
vous comprendriez probablement ce qui se passe

ch'tiot exemple qui baigne
<script>
function calcul_form() {
with (document.forms.form1) {
total.value	= 0;
total.value	= (((total.value*100)+(comand_fdp.value*100))/100).toFixed(2); 
if(typeof(p1)!='undefined') 
{	p1.value = (((q1.value*100)*(pu1.value*100))/10000).toFixed(2);
total.value	= (((total.value*100)+(p1.value*100))/100).toFixed(2);
if(typeof(p2)!='undefined') 
{	p2.value = (((q2.value*100)*(pu2.value*100))/10000).toFixed(2);
total.value	= (((total.value*100)+(p2.value*100))/100).toFixed(2);
if(typeof(p3)!='undefined') 
{	p3.value = (((q3.value*100)*(pu3.value*100))/10000).toFixed(2);
total.value	= (((total.value*100)+(p3.value*100))/100).toFixed(2);
if(typeof(p4)!='undefined') 
{	p4.value = (((q4.value*100)*(pu4.value*100))/10000).toFixed(2);
total.value	= (((total.value*100)+(p4.value*100))/100).toFixed(2);	
}
}
}
}
}
}
</script>
<form name="form1" />


   

   

   

   




</form>



y compris bien entendu en mettant
< !-- input type ="text" name="p4" />
0
4lman78 Messages postés 44 Date d'inscription jeudi 19 octobre 2006 Statut Membre Dernière intervention 9 février 2010
24 juil. 2009 à 08:45
Le truc qui se passe, c'est que p4 n'existe pas dans toute les exécutions de la page

Comment faire comprendre que si p4 n'existe pas, il passe a l'instruction suivante.
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
24 juil. 2009 à 09:02
ben... faut lire ce qu'on écrit ?!?
y compris bien entendu en mettant
<!--input type="text" name="p4" />


ce qui veut bien dire que P4 n'existerait pas !
0
4lman78 Messages postés 44 Date d'inscription jeudi 19 octobre 2006 Statut Membre Dernière intervention 9 février 2010
24 juil. 2009 à 09:35
oui quand p4 existe ca bloque a p5 et quand p5 existe ca bloque a p6.... Comment faire alors ?
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
24 juil. 2009 à 10:32
c'est du à vos tests !
si 1
{ traiter 1
si 2
{ traiter 2
si 3
{ ....
}
}
}

imagez un peu que vous ayez... disons 38694 produits ?
vous allez faire 38694 tests ?
et le jour où vous en ajoutez ? bonjour la maintenance

perso je ferais :
le même name pour les produits, le même pour
leur quantité, le même pour leur prix...
une ch'tiote boucle et basta

et pour que cela soit aussi simple à
gérer coté serveur, j'utiliserais un
name avec des []

<form name="frm" ...>
    <... name="prod[]" .../>
    <... name="qte[]" .../>
    <... name="pu[]"... />
coté javascript on utilise
for ( var n=0;n<document.frm["prod[]"].length;n++ )
{ traitement de document.frm["prod[]"][n].value
  et le reste
}
coté php, $_POST['prod'] est un array
les autres champs aussi
0
4lman78 Messages postés 44 Date d'inscription jeudi 19 octobre 2006 Statut Membre Dernière intervention 9 février 2010
24 juil. 2009 à 10:41
J'ai tout fait comme ca. Il n'y a pas plus de 10 produits.

De plus j'ai pas envie de changé le mécanisme car il fonctionne parfaitement.

Donc la condition que je souhaite avec :

if (p4 existe) {
Alors action ->
}

Que cela marche si p4 est déclaré ou pas.
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
24 juil. 2009 à 10:54
c'est somme vous le sentez...

mon exemple fonctionne
et il suffit que vous changiez
la logique de vos tests.
si 1
{ traitement de 1 }
si 2
{ traitement de 2 }
....

vous vous préparez de futurs
plaisirs de maintenance
perso écrire 10 séquences identiques
dans un script m'indispose.
mais chacun ses goûts et la
caravane passe
0
Rejoignez-nous