Les Allergies
Alimentaires
Posez votre question Signaler

[PHP] Tester si un nombre premier [Résolu]

Zahra_T 88Messages postés 29 avril 2007Date d'inscription 19 mai 2012Dernière intervention - Dernière réponse le 6 juin 2008 à 11:12
Bonjour,
J’essai de programmer une page php dans la quel se trouve un formulaire (zone texte + bouton submit) pour tester si un nombre entrer dans la zone texte est premier ou non et afficher le résultat dans la même page.
voici le code:
///////////////////////////////////////////////////////
<html>
<head>
<title> premier </title>
<link rel="stylesheet" type="text/css" href= "style.css">
</head>
<body>
<div>
<form name="formulaire" method="POST" action="premier.php">
<label> Entrer l'entier à testé </label><br \><br \>
<input type="text" name="entier" size=5 Maxlength=3>
<blink> <input type="submit" value="Testez" name="entier"> </blink>
<br \><br \>
<label>
<?php
function premier($a)
{
$nbdiv=0;
if(($a<0) || ($a=0))
{
echo " Entrée non valide <br \> Réessayez d'entrez un entier de nouveau";
}
else
{
for($i=1; $i<=$a; $i++)
{
$rest=$a%$i;
if($rest=0)
$nbdiv++;
}
if($nbdiv = 2)
echo $a." est premier";
else
echo $a." n'est pas premier";
}
}
$tmp=premier($entier); // $tmp=premier($_POST['entier']);
?>
</label>
</form>
</div>
</body>
</html>
//////////////////////////////////////////////////////
il y a deux problème que se code produit.
1- lorsque je tape un nombre dans la zone texte et je clic sur le boutton le nombre s'efface
2- l'affichage du résultat reste toujours "0 est un nombre premier"
kelk1 peut m'aider??
Merci d'avance
Lire la suite 

[PHP] Tester si un nombre premier »

6 réponses
Réponse
+0
moins plus
Il te met toujours "0 est un nombre premier" car à cet endroit là : if(($a<0) || ($a=0)) tu définit $a comme étant égal à 0.

En php l'affectation se fait avec = et la comparaison avec ==

Tu as fait l'erreur dans chacun de tes if
Zahra_T- 6 juin 2008 à 09:46
Vous avez raison, Merci
J'ai corrigé le code mais toujours il ne fonctionne pas.
Il affiche dès que j'ouvre la page "Entrée non valide Réessayez d'entrez un entier de nouveau" et même si passe un entier pour le tester.
Ajouter un commentaire
Réponse
+0
moins plus
Oui tu as d'autres choses à changer :

$tmp=premier($_POST['entier']); à la place de $tmp=premier($entier);

Et le principal problème vient du fait que ton champ text et ton bouton ont le même nom.

Je te suggère de changer le nom de ton bouton en "tester" par exemple. Ca devrait marcher maintenant
Zahra_T- 6 juin 2008 à 10:28
Oui ça marche, Merci infiniment
Ça parait difficile pour des novices en php comme moi
Pour ceux qu'ils l'on besoin voici le code
///////////////////////////////////

<?php
function premier($a)
{
$nbdiv=1;
if(($a>0))
{
for($i=3; $i<=$a; $i++)
{
$rest=$a%$i;
if($rest==0)
$nbdiv++;
}
if($nbdiv == 2)
echo $a." est premier";
else
echo $a." n'est pas premier";

}
else
{
echo " Entrée non valide <br \> Réessayez d'entrez un entier de nouveau";
}

}

$tmp=premier($_POST['entiertxt']);

?>

////////////////////////////////////
Mais je vais vous posez une question si vous le permettez
pourkoi dès que j'ouvre la page il m'affiche au premier "Entrée non valide Réessayez d'entrez un entier de nouveau" même après ces changements que j'ai fais ???
Merci
Ajouter un commentaire
Réponse
+0
moins plus
De rien...

Il t'affiche au premier "Entrée non valide Réessayez d'entrer un entier de nouveau" car la variable $_POST['entiertxt'] n'existe pas à ce moment là est la fonction est quand même appelée.
Pour éviter cela tu peux faire un test sur l'existence de la variable :


if(isset($_POST['entier']))
{
$tmp=premier($_POST['entier']);
}
Ajouter un commentaire
Réponse
+0
moins plus
Merci
Ajouter un commentaire
Ce document intitulé « [PHP] Tester si un nombre premier » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?