Variable PHP dans Javascript
Résolu
emrh
Messages postés
427
Date d'inscription
Statut
Membre
Dernière intervention
-
emrh Messages postés 427 Date d'inscription Statut Membre Dernière intervention -
emrh Messages postés 427 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
J'essaie de récupérer dans Javascript deux variables PHP (N° de facture + N° de client) pour les passer à une page externe de traitement PHP afin de rapatrier sur la page d'appel ajax les enregistrements d'une bdd correspondants.
Le code fonctionne parfaitement sur une page mais bizarrement produit un message d'erreur dans la console sur une autre page, et rien ne s'affiche :
var Client = "<br />
<b>Notice</b>: Trying to access array offset on value of type bool in <b>/var/www/html/gite/gestion/factures.php</b> on line <b>375</b><br />
";
Voici le code en question :
La variable $facture['id_client'] s'affiche parfaitement bien à d'autre endroit de la page.
Je ne mets pas le code de la page de traitement puisque l'erreur se produit avant qu'elle ne soit appelée et que d'autre part elle fonctionne bien lorsqu'elle est appelée par une autre page de ma webapplication.
Merci d'avance pour votre aide !
J'essaie de récupérer dans Javascript deux variables PHP (N° de facture + N° de client) pour les passer à une page externe de traitement PHP afin de rapatrier sur la page d'appel ajax les enregistrements d'une bdd correspondants.
Le code fonctionne parfaitement sur une page mais bizarrement produit un message d'erreur dans la console sur une autre page, et rien ne s'affiche :
var Client = "<br />
<b>Notice</b>: Trying to access array offset on value of type bool in <b>/var/www/html/gite/gestion/factures.php</b> on line <b>375</b><br />
";
Voici le code en question :
<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">
function FactModal(arg3){ var FactNum = arg3.value; var Client = "<?php Print($facture['id_client']); ?>"; //<---------------- Ligne 375 var infoFact = document.getElementById("IdFact"); infoFact.textContent = FactNum; $.ajax({ type:'POST', url:'facture-visualiser.php', data: { FactClient: FactNum, ClientNum: Client }, 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"; } } }
La variable $facture['id_client'] s'affiche parfaitement bien à d'autre endroit de la page.
Je ne mets pas le code de la page de traitement puisque l'erreur se produit avant qu'elle ne soit appelée et que d'autre part elle fonctionne bien lorsqu'elle est appelée par une autre page de ma webapplication.
Merci d'avance pour votre aide !
Configuration: Linux / Chrome 101.0.4951.64
A voir également:
- Variable PHP dans Javascript
- Easy php - Télécharger - Divers Web & Internet
- Telecharger javascript - Télécharger - Langages
- Expert php pinterest - Télécharger - Langages
- Javascript void 0 c'est quoi ✓ - Forum Réseaux sociaux
- Php alert ✓ - Forum PHP
3 réponses
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); // ...
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 ...
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
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;
Ç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 }
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 ?
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 ;)