Bonjour,
Etant vraiment débutant en php, j'ai un exercice à faire pour mon cours de Php qui est le suivant : faire un jeu pour apprendre les verbes irréguliers en anglais.
cependant nous n'avons pas de méthode particuliére pour le faire et nous devons trouver par nous même comment faire,
sauf que voila je bloque :
J'accéde parfaitement à ma base de donnée où j'ai 4 collones et j'appelle aléatoirement une ligne de ma bdd avec un parametre rand(), et j'affiche parfaitement cette ligne.
Maintenant je dois vérifier l'exactitude du preterit et du participe passé que je demande dans le formulaire et afficher si la réponse est juste ou fausse, et je dois mal m'y prendre
Voila mon code entier :
<?php
include 'PHP/parametre.php';
include 'PHP/connection.php';
?>
<html>
<head>
<title>Les verbes Irreguliers en Anglais</title>
<meta name="author" value="Savattier_Simon">
<link rel="stylesheet" href="css/style4.css" type="text/css"/>
</head>
<body>
<div id="php">
<?php
echo '<h1>Apprend les verbes Irregulier avec Php :</h1>';
// Affichage de la selection de la ligne.
$resultats=$dbh->query("SELECT P, PP, PT FROM vocabulaire WHERE Id=$test");
$resultats->setFetchMode(PDO::FETCH_OBJ);
while( $resultat = $resultats->fetch() )
{
echo '<strong>Quel est le preterit et le participe passé de : </strong>'.$resultat->P.' ?<br />';
echo 'Preterit :' .$resultat->PT.'<br />';
echo 'Participe Passé :' .$resultat->PP.'<br />';
}
$req = $dbh->prepare("SELECT P, PP, PT FROM vocabulaire WHERE Id=$test");
$req->execute(array('PP' => $PP));
$reqdeux->execute(array('PT' => $PT));
$count = $req->rowCount();
$count = $reqdeux->rowCount();
if(isset($_POST['p_pt'])=$PT) {
$message='Bravo !';
}
else {
$message='Faux !';
}
if(isset($_POST['p_pp'])=$PP) {
$messagedeux='Bravo !';
}
else {
$messagedeux='Faux !';
}
?>
<div>
<form action="" method="post">
<label>Preterit: <input type="text" name="p_pt" id="p_pt"/></label><br />
<?php echo $message ?>
<label>Participe Passé <input type="text" name="p_pp" id="p_pp"/></label><br />
<?php echo $messagedeux ?>
<input type="reset" value="Rejouer"/>
<input type="submit" name="env" value="Verification" /></label><br />
</form>
</div>
</div>
</body>
</html>
Qu'est ce que j'ai oublié de mettre pour la vérification?
est-ce vraiment comme ceci que je dois m'y prendre?
Merci infiniment pour vos futures réponses.
Synalio,
Salut,
Je ne vais pas donner une réponse toute faite pour que tu réfléchisses par toi-même,
mais je vais quand même aider un peu.
Je vois quelques petites choses, mais surtout 2 points important.
1)
$req = $dbh->prepare("SELECT P, PP, PT FROM vocabulaire WHERE Id=$test");
$req->execute(array('PP' => $PP));
Ici, tu utilises mal la requête prépaprée.
Normalement, à la place de $test
tu dois mettre soit un ?
soit une chaine de caractères précédée de ":" (ex : :truc
),
ensuite dans execute, tu mets un tableau en paramètre qui contiendra la variable voulue.
Je te laisse revoir tout seul comment faire une requête préparée.
Tu peux regarder le 1er exemple du manuel, tu vas comprendre :
http://php.net/manual/fr/pdo.prepare.php
2)
if(isset($_POST['p_pt'])=$PT)
2 petites erreurs ici.
Quand tu fais une comparaison il faut utiliser le double égale ==
,
sinon avec un seul égale, tu fais une affectation.
De plus,
c'est une très bonne chose de tester l'existence d'une variable,
mais il faut plutôt écrire un truc du style :
SI la variable existe ET sa valeur est égale à truc ALORS ...
là tu as écrit :
SI l'existence de POST['pt'] arrive à prendre la valeur de la variable PT, ALORS...
(aucun sens) ^^
Bonjour SLK,
désolé pour ma réponse tardive, mais entre temps je suis parti en vacances.
Je vais essayer de modifier en fonction de ce que tu m'as expliqué.
En tout cas merci encore pour tes explications.
Je te tiens au courant si j'ai d'autres questions (Ou d'autres personnes bien évidement :))