Problème de sélection sur table de multiplication

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème de sélection sur table de multiplication

Re: Problème de sélection sur table de multiplication

par krakdu68 » 20 nov. 2014, 21:26

Merci à vous pour vos réponses :)

Re: Problème de sélection sur table de multiplication

par sirakawa » 18 nov. 2014, 12:04

Il faut tout revoir à la base :
Il y a deux choses distinctes:
l'opérateur l'opérande
par conséquent on ne peut passe servir de <a href ="....">
commme les opérateurs ET les opérandes sont exclusifs, il faut mettre en place un formulaire avec des boutons radio pour les opérateurs et soit des boutons radio soit un select pour les opérandes.
<!DOCTYPE html>
 <html lang="fr">
 <head>
     <meta charset="utf-8" />
         <title>TP8 programmation Web</title>
         <link rel="shortcut icon" type="image/x-icon" href="iconeweb.ico" />
         <link href="tp8_style.css" rel="stylesheet" />
 </head>
 <body>
 <header><h2>Tables de multiplication pour le primaire</h2></header>  
 <nav>
 <form method = "post" action = "calcul.php">
	 <fieldset>
	 	<legend>Opérateur</legend>
	 	<label for "oper">addition</label>
	 	<!-- en mettant un checked, on  au nopérateur par défaut et la certitude qu'un choix a été fait -->
	 		<input name = "oper" type = "radio" checked = "checked" value ="+" />
	 	<label for "oper">multiplication</label>
	 		<input name = "oper" type = 'radio' value ="x" />	
	</fieldset>	
	<fieldset>
		<legend>Table de </legend>
		<label for "ande">1</label>
		<input name = "ande" type = 'radio' checked = "checked" value ="1" />
		<label for "ande">2</label>
		<input name = "ande" type = 'radio' checked = "checked" value ="2" />
	</fieldset>
	<button  type = "submit">Afficher</button>
</form> 
 </nav>        
 <article>
calcul.php
<?PHP

/* Si l'opérateur a bien été choisi, c'est à dire si on ien bien de la page prévue, l'opérateur
prernd la valeur choisie, sinon il prend la valeur arbitraire +*/
$operateur = (isset ($_POST["oper"])) ? $_POST["oper"] : "+" ;
/* Si l'operande a bien été choisi, c'est à dire si on ien bien de la page prévue, l'opérande
prernd la valeur choisie et il esty converti en entier, sinon il prend la valeur arbitraire 1*/
$operande = (isset ($_POST["ande"])) ? intval($_POST["ande"]) : 1 ;
print "$operateur $operande";

?>
<table>

Re: Problème de sélection sur table de multiplication

par Nestecha » 18 nov. 2014, 00:06

Pour faire simple :

Remplace la condition de ton if par if (isset $_GET['signe']), puis enleve ton else.

Ainsi tu ne regardes que si un signe a été envoyé.

Ensuite a l'intérieur de ce if, tu regardes avec un autre if, si le signe est + ou x.

De cette façon : if ($_GET['signe'] == '2')...

Ensuite à l'intérieur de chacun de ces if, lorsque c'est le signe + tu mets ton code pour l'addition, de même pour la multiplication.

Commence par là, ensuite tu as juste a copié collé ce que je t'ai mis à remplacer dans les balises <a>.

Re: Problème de sélection sur table de multiplication

par krakdu68 » 17 nov. 2014, 23:15

Merci de ta réponse rapide.

J'ai néanmoins encore un problème...je ne vois pas du tout ce qu'il faut faire. Il faut que je garde la structure de la boucle
elseif
comme avant, et juste modifier les valeurs du $_GET ?

Encore désolé...j'suis vraiment pas doué :?

Re: Problème de sélection sur table de multiplication

par Nestecha » 17 nov. 2014, 20:53

Regarde ton if else. Tu lui demanded "si $_GET mult existe, alors > code 1, ou si $_GET mult existe alors > code 2.

Du coup il passera toujours dans le premier.

