Variable PHP dans Javascript
Résolu/Fermé
emrh
Messages postés
427
Date d'inscription
mardi 9 décembre 2014
Statut
Membre
Dernière intervention
9 avril 2024
-
Modifié le 26 mai 2022 à 12:14
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 - 29 mai 2022 à 20:11
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 - 29 mai 2022 à 20:11
A voir également:
- Variable PHP dans Javascript
- Telecharger javascript - Télécharger - Langages
- Easy php - Télécharger - Divers Web & Internet
- Javascript void 0 c'est quoi ✓ - Forum Réseaux sociaux
- Php natif - Forum PHP
3 réponses
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
29 mai 2022 à 12:21
29 mai 2022 à 12:21
Bonjour,
Puisque tu as modifié, dans l'attribut onclick, l'appel de la fonction js FactModal en lui passant directement les paramètres facture et id_client, tu n'as donc pas besoin d'utiliser la propriété .value sur les arguments de cette fonction.
Tu peux directement utiliser les arguments arg3 et arg4 ou même les renommer en FactNum et Client :
Puisque tu as modifié, dans l'attribut onclick, l'appel de la fonction js FactModal en lui passant directement les paramètres facture et id_client, tu n'as donc pas besoin d'utiliser la propriété .value sur les arguments de cette fonction.
Tu peux directement utiliser les arguments arg3 et arg4 ou même les renommer en FactNum et Client :
function FactModal(FactNum, Client){ console.log(FactNum); console.log(Client); // ...
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
26 mai 2022 à 12:25
26 mai 2022 à 12:25
Bonjour
Il nous faudrait le début du code ou au moins la partie où tu initialise ta variable $facture ...
Il nous faudrait le début du code ou au moins la partie où tu initialise ta variable $facture ...
emrh
Messages postés
427
Date d'inscription
mardi 9 décembre 2014
Statut
Membre
Dernière intervention
9 avril 2024
20
Modifié le 29 mai 2022 à 09:41
Modifié le 29 mai 2022 à 09:41
Mon erreur vient du fait que la page qui fonctionne contient qu'un seul client et une seule facture, du coup la variable client récupérée par var Client = "<?php Print($facture['id_client']); ?>"; fonctionne, ce qui n'est pas le cas de la page factures.php qui est un tableau contenant plusieurs clients. Les variables n° de facture et n° de client ne sont pas transmises à Javascript d'où le message d'erreur...
En faisant des recherches, j'ai trouvé ça qui devrait aller :
(J'ai viré au passage value="<?php echo $facture['facture'];?>" qui à mon avis ne sert à rien)
Je n'ai plus de message d'erreur en console, le modal s'ouvre bien mais reste vide... Il doit y avoir encore un problème au passage des variables :
Console :
>>undefined
>>undefined
En faisant des recherches, j'ai trouvé ça qui devrait aller :
<input type="image" class="td-icone" id="FactBtn" alt="Login" src="img/loupe.png" onclick='FactModal("<?php echo $facture['facture'];?>" , "<?php echo $facture['id_client']; ?>")' alt="Visualiser cette facture" title="Visualiser cette facture">
(J'ai viré au passage value="<?php echo $facture['facture'];?>" qui à mon avis ne sert à rien)
Je n'ai plus de message d'erreur en console, le modal s'ouvre bien mais reste vide... Il doit y avoir encore un problème au passage des variables :
//##################### M O D A L F A C T ################### function FactModal(arg3,arg4){ var FactNum = arg3.value; var Client = arg4.value; console.log(FactNum); console.log(Client); var infoFact = document.getElementById("IdFact"); infoFact.textContent = FactNum; $.ajax({ type:'POST', url:'facture-visualiser.php', data: { FactClient: FactNum, ClientNum: Client }, /*data:'FactClient='+FactClient,*/ success:function(html){ $('#facture-body').html(html); } }); var modal = document.getElementById("FactModal"); var span = document.getElementsByClassName("close2")[0]; modal.style.display = "block"; span.onclick = function(){ modal.style.display = "none"; } window.onclick = function(event) { if (event.target == modal) { modal.style.display = "none"; } } }
Console :
>>undefined
>>undefined
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
>
emrh
Messages postés
427
Date d'inscription
mardi 9 décembre 2014
Statut
Membre
Dernière intervention
9 avril 2024
29 mai 2022 à 09:39
29 mai 2022 à 09:39
Impossible pour nous de le savoir
Il faut que tu ajoutes des consoles.log dans ton code JavaScript pour voir le contenu des variables..
Et il faudrait également regarder la réponse ajax que tu peux voir via la console de ton navigateur internet...
Il faut que tu ajoutes des consoles.log dans ton code JavaScript pour voir le contenu des variables..
Et il faudrait également regarder la réponse ajax que tu peux voir via la console de ton navigateur internet...
emrh
Messages postés
427
Date d'inscription
mardi 9 décembre 2014
Statut
Membre
Dernière intervention
9 avril 2024
20
>
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
29 mai 2022 à 09:53
29 mai 2022 à 09:53
J'ai des console.log en lignes 5 et 6 qui sortent undefined pour les 2 variables...
La partie while ($facture = $req_factures->fetch()) { ?> pour la création du tableau fonctionne bien puisqu'il s'affiche correctement et que <a href="client-fiche.php?id_client=<?php echo $facture['id_client'];?>"> ouvre la bonne page...
Je pense que je ne sais pas passer 2 variables et que le problème doit se situer ici :
onclick="FactModal(<?php echo $facture['facture'];?> , <?php echo $facture['id_client']; ?>)"
et là :
function FactModal(arg3,arg4){
var FactNum = arg3.value;
var Client = arg4.value;
La partie while ($facture = $req_factures->fetch()) { ?> pour la création du tableau fonctionne bien puisqu'il s'affiche correctement et que <a href="client-fiche.php?id_client=<?php echo $facture['id_client'];?>"> ouvre la bonne page...
Je pense que je ne sais pas passer 2 variables et que le problème doit se situer ici :
onclick="FactModal(<?php echo $facture['facture'];?> , <?php echo $facture['id_client']; ?>)"
et là :
function FactModal(arg3,arg4){
var FactNum = arg3.value;
var Client = arg4.value;
emrh
Messages postés
427
Date d'inscription
mardi 9 décembre 2014
Statut
Membre
Dernière intervention
9 avril 2024
20
>
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
29 mai 2022 à 10:13
29 mai 2022 à 10:13
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
>
emrh
Messages postés
427
Date d'inscription
mardi 9 décembre 2014
Statut
Membre
Dernière intervention
9 avril 2024
29 mai 2022 à 10:17
29 mai 2022 à 10:17
Je t'invite à utiliser firefox pour debuguer de l'Ajax...et pense bien à activer dans la console, ke debugage xhr pour pouvoir voir les appels ajax et les réponses.
En ce qui concerne les consoles.log il serait peut-être bien également d'en faire un sur les data que tu envoies dans ton Ajax...
En ce qui concerne les consoles.log il serait peut-être bien également d'en faire un sur les data que tu envoies dans ton Ajax...
emrh
Messages postés
427
Date d'inscription
mardi 9 décembre 2014
Statut
Membre
Dernière intervention
9 avril 2024
20
26 mai 2022 à 14:35
26 mai 2022 à 14:35
Ça se passe dans une boucle :
<?php while ($facture = $req_factures->fetch()) { ?> <tr> <td data-label="N°" class="td-centre"> <?php echo $facture['facture']; ?> </td> <td data-label="DATE" class="td-centre"> <?php $date_facture = date("d/m/Y", strtotime($facture['date_facture'])); echo $date_facture; ?> </td> <td data-label="CLIENT"> <a href="client-fiche.php?id_client=<?php echo $facture['id_client']; ?>"> <img src="img/<?php echo $type; ?>> </a> </td> <td data-label="TOTAL" class="td-droite"> <?php $total = $facture['Total_facture']; echo number_format($total, 2, ",", ".") . ' '; ?> </td> <td data-label="VERST" class="td-droite"> <?php $verst = $facture['VERST']; if ($verst <> NULL) { echo number_format($verst, 2, ",", ".") . ' '; } ?> </td> <td data-label="SOLDE" class="td-droite"> <?php $solde = $total - $verst; if ($solde <> 0) { echo number_format($solde, 2, ",", ".") . ' '; } ?> </td> <td class="td-centre"> <!-- ############## FACTURE VISUALISER ####################--> <input type="image" class="td-icone" id="FactBtn" alt="Login" src="img/loupe.png" value="<?php echo $facture['facture']; ?>" onclick="FactModal(this)" alt="Visualiser cette facture" title="Visualiser cette facture"> ... / ... </tr> <tr class="separateur"></tr> <?php }
Modifié le 29 mai 2022 à 14:15
C'était si simple !!! MERCI PITET !
Merci également à Jordan pour t'être penché sur mon problème !
Tu dis "Puisque tu as modifié..." ça veut dire que l'ont pouvait passer par l'affectation de valeurs à des variables var FactNum = arg3.value;
Si oui, comment fallait il faire à l'appel de la fonction pour conserver cette présentation ?
29 mai 2022 à 17:40
A la place de value, tu pourrais utiliser des attributs data-* pour stocker le numéro de facture et l'id du client. Il faudra alors utiliser la propriété dataset au lieu de value sur l'élément passé en paramètre.
Mais le plus simple dans ton cas est sûrement de passer directement les données en paramètres de la fonction comme tu as fait dans tes dernières modifications ;)
29 mai 2022 à 20:11