onclick

Petit nouveau ! | 2 Messages

25 mai 2006, 22:32

Je cherche à lancer une fonction depuis un bouton. La function marche parfaitement si je la lance au chargement mais pas depuis le bouton.
Voir code ci dessous. (pas parfait!)

<html>
<head>
<title>exo1.php</title>
<?php
$val0=0;
$val1=0;
$val2=0;
$val3=0;
$val4=0;
$res1=0;
$res2=0;
$res3=0;
$res4=0;
echo "<table border=\"1\">\n";
echo "<tr>\n";

function aleatoire(){
$nombre = array();
global $res1;
global $res2;
global $res3;
global $res4;
for ($i = 0 ; $i < 5; $i++) {
$nombre[$i] = RAND(0,100);
echo "<td>" . $nombre[$i] ."</td>\n";
switch ($i) {
case 0:
$val0= $nombre[$i];
case 1:
$val1= $nombre[$i];
case 2:
$val2= $nombre[$i];
case 3:
$val3= $nombre[$i];
case 4:
$val4= $nombre[$i];
}
}


$res1= $val1-$val0;
$res2= $val2 - $val1;
$res3= $val3 - $val2;
$res4= $val4 - $val3;

echo "</tr>\n";
echo "</table>\n";
}




aleatoire();
//calcul();

?>

<?php
function calcul() {
global $res1;
global $res2;
global $res3;
global $res4;

echo "<table border=\"1\">\n";
echo "<tr>\n";
echo "<td>" . $res1 ."</td>\n";
echo "<td>" . $res2 ."</td>\n";
echo "<td>" . $res3 ."</td>\n";
echo "<td>" . $res4 ."</td>\n";


echo "</tr>\n";
echo "</table>\n";
}
?>
</head>

<body>
<table width="150" border="1">
<tr>
<td><form method="post" action="exo1.php">
<input type="submit" value="Retirer">
</form>
</td>
<td><form action="exo1.php">
<input type="button" value="calculer" onclick="calcul()">
</form>
</td>
</tr>
</table>
</body>

</html>

La fonction aleatoire se lance très bien. Si je supprime les // devant calcul() la fonction de lance juste après aleatoire() donc le code est correct. C'est depuis <td><form action="exo1.php">
<input type="button" value="calculer" onclick="calcul()">
</form>
que ça ne marche pas.

Merci

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

25 mai 2006, 23:00

Salut,

Un code est bien mieux présenté entre balises
 tu peux donc t'en servir à volonté  :wink: 

Sinon tu confonds php et javascript.

Les fonction sont en php or "onclick" est un événement javascript. Ce que tu veux faire n'est donc pas possible comme ça.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Petit nouveau ! | 2 Messages

25 mai 2006, 23:06

code modifier avec javascript mais marche toujours pas.
:(
:(
<html>
<head>
	<title>exo1.php</title>
<?php
$val0=0;
$val1=0;
$val2=0;
$val3=0;
$val4=0;
$res1=0;
$res2=0;
$res3=0;
$res4=0;
echo "<table border=\"1\">\n";
echo "<tr>\n";

function aleatoire(){
$nombre = array();
global $res1;
global $res2;
global $res3;
global $res4;
for ($i = 0 ; $i < 5; $i++) {
	$nombre[$i] = RAND(0,100);
echo   "<td>" . $nombre[$i] ."</td>\n";
	switch ($i) {
	case 0:
		$val0= $nombre[$i];
	case 1:
		$val1= $nombre[$i];
	case 2:
		$val2= $nombre[$i];
	case 3:
		$val3= $nombre[$i];
	case 4:
		$val4= $nombre[$i];
	}
	}
	

$res1= $val1-$val0;
$res2= $val2 - $val1;
$res3= $val3 - $val2;
$res4= $val4 - $val3;
	
echo "</tr>\n";
echo "</table>\n";
}




aleatoire();
//calcul(); 

?>


</head>

<body>
<script language="javascript">
function calcul() {
global $res1;
global $res2;
global $res3;
global $res4;

echo "<table border=\"1\">\n";
echo "<tr>\n";
echo   "<td>" . $res1 ."</td>\n";
echo   "<td>" . $res2 ."</td>\n";	
echo   "<td>" . $res3 ."</td>\n";
echo   "<td>" . $res4 ."</td>\n";

  
echo "</tr>\n";
echo "</table>\n";
} 
</script>
<table width="150" border="1">
  <tr>
    <td><form method="post" action="exo1.php">
       <input type="submit" value="Retirer">
  	   </form>
	</td>
    <td><form>
        <input type="button"  value="calculer" onclick="calcul();">
		</form>
	</td>
  </tr>
</table>
</body>

</html>

ViPHP
ViPHP | 2144 Messages

25 mai 2006, 23:26

Désolé, je suis peut-être trop fatigué mais pour moi ta fonction ressemble toujours à du php. as-tu bien compris la différence fondamentale entre php et Javascript, et le modèle client serveur en général ?

Mammouth du PHP | 601 Messages

26 mai 2006, 01:54

De plus le php et le javascri^t sont fondamentalement trop different pour fonctionner ensemble, peut être en mettant du js dans le php, il sera traité coté client...
Et les evenements passeront
Mais de toute façon ton code fait 10 km, pour se que tu veux en faire ¿?

Eléphant du PHP | 451 Messages

26 mai 2006, 06:44

De plus le php et le javascri^t sont fondamentalement trop different pour fonctionner ensemble, peut être en mettant du js dans le php, il sera traité coté client...
Et les evenements passeront
Mais de toute façon ton code fait 10 km, pour se que tu veux en faire ¿?
C'est un peu rapide, si tu avais raison, ajax n'existerait pas...

Pour grattezdédé : si tu veux faire du javascript, je pense que ça vaut la peine d'utiliser Firefox, dans le menu outils, il y a une console javascript bien utile, surtout pour ceux qui comme moi font du javascript occasionnellement ;) .
Jpaul
J'essaye d'aider : parfois je fais des erreurs, on me les corrige et j'apprends un peu plus. Super ce forum :)