Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/01/2011, 20h50   #1
Membre habitué
 
Avatar de geforce
 
Femme
Développeur informatique
Inscription : janvier 2010
Messages : 467
Détails du profil
Informations personnelles :
Sexe : Femme

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2010
Messages : 467
Points : 149
Points : 149
Envoyer un message via Skype™ à geforce
Par défaut [JS] Recupérer des valeurs d'input généré en php

Bonjour,

je voudrai récupérai les valeur de champs (input) d'un tableaux construit dynamiquement en php.

une partie du code php:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
for($r=0; $r< $countAnciente; $r++)  
   if (($ancientes[$r] != "TOTAL") && ($ages[$i] != "TOTAL"))  
  	{ $toto1 += $mat1[$j]['nbre'];  	 
      echo "<td><input name='tab".$r."".$i."' type='text' size='10' value='".$mat1[$j]['nbre']."' disabled='true' /> <input type='hidden' name='id_tab".$r."".$i."' value='".$mat1[$j++]['id']."' /></td>";
    }
    elseif (($ancientes[$r] != "TOTAL") && ($ages[$i] == "TOTAL")) 
     {
      echo "<td><input name='tabTotoColon' type='text' size='10' value='! solution JS?' /></td>";
     }
     elseif((($ancientes[$r] == "TOTAL") && ($ages[$i] != "TOTAL"))) { //echo "Toto : ".$toto."<br/>";echo "TotoLign : ".$totoLign."<br/>"; //$k --; $i--;
       echo "<td><input name='tabTotoLign' type='text' size='10' value='".$toto1."' /></td>";
       $totoLign += $toto1; $toto1 = 0;
      }
      else {
      	   echo "<td><input name='tabTotoDeToto' type='text' size='10' value='".$totoLign."' /></td>";	
           }
code JS:
Code :
1
2
3
4
5
function f()
{ 
 var obj = document.getElementsByName('tab00');
  alert('le champ a pour valeur : "'+obj.value+"'");
}
je fait un appel à la fonction sur l’évènement:
j'ai toujours la valeur "undefined" comme si le JS s’exécute avant le php (c'est un peut normale) mais comment faire pour que ce soit le contraire ?

cordialement
GeForce
geforce est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2011, 21h56   #2
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 930
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 930
Points : 4 744
Points : 4 744
Bonjour,
la méthode getElementsByName renvoie une nodeList, tu auras remarqué le S après Element.

Ceci veut dire que lorsque tu fais obj.value tu demandes la value de la nodeList qui n'existe effectivement pas, il te faut faire appel aux différents élément de cette nodeList comme on le fait pour un tableau donc
- obj[0].value pour le premier élément
- obj[1].value pour le deuxième élément
et ainsi de suite

Nota:
si tu n'as qu'un élément qui a le même name tu peux également passer par la méthode getElementById
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/01/2011, 08h43   #3
Membre habitué
 
Avatar de geforce
 
Femme
Développeur informatique
Inscription : janvier 2010
Messages : 467
Détails du profil
Informations personnelles :
Sexe : Femme

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2010
Messages : 467
Points : 149
Points : 149
Envoyer un message via Skype™ à geforce
Bonjour,

je voudrai savoir s'il existe une solution pour faire à appel à une fonction JS (pure, sans framework) de la façon suivante :
Code :
1
2
window.orig_onload = window.onload;
window.onload = function() {....}
sans utiliser :
Code :
<body onload="function();">
c'est pour être sûr que le JS ne s’exécute pas avant le chargement de la page et l’exécution du php.

merci d'avance

Cordialement
GeForce
geforce est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2011, 09h01   #4
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
Citation:
c'est pour être sûr que le JS ne s’exécute pas avant le chargement de la page et l’exécution du php.
?

heu php est toujours exécuté AVANT le js ...
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2011, 15h41   #5
Membre habitué
 
Avatar de geforce
 
Femme
Développeur informatique
Inscription : janvier 2010
Messages : 467
Détails du profil
Informations personnelles :
Sexe : Femme

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2010
Messages : 467
Points : 149
Points : 149
Envoyer un message via Skype™ à geforce
Citation:
Envoyé par SpaceFrog Voir le message
?
heu php est toujours exécuté AVANT le js ...
oui, mais le JS peut s’exécuter avant le chargement du HTML, c'est pour sa que il faut que j'utilise mais donne met page je n'est pas body (dans cette page)

c'est pour sa que je cherche l’équivalent en JS ?
geforce est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2011, 15h42   #6
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
une page sans body ???

c'est une erreur de codage ça ne doit pas exister !
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2011, 16h31   #7
Membre habitué
 
Avatar de geforce
 
Femme
Développeur informatique
Inscription : janvier 2010
Messages : 467
Détails du profil
Informations personnelles :
Sexe : Femme

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2010
Messages : 467
Points : 149
Points : 149
Envoyer un message via Skype™ à geforce
Citation:
Envoyé par SpaceFrog Voir le message
une page sans body ???

