Ajouter une variable dans un message alert javascript

Eléphanteau du PHP | 34 Messages

06 oct. 2019, 10:35

Bonjour à toutes et à tous,

Dans le traitement d'un formulaire, j'ai un INSERT INTO avec un message me confirmant que l'enregistrement a bien été fait.
echo "<script type= 'text/javascript'>alert('Opération bien enregistrée');</script>";
Comment puis-je faire pour que ce message reprenne une variable du formulaire ?

J'ai essayé un simple echo mais ça ne fonctionne pas.

Je voudrais que le message indique.

'Opération bien enregistrée.
La valeur de SL est de : XXXX'

Le XXXX est un calcul qui est fait dans le formulaire et est enregistré dans la base.

Merci d'avance pour votre aide.

Bon dimanche ;)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

06 oct. 2019, 12:39

En faisant une concaténation du texte de ton message avec la variable qui contient la valeur issue de PHP.
http://www.lephpfacile.com/cours/5-conc ... ux-chaines
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 34 Messages

06 oct. 2019, 13:55

Re bonjour @rthur,

Merci pour ton lien.

J'avais oublié les . quand j'avais testé, ce qui me plantait la page.
echo "<script type= 'text/javascript'>alert('New Record Inserted Successfully'.$sl_cours. 'A prendre en compte');</script>";
Effectivement, plus d'erreur, mais plus rien ne s'enregistre dans la base de données.
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // <== add this line
$sql = "INSERT INTO operations (id_membre, date_entree, heure_entree, exchange, paire, long_short, cours_achat, quantite_achat, total_achat, levier, sl_pourcentage, sl_cours )
VALUES ('".$_POST["id_membre"]."','".$_POST["date_entree"]."','".$_POST["heure_entree"]."','".$_POST['exchange']."','".$_POST['paire']."','".$_POST['long_short']."','".$_POST['cours_achat']."','".$_POST['quantite_achat']."','".$_POST['total_achat']."','".$_POST['levier']."','".$_POST['sl_pourcentage']."','".$_POST['sl_cours']."')";
    
$sl_cours = $_POST('sl_cours');
        
if ($dbh->query($sql)) {
echo "<script type= 'text/javascript'>alert('New Record Inserted Successfully'.$sl_cours. 'A prendre en compte');</script>";
}
Si j'enlève
$sl_cours = $_POST('sl_cours');
le formulaire s'enregistre bien dans la base mais aucun message non plus.

Merci pour votre aide.

Mammouth du PHP | 2703 Messages

06 oct. 2019, 15:29

il faut regarder la console de son navigateur, ce code, qui ne reprend pas l'exemple donné dans le lien donné, génère un code avec une erreur javascript.

Eléphanteau du PHP | 34 Messages

06 oct. 2019, 18:17

Bonjour or1,

Merci pour ton intervention.

Je ne comprends pas ta remarque quant à la non concordance par rapport au lien donné.
echo "<script type= 'text/javascript'>alert('Opération bien enregistrée. '.$sl_cours.' est le cours planché.');</script>";
J'ai bien fait une concaténation non ?

Code de l'erreur javascript

WebExtenstion context not found : ExtensionParent.jsm:1239:13

Quand je clique sur l'erreur, j'ai un fichier avec ce texte-ci surligné
throw new Error("WebExtension context not found!");

Merci

Mammouth du PHP | 2703 Messages

06 oct. 2019, 18:29

l'exemple :
echo 'Bonjour '.$nom.' !';

donc, non, ce n'est pas comme dans l'exemple, ce qui fait que le code généré n'est pas valide en javascript.

Eléphanteau du PHP | 34 Messages

06 oct. 2019, 18:44

Merci or1 pour ta réponse.

Je veux bien mais je vois pas la différence.

Mon texte est entre ' ' La variable est entre des . .

Qu'est ce que j'ai loupé qui est aussi évident que le nez au milieu du visage ?

Merci

Mammouth du PHP | 2703 Messages

06 oct. 2019, 19:06

echo "enregistrée '.$sl_cours.' est";
echo 'Bonjour '.$nom.' !';

Eléphanteau du PHP | 34 Messages

06 oct. 2019, 20:43

Vraiment désolé mais ça fonctionne pas.

Les données s'enregistrent bien mais aucun message n'apparaît.
echo "<script type= 'text/javascript'>alert('Opération bien enregistrée'.$sl_cours.'est le cours planché');</script>";
J'ai enlevé les espaces entre les ' ' mais je doute que ce soit ça.

Je vois pas mon erreur par rapport à ton exemple.

Merci

Mammouth du PHP | 2703 Messages

06 oct. 2019, 20:50

exécute
$nom = "wags";
echo "Bonjour '.$nom.' !";
echo 'Bonjour '.$nom.' !';
dans une page test et regarde le résultat.

Eléphanteau du PHP | 34 Messages

06 oct. 2019, 20:59

Bonjour '.wags.' !
Bonjour wags !

Oui OK je connais au moins ça ;) ;)

Mais ça ne résout pas mon problème.

Le script (de echo) doit bien être entre " " sinon ça fonctionne pas. (si je mets ' ', ça fonctionne pas)

Dès que j'ajoute une variable ça fonctionne plus du tout.

Merci pour ton aide et ta patience

Mammouth du PHP | 2703 Messages

06 oct. 2019, 21:03

ça peut marcher en commençant par ', en modifiant un peu le reste.
ça peut marcher en commençant par "
mais pas une fois l'un, une fois l'autre.

https://www.php.net/manual/fr/language.types.string.php

Eléphanteau du PHP | 34 Messages

06 oct. 2019, 21:22

Là, déjà que je comprends pas, je suis totalement perdu.

J'ai essayé en ajoutant
<script>alert("<?php echo $sl_cours; ?>")</script>
Brackets me donne une erreur sur le { le /script.

Je sais plus là. J'ai beau cherché partout, ça fonctionne pas et je vois pas le souci malgré tes pistes.

ViPHP
ViPHP | 2577 Messages

08 oct. 2019, 15:40

Bonjour,

Je te conseille de regarder le code html que tu génères. Genre click droit puis afficher le code source ou click droit puis inspecter. En voyant <script>alert("XXXX")</script> tu comprendras peut être ton problème. Moi je suis nul en javascript.
Il faut garder en tête que php génère du html et du javascript.
Quand ca ne marche pas :
- soit php n'a pas généré ce que tu voulais,
- soit ce que tu voulais ne marche pas.

Il me semble que tu as aussi un problème de messages d'erreur. Fais une page qui contient juste : <?PHP echo 'PROVOQUER UNE ERREUR,$a;
Ensuite regarde dans le fichier php.ini du coté de error_reporting et display_error (error_display ?) pour faire en sorte de voir un message indiquant que $a n'est pas initialisé dans le navigateur.