Il faut que ta condition se fasse aussi sur les signes.

Donc tu fais un simple if où il cherche si mult existe, et à ce moment là il regardera à quoi est égal $_GET signe.

Sauf que cela ne fonctionnera pas. Puisque lorsqu'on clique sur un des nombres, on a que $_GET mult dans l'URL, pas le signe.

Donc tu dois faire autrement. Le plus simple si tu veux le faire qu'en PHP, c'est de mettre l'URL du signe avec le $_GET mult existant, comme ceci :

A la place de :
<a href="TP8_page1_etudiant.php?signe=2"> + </a>
Avoir :
<a href="TP8_page1_etudiant.php?signe=2&mult=<?= $_GET['mult'] ?>"> + </a>
Du coup, il y aura les deux paramètres dans l'URL. Lorsqu'on clique sur "8", on pourra ensuite cliquer sur "+".

Donc maintenant tu peux faire une condition demandant si $ GET signe existe, si oui tu regarde à quoi est égal $ GET signe, et alors tu fais le code en conséquence.

Problème de sélection sur table de multiplication

par krakdu68 » 17 nov. 2014, 20:31

Bonjour,

Je suis actuellement en DUT informatique et notre prof nous demande de rendre un travail. Il s'agit de faire une table de multiplication et d'addition pour les nombres de 1 à 9. En gros on clique sur le bouton "x" et sur "8" et on a la table de multiplication de 8. Mais j'ai un problème à ce niveau, ça m'affiche toujours la table de multiplication et jamais celle des additions...Voici mon code :
<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="utf-8" />
	<title>TP8 programmation Web</title>
	<link rel="shortcut icon" type="image/x-icon" href="iconeweb.ico" />
	<link href="tp8_style.css" rel="stylesheet" />
</head>
<body>
<header><h2>Tables de multiplication pour le primaire</h2></header>  
<nav>
<a href="TP8_page1_etudiant.php?signe=1"> x </a>
<a href="TP8_page1_etudiant.php?mult=1"> 1 </a>
<a href="TP8_page1_etudiant.php?mult=2"> 2 </a>
<a href="TP8_page1_etudiant.php?mult=3"> 3 </a>
<a href="TP8_page1_etudiant.php?mult=4"> 4 </a>
<a href="TP8_page1_etudiant.php?mult=5"> 5 </a>
<a href="TP8_page1_etudiant.php?mult=6"> 6 </a>
<a href="TP8_page1_etudiant.php?mult=7"> 7 </a>
<a href="TP8_page1_etudiant.php?mult=8"> 8 </a>
<a href="TP8_page1_etudiant.php?mult=9"> 9 </a>
<a href="TP8_page1_etudiant.php?signe=2"> + </a>
</nav>        
<article>
<table>
<?php
if(isset($_GET['mult']) and ctype_digit($_GET['mult']) )
    {
    $i=$_GET['mult'];
    settype($i, "integer");
    echo "<tr><th>La table du ".$i."</th></tr>";
    for($j=1;$j<10;$j++)
    	{
       echo "<tr><td>".$j." x ".$i." = "; 
    	echo $j*$i;
    	echo "</td></tr>";
    	}
    }
elseif(isset($_GET['mult']) and ctype_digit($_GET['mult']) )
    {
    $i=$_GET['mult'];
    settype($i, "integer");
    echo "<tr><th>La table du ".$i."</th></tr>";
    for($j=1;$j<10;$j++)
        {
        echo "<tr><td>".$j." + ".$i." = "; 
        echo $j+$i;
        echo "</td></tr>";
        }
    }
?>
</table>
</article>
<footer><div>site réalisé par @@</div></footer>
</body>
</html>


Si vous pouviez m'expliquer comment remédier à ce problème, et si possible assez simplement car je ne suis pas très fort (la formation ne me plaisant pas du tout, vivement que je change....enfin on s'en fout j'vais pas raconter ma vie :P)

Merci d'avance pour votre attention et vos réponses