c'est une erreur de codage ça ne doit pas exister !
le ficher est include dans un autre qui lui à un Body ?
geforce est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2011, 16h33   #8
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
alors le onload convient .
il faut juste utiliser une astuce de surcharge du onload car si je te susi bien, au moment ou tu fais l'include la blaise body est déja rédigée par php et tu ne peux pas l'anticiper ?
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2011, 17h44   #9
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 419
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 419
Points : 2 806
Points : 2 806
1) ajouter un id sur l'élément input
Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
for($r=0; $r< $countAnciente; $r++) {
  if (($ancientes[$r] != "TOTAL") && ($ages[$i] != "TOTAL"))
  { $toto1 += $mat1[$j]['nbre'];
    echo "<td><input id='tab".$r.$i."' name='tab".$r.$i."' type='text' size='10' value='".$mat1[$j]['nbre']."' disabled='true' /> <input type='hidden' name='id_tab".$r."".$i."' value='".$mat1[$j++]['id']."' /></td>";
  }
  elseif (($ancientes[$r] != "TOTAL") && ($ages[$i] == "TOTAL"))
  {
    echo "<td><input name='tabTotoColon' type='text' size='10' value='! solution JS?' /></td>";
  }
  elseif((($ancientes[$r] == "TOTAL") && ($ages[$i] != "TOTAL"))) { //echo "Toto : ".$toto."<br/>";echo "TotoLign : ".$totoLign."<br/>"; //$k --; $i--;
    echo "<td><input name='tabTotoLign' type='text' size='10' value='".$toto1."' /></td>";
    $totoLign += $toto1; $toto1 = 0;
  }
  else {
    echo "<td><input name='tabTotoDeToto' type='text' size='10' value='".$totoLign."' /></td>";
  }
}
2) utiliser getElementById et non getElementsByNames
Code :
1
2
3
4
5
6
7
8
myNS={
  func : function () {
    var obj = document.getElementsById('tab00');
    if obj {
      alert('le champ a pour valeur : "'+obj.value+"'");
    }
  }
}
3) utiliser le gestionnaire d'évènement pour ajouter la fonction au onload sans supprimer celle qui y sont déja
Code :
1
2
3
4
5
6
7
8
9
 
#ajouter la fonction au onload
if (window.addEventListener) {
  window.addEventListener("load", myNS.func, false);
} else if (document.addEventListener) {
  document.addEventListener("load", myNS.func, false);
} else if (window.attachEvent) {
  window.attachEvent("onload", myNS.func);
}
A+JYT
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/01/2011, 18h47   #10
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 930
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 930
Points : 4 744
Points : 4 744
Citation:
Envoyé par sekaijin Voir le message
2) utiliser getElementById et non getElementsByNames
Code :
1
2
3
4
5
6
7
8
myNS={
  func : function () {
    var obj = document.getElementsById('tab00');
    if obj {
      alert('le champ a pour valeur : "'+obj.value+"'");
    }
  }
}
A+JYT
Attention erreur de frappe dans le code ci dessus pas de S dans getElementById
Code :
var obj = document.getElementById('tab00');
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2011, 21h50   #11
Membre habitué
 
Avatar de geforce
 
Femme
Développeur informatique
Inscription : janvier 2010
Messages : 467
Détails du profil
Informations personnelles :
Sexe : Femme

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2010
Messages : 467
Points : 149
Points : 149
Envoyer un message via Skype™ à geforce
Citation:
Envoyé par sekaijin Voir le message
3) utiliser le gestionnaire d'évènement pour ajouter la fonction au onload sans supprimer celle qui y sont déja
Code :
1
2
3
4
5
6
7
8
9
 
#ajouter la fonction au onload
if (window.addEventListener) {
  window.addEventListener("load", myNS.func, false);
} else if (document.addEventListener) {
  document.addEventListener("load", myNS.func, false);
} else if (window.attachEvent) {
  window.attachEvent("onload", myNS.func);
}
Ok, merci sa marche Mais j'ai pas bien comprit la différence entre chaque if ? (si possible d'expliquer un peut)

merci d'avance
geforce est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2011, 20h52   #12
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 419
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 419
Points : 2 806
Points : 2 806
Citation:
Envoyé par geforce Voir le message
Ok, merci sa marche Mais j'ai pas bien comprit la différence entre chaque if ? (si possible d'expliquer un peut)

merci d'avance
l'évènement load est définit dans documentElement du DOM
mais la norme HTTP ne di(sai)t pas si l'attribut onload de l'élément Body correspond à l'objet document ou à l'objet window de plus sa gestion est antérieure à la spécification du W3C
on a donc suivant les navigateurs l'événement sur window ou sur document
et pour couronner le tout deux méthodes (toujours en fonction du navigateur)
addEventListener qui prend comme nom d'événement load
et
attachEvent qui prend comme nom d'événement onload

ce petit code teste donc l'existence des différentes méthodes sur les différents objet pour savoir la quelle utiliser

A+JYT
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h54.


 
 
 
 
Partenaires

Hébergement Web