Problème en php et Javascript [Résolu]

Signaler
Messages postés
42
Date d'inscription
mardi 23 mars 2004
Statut
Membre
Dernière intervention
5 décembre 2015
-
Messages postés
32942
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 juin 2021
-
Bonjour à tous,

Pour diverses raisons, je voudrai dynamisé un formulaire php avec des calculs javascript (éviter de recharger la page toutes les 2 mintutes )

Voici le bout de code qui ne fonctionne pas :


<?php

$nb_jours = 30 ;

for($i = 1; $i <= $nb_jours; $i++)
{

?>
<script>
document.getElementById(target<?php echo $i; ?>).value = 'test <?php echo $i; ?>' ;
</script>

<input type="text" id="target<?php echo $i; ?>" style="font-size:12px;" /> <br />

<?php } ?>



Or si je change
document.getElementById(target<?php echo $i; ?>).value
par
document.getElementById(target12).value

ça fonctionne mais uniquement sur la ligne 12 forcement.

Je voudrai affecter toutes les ligne (ici 30)
donc ligne 1 contient un champ avec "test 1"
ligne 2 contient un champ avec "test 2"
ligne 3 contient un champ avec "test 3"
...
Quelqu'un aurait-il une idée ?

1 réponse

Messages postés
32942
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 juin 2021
351
Bonjour,

Il est préférable de sortir le JS de la boucle ... et de le placer à la fin.



<?php
$nb_jours = 30 ;
for($i = 1; $i <= $nb_jours; $i++){
   echo "<input type='text' class='target' id='target".$i."' style='font-size:12px;'/> 
	       <br />";
}
 ?>
 
 <script type="text/javascript">
 // Premiere possibilité en utilisant la varable $nb_jours
 var nb = "<?php echo $nb_jours; ?>";
 for(var i=1;i<=nb;i++){
  var id_elem = "target"+i;
	var nouvelleValeur = "test "+i ;
	document.getElementById(id_elem).value = nouvelleValeur;
 }
 
 //Deuxieme possibilite (en utilisant la class pour parcourir..)
 var elems = document.getElementsByClassName('target');
 for (var i = 0; i < elems.length; ++i) {
  var id_elem = "target"+i;
	var nouvelleValeur = "test "+i ;
	document.getElementById(id_elem).value = nouvelleValeur;
}
 </script>




Je t'ai mis deux possibilités de code JS.
A toi de choisir celle que tu préfères