Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Mariage du php et de javascript

1 réponse
Avatar
jul.lemaire
Bonjour,

je dois marier le php et le javascript pour calculer automatiquement le
total d'une commande, avec divers paramètres.

Malheureusement, lorsque l'on clique sur un bouton de type checkbox le
résultat attendu n'est pas le bon...
Pouvez vous m'aiguillez là dessus ?

Dans un premier temps je liste toutes ses annonces, chaque reference de
l'annonce a une checkbox devant pour la selectionner.

Et après en fait si la personne clic sur le radio bouton "formule"
avec la valeur 18.
Dès lors qu'il cochera un checkbox (ses annonces pour les payer), on
fera totalcommande +=18;

S'il coche le radio bouton "formule" avec la valeur 0
Dès lors qu'il cochera un checkbox (ses annonces pour les payer), on
fera totalcommande +=0;

Voici mon script allégé qui vous parlera plus je pense.
Merci

<?
require_once('Connections/dossin.php');
$var1_annonces = "0";
if (isset($_SESSION["MM_idmembre"])) {
$var1_annonces = (get_magic_quotes_gpc()) ? $_SESSION["MM_idmembre"]
: addslashes($_SESSION["MM_idmembre"]);
}
mysql_select_db($database_dossin, $dossin);
$query_annonces = sprintf("SELECT * FROM annonces WHERE
annonces.idmembre=%s", $var1_annonces);
$annonces = mysql_query($query_annonces, $dossin) or
die(mysql_error());
$row_annonces = mysql_fetch_assoc($annonces);
$totalRows_annonces = mysql_num_rows($annonces);

?>

<form action="[~98~]" method="post" enctype="multipart/form-data"
name="form1">

<div align="left">
<?php do { ?>
<?php if ($totalRows_annonces > 0) { // Show if recordset not empty
?>
<script language="JavaScript">
function calcule()
{
total_ht = 0;
total_ttc = 0;
compteur = 0;
if (document.form1.annonce-<?php echo $row_annonces['idannonce'];
?>.checked) total_ht += 18;
total_ttc = total_ht*1.196;
document.form1.MontantHT.value = Math.ceil(total_ht*100)/100;
document.form1.MontantTTC.value = Math.ceil(total_ttc*100)/100;}
</script>
<input type="checkbox" name="annonce-<?php echo
$row_annonces['idannonce']; ?>" onClick="calcule()"><font size="1">Ref:
<?php echo $row_annonces['idannonce']; ?> - <?php echo
$row_annonces['modele']; ?></font><br>
<?php } // Show if recordset not empty ?>
<?php } while ($row_annonces = mysql_fetch_assoc($annonces)); ?>
</div>

<p>
<table width="95%" height="" border="1" cellspacing="0">
<tbody>
<tr align=middle bgcolor=#99ccff>
<td colspan=2><b><font size="2">Montant de votre
commande</font></b></td>
</tr>
<tr bgcolor=white>
<td width="40%">
<div align=right><font size="2">Montant Total
H.T</font></div>
</td>
<td width="60%">
<input name="MontantHT" value="0">
<font size="2">EUROS </font></td>
</tr>
<tr bgcolor=lightgrey>
<td width="40%">
<div align=right><font size="2">Montant Total
T.T.C</font></div>
</td>
<td width="60%">
<input name="MontantTTC" value="0">
<font size="2">EUROS (T.V.A. 19,6%)</font></td>
</tr>
</tbody>
</table>
</p>
<table width="95%" height="" border="1" cellspacing="0">
<tr>
<td width="425" rowspan="2" bgcolor="#99ccff" ><div
align="center"><font size="2"><strong>OFFRE SPECIALE LANCEMENT<sup>
(1)</sup></strong></font></div>
<div align="center"></div></td>
<td width="164" colspan="" bgcolor="#99ccff" ><div
align="center"></div>
<div align="center"><font size="2"><strong>1 Mois
</strong></font></div></td>
<td width="316" colspan="2" bgcolor="#99ccff" ><div
align="center"><font size="2"><strong>3 Mois
</strong></font></div></td>
</tr>
<tr>
<td colspan="" bgcolor="#99ccff" ><div align="center"></div>
<div align="center"> <font size="2">
<input type="radio" name="formule" value="0"
onclick="alert('Etes-vous certain de ne pas vouloir beneficier de 3
mois pour vendre votre bateau ?')";>
<br>
<strong>GRATUIT</strong></font></div></td>
<td colspan="2" bgcolor="#99ccff" ><div align="center"> <font
size="2">
<input type="radio" name="formule" value="18" checked
onClick="calcule()">
<br>
<strong>18&euro;</strong> </font></div></td>
</tr>
</table>

<p align="center"><font size="4"><br>
<input type="submit" name="Submit" value="Choisir cette formule
pour vendre mon bateau">
</font></p>
<p align="center">&nbsp;</p>
<input type="hidden" name="idmembre" value="<? echo
$_SESSION["MM_idmembre"]; ?>">
<input type="hidden" name="MM_insert" value="form1">
</form>

1 réponse

Avatar
Olivier Miakinen

je dois marier le php et le javascript pour calculer automatiquement le
total d'une commande, avec divers paramètres.


Alors la toute première chose à savoir, et qui bizarrement ne semble
pas évident à tout le monde, c'est que ces deux langages ne se mixent
absolument pas (même si on peut bien sûr générer du JavaScript à partir
du PHP).

Cela signifie que même si au final tu génèreras ton JavaScript en PHP,
tu *peux* et probablement tu *dois* sérier les problèmes. Par exemple,
tu peux commencer par un fichier statique (non généré par PHP) pour
tester le JavaScript seul. Ou au contraire, si comme il est souhaitable
le JavaScript n'est qu'un petit « plus » facultatif, tu peux commencer
par le PHP seul, quitte à rajouter le JavaScript ensuite.

Maintenant, si tu as l'impression que je ne comprends rien à ton
problème parce que tu ne peux pas faire l'un sans l'autres, alors je
parierai que c'est toi qui n'as pas compris que le PHP s'exécute une
fois pour toute pour fournir une page HTML au navigateur, et qu'ensuite
seulement le navigateur exécute le JavaScript sans aucune possibilité
d'appeler du PHP avant la prochaîne requête HTTP.

Voir : <http://faqfclphp.free.fr/#rub2.3&gt;.

Malheureusement, lorsque l'on clique sur un bouton de type checkbox le
résultat attendu n'est pas le bon...
Pouvez vous m'aiguillez là dessus ?


Regarde le source HTML généré par PHP : est-ce qu'il ressemble à ce que
tu veux, avant de passer la main au navigateur et à JavaScript ?

Dans un premier temps je liste toutes ses annonces, chaque reference de
l'annonce a une checkbox devant pour la selectionner.


Ok, ça c'est du PHP.

Et après en fait si la personne clic sur le radio bouton "formule"
avec la valeur 18.
Dès lors qu'il cochera un checkbox (ses annonces pour les payer), on
fera totalcommande +;


Ici c'est du JavaScript. Est-ce que tu es conscient que plus rien ne
peut s'exécuter en PHP jusqu'au moment où la prochaine requête HTTP
partira (c'est-à-dire quand l'utilisateur cliquera sur le bouton
Submit) ?

[...]

<form action="[~98~]" method="post" enctype="multipart/form-data"
name="form1">


Il a une drôle de gueule, le nom de ton script PHP, celui qui est appelé
au moment du Submit : « [~98~].php », c'est bien ça ? Bref, je crois
bien que j'ai deviné juste, et que tu as envie que le code JavaScript
appelle en interne du code PHP, alors que c'est impossible.