Aide en PHP
Nivek99
Messages postés
19
Statut
Membre
-
Sombresonge Messages postés 108 Statut Membre -
Sombresonge Messages postés 108 Statut Membre -
Bien le bonjour à tous,
Voici mon problème:
Donc en gros, je dois faire un site où on peut apprendre les vocables anglais.
D'abord on choisit un texte à l'aide d'un select tag. 10 vocables sont choisis au hasard du texte qu'on aura sélectionné. Un tableau sera alors affiché avec les 10 vocables et un champ de texte où doit rentrer nous-même l'explication. Jusque là c'est bon.
En bas du tableau il y a 2 boutons que je n'arrive pas à programmer; bouton Check et bouton Next:
En cliquant sur le bouton 'Check' il doit vérifier si notre explication est correcte ou pas en allant vérifier dans la base de données, si c'est incorrect le champ de texte aura un contour rouge.
Et le bouton 'next' nous affiche 10 nouveaux vocables.
Merci.
Voici mon problème:
Donc en gros, je dois faire un site où on peut apprendre les vocables anglais.
D'abord on choisit un texte à l'aide d'un select tag. 10 vocables sont choisis au hasard du texte qu'on aura sélectionné. Un tableau sera alors affiché avec les 10 vocables et un champ de texte où doit rentrer nous-même l'explication. Jusque là c'est bon.
En bas du tableau il y a 2 boutons que je n'arrive pas à programmer; bouton Check et bouton Next:
En cliquant sur le bouton 'Check' il doit vérifier si notre explication est correcte ou pas en allant vérifier dans la base de données, si c'est incorrect le champ de texte aura un contour rouge.
Et le bouton 'next' nous affiche 10 nouveaux vocables.
Merci.
A voir également:
- Aide en PHP
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour a la ligne php - Forum Webmastering
- Alert php - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
23 réponses
Si j'ai bien compris, tu veux simplement comparer les vocables et leurs traductions saisies par l'utilisateur ?
Dans ce cas pas besoin d'Ajax, il suffit de stocker la réponse dans un champ caché, et de vérifier la saisi de l'utilisateur en javascript en comparant le champ saisi avec le champ caché.
Et tu appèles la fonction Check() sur l'évènement onclick de ton bouton. Tu peux ainsi en profiter pour faire d'autres tests (par exemple vérifier si l'utilisateur a bien remplit le champ réponse).
Dans ce cas pas besoin d'Ajax, il suffit de stocker la réponse dans un champ caché, et de vérifier la saisi de l'utilisateur en javascript en comparant le champ saisi avec le champ caché.
function Check() {
var saisie = document.getElementById("id_input_saisie").value;
var bonne_reponse = document.getElementById("id_input_reponse").value;
if(saisie == reponse) {
alert("votre réponse est correcte");
}
else {
alert("votre réponse est fausse);
}
}
Et tu appèles la fonction Check() sur l'évènement onclick de ton bouton. Tu peux ainsi en profiter pour faire d'autres tests (par exemple vérifier si l'utilisateur a bien remplit le champ réponse).
C'est normal que la soumission soit automatique dans ton cas, vu que tu ne la bloque nulle part.
La solution serait de mettre dans la balise<form> un onsubmit="return Check();". Du coup, dans ta fonction JS, tu devras faire un return true ou false en fonction de lé réponse.
Par contre, tu as oublié le champ contenant la bonne réponse :
<form action='index.php' method='post' onsubmit="return Check();">
<input type="hidden" id="erklaerung " value="<?=$bonne_reponse_pioche_dans_la_bdd;?>" />
<input type="submit" value="Check" name="submit" onclick="Check();"/>
</form>
ainsi, si Check() renvoie false, le formulaire n'est pas soumit.
Par contre, ca implique que l'utilisateur saisisse exactement la même chose que la bonne réponse. Si elle diffère ne serait-ce que d'un seul caractère, ca renverra false. Si tu veux palier à ce problème pour être plus souple, il faudra utiliser les expression régulières
La solution serait de mettre dans la balise<form> un onsubmit="return Check();". Du coup, dans ta fonction JS, tu devras faire un return true ou false en fonction de lé réponse.
function Check() {
var eingabe = document.getElementById("eingabe").value;
var erklaerung = document.getElementById("erklaerung").value;
if(eingabe == erklaerung) {
return true;
}
else {
return false;
}
}
Par contre, tu as oublié le champ contenant la bonne réponse :
<form action='index.php' method='post' onsubmit="return Check();">
<input type="hidden" id="erklaerung " value="<?=$bonne_reponse_pioche_dans_la_bdd;?>" />
<input type="submit" value="Check" name="submit" onclick="Check();"/>
</form>
ainsi, si Check() renvoie false, le formulaire n'est pas soumit.
Par contre, ca implique que l'utilisateur saisisse exactement la même chose que la bonne réponse. Si elle diffère ne serait-ce que d'un seul caractère, ca renverra false. Si tu veux palier à ce problème pour être plus souple, il faudra utiliser les expression régulières
La boucle que je t'ai donné est opé, faut juste voir l'architecture de tes tr et td (si tu regardes bien, le bouton est hors du code PHP, vu qu'on l'affiché après la boucle).
Sinon, il vaut mieux éviter de faire des echo de contenu HTML, même si ca marche la plupart du temps.
en fait, une petite technique simple, quand tu veux ajouter une variable php dans un champ de formulaire, tu fais tout simplement <?=$ma_variable;?>.
le = fait le boulot d'un écho.
Sinon, il vaut mieux éviter de faire des echo de contenu HTML, même si ca marche la plupart du temps.
en fait, une petite technique simple, quand tu veux ajouter une variable php dans un champ de formulaire, tu fais tout simplement <?=$ma_variable;?>.
le = fait le boulot d'un écho.
Pardon, y'a un php qui traine en effet :
Pas besoin de faire 2 balises php vu que tu n'as pas d'HTML entre les deux.
Pour le $i c'est tout a fait normal, c'est pour pouvoir les récupérer simplement dans ta fonction Check(). C'est juste un identifiant de 0 a 9 pour identifier tes 10 champs de saisie.
<form name="tabelle" id="tabelle" method="POST">
<?php
$i = 0;
while ($zeile = mysqli_fetch_array($daten)) {
?>
Pas besoin de faire 2 balises php vu que tu n'as pas d'HTML entre les deux.
Pour le $i c'est tout a fait normal, c'est pour pouvoir les récupérer simplement dans ta fonction Check(). C'est juste un identifiant de 0 a 9 pour identifier tes 10 champs de saisie.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Pour cela, il te faudra de l'ajax qui est un savant mélange de php et de javascript :
- le php pour faire tes comparaisons avec ta base
- le js pour rester sur la page mais mettre des contours rouges par exemple.
Pour cela, il te faudra de l'ajax qui est un savant mélange de php et de javascript :
- le php pour faire tes comparaisons avec ta base
- le js pour rester sur la page mais mettre des contours rouges par exemple.
Merci, mais je suis encore un débutant en php et en javascript je suis un tout petit novice. Ça aide pas. :P
Bien sûr que si, puisque ça te donne des mots clefs qui te permettront de trouver par toi-même =)
J'ai trouvé cet exemple tout bêtement : https://code.tutsplus.com/tutorials/submit-a-form-without-page-refresh-using-jquery--net-59
(pour faire ce que tu veux faire, tu es obligé d'utiliser ajax, alors soit tu abandonnes et tu fais autre chose, soit tu mets les mains un peu dans le cambouis)
J'ai trouvé cet exemple tout bêtement : https://code.tutsplus.com/tutorials/submit-a-form-without-page-refresh-using-jquery--net-59
(pour faire ce que tu veux faire, tu es obligé d'utiliser ajax, alors soit tu abandonnes et tu fais autre chose, soit tu mets les mains un peu dans le cambouis)
Oui, je comprends, mais comme tu peux t'en douter j'ai déjà fait plusieurs recherches avant de venir ici.
J'ai en effet trouvé cette méthode avec le javascript, mais étant donné que je m'y connais à peine, je préférais le faire sans, mais si tu me dis que je suis obligé de faire avec, je vais essayer avec ça.
Au fait, est-ce que je dois utiliser l'ajax pour mes 2 boutons ou pas ?
J'ai en effet trouvé cette méthode avec le javascript, mais étant donné que je m'y connais à peine, je préférais le faire sans, mais si tu me dis que je suis obligé de faire avec, je vais essayer avec ça.
Au fait, est-ce que je dois utiliser l'ajax pour mes 2 boutons ou pas ?
C'est normal que j'y comprenne pas grande chose à ton premier lien ?
Est-ce que je dois ouvrir des balises javascript ?
Je les ouvre en haut de mon code ?
Pareil pour ton 2ème lien.
Je dois faire quoi avec tout le code s'y trouvant ?
C'est gentil de me proposer des liens. Mais comme je l'ai dit, je suis novice en Javascript si ce n'est que j'y connais rien.
Est-ce que je dois ouvrir des balises javascript ?
Je les ouvre en haut de mon code ?
Pareil pour ton 2ème lien.
Je dois faire quoi avec tout le code s'y trouvant ?
C'est gentil de me proposer des liens. Mais comme je l'ai dit, je suis novice en Javascript si ce n'est que j'y connais rien.
Merci pour ta réponse.
Ouais enfin, je veux comparer l'explication saisie par l'utilisateur avec l'explication se trouvant dans la base de donnée, plutôt
Par exemple:
L'utilisateur a rentré "avoir un problème" dans le champ de texte, en cliquant sur le bouton Check, ce dernier doit vérifier si cette explication correspond à celle dans la base de donnée.
J'ai modifié ton code:
function Check() {
var eingabe = document.getElementById("eingabe").value;
var erklaerung = document.getElementById("erklaerung").value;
if(eingabe == erklaerung) {
alert("votre réponse est correcte");
}
else {
alert("votre réponse est fausse);
}
}
Le code de mon bouton:
<form action='index.php' method='post'>
<input type="submit" value="Check" name="submit" onclick="Check();"/>
</form>
Le code de mon champ de texte:
<td><input name="eingabe" type="text" size="30"></td>
erklaerung étant le nom donné à la colonne des explications dans ma basse de données.
En cliquant sur le bouton, c'est comme si je venais d'actualiser la page simplement.
Le problème vient sûrement d'ici:
var erklaerung = document.getElementById("erklaerung").value;
Étant donné que cette variable doit être associé à la base de données.
-------------------------------------
EDIT:
-------------------------------------
Et au fait mon tableau se compose en trois colonnes:
1ère colonne: id du vocable
2ème colonne: vocable
3ème colonne: champ de texte (explication à rentrer)
Donc au fait on doit prendre l'id du vocable en compte pour que l'ordinateur sache de quel vocable il est sujet.
Par exemple:
Si l'id du vocable à expliquer serait 5, alors on doit comparer le champ de texte avec SELECT erklaerung FROM 'vokabel_liste' WHERE id = 5
vokabel liste = le nom de ma base de données.
Ouais enfin, je veux comparer l'explication saisie par l'utilisateur avec l'explication se trouvant dans la base de donnée, plutôt
Par exemple:
L'utilisateur a rentré "avoir un problème" dans le champ de texte, en cliquant sur le bouton Check, ce dernier doit vérifier si cette explication correspond à celle dans la base de donnée.
J'ai modifié ton code:
function Check() {
var eingabe = document.getElementById("eingabe").value;
var erklaerung = document.getElementById("erklaerung").value;
if(eingabe == erklaerung) {
alert("votre réponse est correcte");
}
else {
alert("votre réponse est fausse);
}
}
Le code de mon bouton:
<form action='index.php' method='post'>
<input type="submit" value="Check" name="submit" onclick="Check();"/>
</form>
Le code de mon champ de texte:
<td><input name="eingabe" type="text" size="30"></td>
erklaerung étant le nom donné à la colonne des explications dans ma basse de données.
En cliquant sur le bouton, c'est comme si je venais d'actualiser la page simplement.
Le problème vient sûrement d'ici:
var erklaerung = document.getElementById("erklaerung").value;
Étant donné que cette variable doit être associé à la base de données.
-------------------------------------
EDIT:
-------------------------------------
Et au fait mon tableau se compose en trois colonnes:
1ère colonne: id du vocable
2ème colonne: vocable
3ème colonne: champ de texte (explication à rentrer)
Donc au fait on doit prendre l'id du vocable en compte pour que l'ordinateur sache de quel vocable il est sujet.
Par exemple:
Si l'id du vocable à expliquer serait 5, alors on doit comparer le champ de texte avec SELECT erklaerung FROM 'vokabel_liste' WHERE id = 5
vokabel liste = le nom de ma base de données.
Voilà mon code, j'ai essayé d'intégrer les tiens, mais ça n'a pas l'air de marcher.
Et voici le site que je dois programmer: http://mizar.lte.lu/~jeske175/Help/index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Vocabulary Trainer</title>
</head>
<body>
<script type="text/javascript">
function Check() {
var eingabe = document.getElementById("eingabe").value;
var erklaerung = document.getElementById("erklaerung").value;
if(eingabe == erklaerung) {
return true;
}
else {
return false;
}
}
</script>
<h1>Vocabulary Trainer</h1>
Text selection
<form action='index.php' method='post' name='text' >
<select name="text" size="1" onchange="text.form.submit();">
<option selected <?php if ($_POST['text'] == 'All') print 'selected '; ?> value="All">All</option>
<option <?php if ($_POST['text'] == 'Ironman') print 'selected '; ?> value="Ironman">Ironman</option>
<option <?php if ($_POST['text'] == 'Coincidence') print 'selected '; ?> value="Coincidence">Coincidence</option>
<option <?php if ($_POST['text'] == 'Memory') print 'selected '; ?> value="Memory">Memory</option>
<option <?php if ($_POST['text'] == 'Sentenced to Death') print 'selected '; ?> value="Sentenced to Death">Sentenced to Death</option>
<option <?php if ($_POST['text'] == 'Lizardman Leaps Into US Folklore') print 'selected '; ?> value="Lizardman Leaps Into US Folklore">Lizardman Leaps Into US Folklore</option>
<option <?php if ($_POST['text'] == 'A Thief's Lucky Day') print 'selected '; ?> value="A Thief's Lucky Day">A Thief's Lucky Day</option>
</select>
</form>
<hr />
<?php
require_once('verbvars.php');
$value = $_POST['text'];
// Mit Datenbank verbinden
$db = mysqli_connect(DB_HOST, DB_BENUTZER, DB_PASSWORT, DB_NAME);
mysqli_set_charset($db, "utf8");
// Die Highscore-Daten aus der Datenbank abrufen
if ($value == "All") {
$sql = "SELECT * FROM vokabel_liste ORDER BY RAND() LIMIT 10";}
else {
$sql = "SELECT * FROM vokabel_liste WHERE text = '$value' ORDER BY RAND() LIMIT 10";}
$daten = mysqli_query($db, $sql);
// Die Daten durchlaufen und als HTML formatieren
echo '<table border="1">';
while ($zeile = mysqli_fetch_array($daten)) {
echo '<tr><td class="eintrag"><span class="id">' . $zeile['id'] . '</span></td>';
echo '<td>' . $zeile['vokabel'] . '</td>';
echo '<td><input name="eingabe" type="text" size="30"></td>';
echo '</tr>';
}
echo '</table>';
mysqli_close($db);
?>
<form action='index.php' method='post' onsubmit="return Check();">
<input type="hidden" id="erklaerung " value="<?=$bonne_reponse_pioche_dans_la_bdd;?>" />
<input type="submit" value="Check" name="submit" onclick="Check();"/>
</form>
</body>
</html>
Et voici le site que je dois programmer: http://mizar.lte.lu/~jeske175/Help/index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Vocabulary Trainer</title>
</head>
<body>
<script type="text/javascript">
function Check() {
var eingabe = document.getElementById("eingabe").value;
var erklaerung = document.getElementById("erklaerung").value;
if(eingabe == erklaerung) {
return true;
}
else {
return false;
}
}
</script>
<h1>Vocabulary Trainer</h1>
Text selection
<form action='index.php' method='post' name='text' >
<select name="text" size="1" onchange="text.form.submit();">
<option selected <?php if ($_POST['text'] == 'All') print 'selected '; ?> value="All">All</option>
<option <?php if ($_POST['text'] == 'Ironman') print 'selected '; ?> value="Ironman">Ironman</option>
<option <?php if ($_POST['text'] == 'Coincidence') print 'selected '; ?> value="Coincidence">Coincidence</option>
<option <?php if ($_POST['text'] == 'Memory') print 'selected '; ?> value="Memory">Memory</option>
<option <?php if ($_POST['text'] == 'Sentenced to Death') print 'selected '; ?> value="Sentenced to Death">Sentenced to Death</option>
<option <?php if ($_POST['text'] == 'Lizardman Leaps Into US Folklore') print 'selected '; ?> value="Lizardman Leaps Into US Folklore">Lizardman Leaps Into US Folklore</option>
<option <?php if ($_POST['text'] == 'A Thief's Lucky Day') print 'selected '; ?> value="A Thief's Lucky Day">A Thief's Lucky Day</option>
</select>
</form>
<hr />
<?php
require_once('verbvars.php');
$value = $_POST['text'];
// Mit Datenbank verbinden
$db = mysqli_connect(DB_HOST, DB_BENUTZER, DB_PASSWORT, DB_NAME);
mysqli_set_charset($db, "utf8");
// Die Highscore-Daten aus der Datenbank abrufen
if ($value == "All") {
$sql = "SELECT * FROM vokabel_liste ORDER BY RAND() LIMIT 10";}
else {
$sql = "SELECT * FROM vokabel_liste WHERE text = '$value' ORDER BY RAND() LIMIT 10";}
$daten = mysqli_query($db, $sql);
// Die Daten durchlaufen und als HTML formatieren
echo '<table border="1">';
while ($zeile = mysqli_fetch_array($daten)) {
echo '<tr><td class="eintrag"><span class="id">' . $zeile['id'] . '</span></td>';
echo '<td>' . $zeile['vokabel'] . '</td>';
echo '<td><input name="eingabe" type="text" size="30"></td>';
echo '</tr>';
}
echo '</table>';
mysqli_close($db);
?>
<form action='index.php' method='post' onsubmit="return Check();">
<input type="hidden" id="erklaerung " value="<?=$bonne_reponse_pioche_dans_la_bdd;?>" />
<input type="submit" value="Check" name="submit" onclick="Check();"/>
</form>
</body>
</html>
Ok donc ce qui ne fonctionne pas, c'est que tu a 10 réponses différentes, il te faut un hidden par réponse bien évidement
Je te laisse le soin de remplacer les noms des champs de table, et de mettre un ID unique a chaque champ hidden (d'ailleurs met un ID correspondant aussi a tes champs input text, par exemple :
while ($zeile = mysqli_fetch_array($daten)) {
echo '<tr><td class="eintrag"><span class="id">' . $zeile['id'] . '</span></td>';
echo '<td>' . $zeile['vokabel'] . '</td>';
echo '<td><input name="eingabe" type="text" size="30"><input name="reponse" type="hidden" size="30" value="$zeile['reponse']"></td>';
echo '</tr>';
}
Je te laisse le soin de remplacer les noms des champs de table, et de mettre un ID unique a chaque champ hidden (d'ailleurs met un ID correspondant aussi a tes champs input text, par exemple :
<input id="eingabe_<?=$zeile['id'];?>" name="eingabe" type="text" size="30"><input id="erklaerung_<?=$zeile['id'];?>" name="reponse" type="hidden" size="30" value="$zeile['reponse']">
Je remplace quoi par quoi ?
Est-ce que la boucle While, je remplace la mienne par la tienne ?
Je l'ai fait, mais j'ai un message d'erreur:
Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /home/t2if/jeske175/public_html/Help/index.php on line 56
Et concernant le dernier point, je n'ai pas compris. Où est-ce que je dois ajouter cette ligne ?
Est-ce que la boucle While, je remplace la mienne par la tienne ?
Je l'ai fait, mais j'ai un message d'erreur:
Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /home/t2if/jeske175/public_html/Help/index.php on line 56
Et concernant le dernier point, je n'ai pas compris. Où est-ce que je dois ajouter cette ligne ?
while ($zeile = mysqli_fetch_array($daten)) {
echo '<tr><td class="eintrag"><span class="id">' . $zeile['id'] . '</span></td>';
echo '<td>' . $zeile['vokabel'] . '</td>';
echo '<td><input name="eingabe" type="text" size="30"></td>';
echo '<input id="eingabe_<?=$zeile['id'];?>" name="eingabe" type="text" size="30"><input id="erklaerung_<?=$zeile['id'];?>" name="reponse" type="hidden" size="30" value="$zeile['reponse']">';
echo '</tr>';
}
echo '</table>';;
Comme cela ?
J'ai toujours un message d'erreur.
echo '<tr><td class="eintrag"><span class="id">' . $zeile['id'] . '</span></td>';
echo '<td>' . $zeile['vokabel'] . '</td>';
echo '<td><input name="eingabe" type="text" size="30"></td>';
echo '<input id="eingabe_<?=$zeile['id'];?>" name="eingabe" type="text" size="30"><input id="erklaerung_<?=$zeile['id'];?>" name="reponse" type="hidden" size="30" value="$zeile['reponse']">';
echo '</tr>';
}
echo '</table>';;
Comme cela ?
J'ai toujours un message d'erreur.
Normal, tu fais ca dans un echo, donc dans ce cas il ne faut pas mettre les balises d'ouverture du php (<?= ?>) autour de ta variable.
Par contre, si j'étais toi, je ne ferais pas des echo de balises html.
Voila le code la devrait être bon pour ton cas
Par contre, si j'étais toi, je ne ferais pas des echo de balises html.
<?php while ($zeile = mysqli_fetch_array($daten)) { ?>
<tr><td class="eintrag"><span class="id"><?=$zeile['id'];?></span></td>
<td><?=$zeile['vokabel'];?></td>
<td>
<input id="eingabe_<?=$zeile['id'];?>" name="eingabe" type="text" size="30">
<input id="erklaerung_<?=$zeile['id'];?>" name="erklaerung" type="hidden" size="30" value="<?=$zeile['reponse'];?>">
</td>
</tr>
<?php } ?>
Voila le code la devrait être bon pour ton cas
Non, ça fonctionne toujours pas:
<body>
<script type="text/javascript">
function Check() {
var eingabe = document.getElementById("eingabe").value;
var erklaerung = document.getElementById("erklaerung").value;
if(eingabe == erklaerung) {
return true;
}
else {
return false;
}
}
</script>
<h1>Vocabulary Trainer</h1>
Text selection
<form action='index.php' method='post' name='text' >
<select name="text" size="1" onchange="text.form.submit();">
<option selected <?php if ($_POST['text'] == 'All') print 'selected '; ?> value="All">All</option>
<option <?php if ($_POST['text'] == 'Ironman') print 'selected '; ?> value="Ironman">Ironman</option>
<option <?php if ($_POST['text'] == 'Coincidence') print 'selected '; ?> value="Coincidence">Coincidence</option>
<option <?php if ($_POST['text'] == 'Memory') print 'selected '; ?> value="Memory">Memory</option>
<option <?php if ($_POST['text'] == 'Sentenced to Death') print 'selected '; ?> value="Sentenced to Death">Sentenced to Death</option>
<option <?php if ($_POST['text'] == 'Lizardman Leaps Into US Folklore') print 'selected '; ?> value="Lizardman Leaps Into US Folklore">Lizardman Leaps Into US Folklore</option>
<option <?php if ($_POST['text'] == 'A Thief's Lucky Day') print 'selected '; ?> value="A Thief's Lucky Day">A Thief's Lucky Day</option>
</select>
</form>
<hr />
<?php
require_once('verbvars.php');
$value = $_POST['text'];
// Mit Datenbank verbinden
$db = mysqli_connect(DB_HOST, DB_BENUTZER, DB_PASSWORT, DB_NAME);
mysqli_set_charset($db, "utf8");
// Die Highscore-Daten aus der Datenbank abrufen
if ($value == "All") {
$sql = "SELECT * FROM vokabel_liste ORDER BY RAND() LIMIT 10";}
else {
$sql = "SELECT * FROM vokabel_liste WHERE text = '$value' ORDER BY RAND() LIMIT 10";}
$daten = mysqli_query($db, $sql);
// Die Daten durchlaufen und als HTML formatieren
echo '<table border="1">';
<?php while ($zeile = mysqli_fetch_array($daten)) { ?>
<tr><td class="eintrag"><span class="id"><?=$zeile['id'];?></span></td>
<td><?=$zeile['vokabel'];?></td>
<td>
<input id="eingabe_<?=$zeile['id'];?>" name="eingabe" type="text" size="30">
<input id="erklaerung_<?=$zeile['id'];?>" name="erklaerung" type="hidden" size="30" value="<?=$zeile['reponse'];?>">
</td>
</tr>
<?php } ?>
mysqli_close($db);
?>
<form action='index.php' method='post' onsubmit="return Check();">
<input type="hidden" id="erklaerung " value="<?=$bonne_reponse_pioche_dans_la_bdd;?>" />
<input type="submit" value="Check" name="submit" onclick="Check();"/>
</form>
</body>
<body>
<script type="text/javascript">
function Check() {
var eingabe = document.getElementById("eingabe").value;
var erklaerung = document.getElementById("erklaerung").value;
if(eingabe == erklaerung) {
return true;
}
else {
return false;
}
}
</script>
<h1>Vocabulary Trainer</h1>
Text selection
<form action='index.php' method='post' name='text' >
<select name="text" size="1" onchange="text.form.submit();">
<option selected <?php if ($_POST['text'] == 'All') print 'selected '; ?> value="All">All</option>
<option <?php if ($_POST['text'] == 'Ironman') print 'selected '; ?> value="Ironman">Ironman</option>
<option <?php if ($_POST['text'] == 'Coincidence') print 'selected '; ?> value="Coincidence">Coincidence</option>
<option <?php if ($_POST['text'] == 'Memory') print 'selected '; ?> value="Memory">Memory</option>
<option <?php if ($_POST['text'] == 'Sentenced to Death') print 'selected '; ?> value="Sentenced to Death">Sentenced to Death</option>
<option <?php if ($_POST['text'] == 'Lizardman Leaps Into US Folklore') print 'selected '; ?> value="Lizardman Leaps Into US Folklore">Lizardman Leaps Into US Folklore</option>
<option <?php if ($_POST['text'] == 'A Thief's Lucky Day') print 'selected '; ?> value="A Thief's Lucky Day">A Thief's Lucky Day</option>
</select>
</form>
<hr />
<?php
require_once('verbvars.php');
$value = $_POST['text'];
// Mit Datenbank verbinden
$db = mysqli_connect(DB_HOST, DB_BENUTZER, DB_PASSWORT, DB_NAME);
mysqli_set_charset($db, "utf8");
// Die Highscore-Daten aus der Datenbank abrufen
if ($value == "All") {
$sql = "SELECT * FROM vokabel_liste ORDER BY RAND() LIMIT 10";}
else {
$sql = "SELECT * FROM vokabel_liste WHERE text = '$value' ORDER BY RAND() LIMIT 10";}
$daten = mysqli_query($db, $sql);
// Die Daten durchlaufen und als HTML formatieren
echo '<table border="1">';
<?php while ($zeile = mysqli_fetch_array($daten)) { ?>
<tr><td class="eintrag"><span class="id"><?=$zeile['id'];?></span></td>
<td><?=$zeile['vokabel'];?></td>
<td>
<input id="eingabe_<?=$zeile['id'];?>" name="eingabe" type="text" size="30">
<input id="erklaerung_<?=$zeile['id'];?>" name="erklaerung" type="hidden" size="30" value="<?=$zeile['reponse'];?>">
</td>
</tr>
<?php } ?>
mysqli_close($db);
?>
<form action='index.php' method='post' onsubmit="return Check();">
<input type="hidden" id="erklaerung " value="<?=$bonne_reponse_pioche_dans_la_bdd;?>" />
<input type="submit" value="Check" name="submit" onclick="Check();"/>
</form>
</body>
<form action='index.php' method='post' onsubmit="return Check();"> <input type="hidden" id="erklaerung " value="<?=$bonne_reponse_pioche_dans_la_bdd;?>" /> <input type="submit" value="Check" name="submit" onclick="Check();"/> </form>
Ton bouton de validation est dans un second formulaire c'est normal... Il faut le rattacher au formulaire global, mettre le onsubmit sur ton formulaire global et ce sera bon. Et puis attention a tes ouverture et fermeture de balises php, il en manque...
En plus <?=$bonne_reponse_pioche_dans_la_bdd;?>, fallait quand même remplacer par le nom de ta variable hein, faut pas tout recopier texto je t'ai mis un nom générique pour comprendre ce que tu devais mettre.
<form>
<?php while ($zeile = mysqli_fetch_array($daten)) { ?>
<tr><td class="eintrag"><span class="id"><?=$zeile['id'];?></span></td>
<td><?=$zeile['vokabel'];?></td>
<td>
<input id="eingabe_<?=$zeile['id'];?>" name="eingabe" type="text" size="30">
<input id="erklaerung_<?=$zeile['id'];?>" name="erklaerung" type="hidden" size="30" value="<?=$zeile['reponse'];?>">
</td>
</tr>
<?php } ?>
<input type="submit" value="Check" name="form_validation" />
</form>
Il faut aussi éviter d'appeler le bouton submit par name="submit", qui est un nom générique.
Voila tu as tous les éléments, je te laisse le soin de bien disposer des balises de table maintenant.
Oui, mais les boutons ils marchent pas si je les laissent entre les balises php, c'est pour cela que je les ai mis en dehors du code php, donc à la fin.
Concernant les balises php, je n'ai fait que recopier ta boucle while, j'ai bien vu que les balises n'étaient pas correctement déposées, mais j'y comprends rien.
Je me doutais bien que je devais le remplacer par une autre variable, mais je ne sais pas laquelle, désolé, mais je suis complètement perdu avec ton code. Je ne sais pas de quelle variable tu parles. C'est une nouvelle ou je l'ai déjà déclaré quelque part ?
Pour le name="submit", j'avais recopié ça sur le net, ça n'avait pas l'air de déranger l'ordinateur, donc j'ai laissé.
Ta boucle while que tu viens de poster-là, c'est la bonne ? Je remplacer la mienne par celle-là ? Les balises php ne sont pas correctes, je dois les corriger ?
Y'aurait pas moyen de faire avec les echo, car là avec toutes les balises php, je suis complètement largué.
Et concernant le bouton que je dois mettre dans le formulaire globale, je copie le code du bouton dans le formulaire principal sans ajouter des balises supplémentaires ?
<body>
<script type="text/javascript">
function Check() {
var eingabe = document.getElementById("eingabe").value;
var erklaerung = document.getElementById("erklaerung").value;
if(eingabe == erklaerung) {
return true;
}
else {
return false;
}
}
</script>
<h1>Vocabulary Trainer</h1>
Text selection
<form action='index.php' method='post' name='text' >
<select name="text" size="1" onchange="text.form.submit();">
<option selected <?php if ($_POST['text'] == 'All') print 'selected '; ?> value="All">All</option>
<option <?php if ($_POST['text'] == 'Ironman') print 'selected '; ?> value="Ironman">Ironman</option>
<option <?php if ($_POST['text'] == 'Coincidence') print 'selected '; ?> value="Coincidence">Coincidence</option>
<option <?php if ($_POST['text'] == 'Memory') print 'selected '; ?> value="Memory">Memory</option>
<option <?php if ($_POST['text'] == 'Sentenced to Death') print 'selected '; ?> value="Sentenced to Death">Sentenced to Death</option>
<option <?php if ($_POST['text'] == 'Lizardman Leaps Into US Folklore') print 'selected '; ?> value="Lizardman Leaps Into US Folklore">Lizardman Leaps Into US Folklore</option>
<option <?php if ($_POST['text'] == 'A Thief's Lucky Day') print 'selected '; ?> value="A Thief's Lucky Day">A Thief's Lucky Day</option>
</select>
</form>
<hr />
<?php
require_once('verbvars.php');
$value = $_POST['text'];
// Mit Datenbank verbinden
$db = mysqli_connect(DB_HOST, DB_BENUTZER, DB_PASSWORT, DB_NAME);
mysqli_set_charset($db, "utf8");
// Die Highscore-Daten aus der Datenbank abrufen
if ($value == "All") {
$sql = "SELECT * FROM vokabel_liste ORDER BY RAND() LIMIT 10";}
else {
$sql = "SELECT * FROM vokabel_liste WHERE text = '$value' ORDER BY RAND() LIMIT 10";}
$daten = mysqli_query($db, $sql);
// Die Daten durchlaufen und als HTML formatieren
echo '<table border="1">';
<form>
<?php while ($zeile = mysqli_fetch_array($daten)) { ?>
<tr><td class="eintrag"><span class="id"><?=$zeile['id'];?></span></td>
<td><?=$zeile['vokabel'];?></td>
<td>
<input id="eingabe_<?=$zeile['id'];?>" name="eingabe" type="text" size="30">
<input id="erklaerung_<?=$zeile['id'];?>" name="erklaerung" type="hidden" size="30" value="<?=$zeile['reponse'];?>">
</td>
</tr>
<?php } ?>
<input type="submit" value="Check" name="form_validation" />
</form>
mysqli_close($db);
?>
</body>
Concernant les balises php, je n'ai fait que recopier ta boucle while, j'ai bien vu que les balises n'étaient pas correctement déposées, mais j'y comprends rien.
Je me doutais bien que je devais le remplacer par une autre variable, mais je ne sais pas laquelle, désolé, mais je suis complètement perdu avec ton code. Je ne sais pas de quelle variable tu parles. C'est une nouvelle ou je l'ai déjà déclaré quelque part ?
Pour le name="submit", j'avais recopié ça sur le net, ça n'avait pas l'air de déranger l'ordinateur, donc j'ai laissé.
Ta boucle while que tu viens de poster-là, c'est la bonne ? Je remplacer la mienne par celle-là ? Les balises php ne sont pas correctes, je dois les corriger ?
Y'aurait pas moyen de faire avec les echo, car là avec toutes les balises php, je suis complètement largué.
Et concernant le bouton que je dois mettre dans le formulaire globale, je copie le code du bouton dans le formulaire principal sans ajouter des balises supplémentaires ?
<body>
<script type="text/javascript">
function Check() {
var eingabe = document.getElementById("eingabe").value;
var erklaerung = document.getElementById("erklaerung").value;
if(eingabe == erklaerung) {
return true;
}
else {
return false;
}
}
</script>
<h1>Vocabulary Trainer</h1>
Text selection
<form action='index.php' method='post' name='text' >
<select name="text" size="1" onchange="text.form.submit();">
<option selected <?php if ($_POST['text'] == 'All') print 'selected '; ?> value="All">All</option>
<option <?php if ($_POST['text'] == 'Ironman') print 'selected '; ?> value="Ironman">Ironman</option>
<option <?php if ($_POST['text'] == 'Coincidence') print 'selected '; ?> value="Coincidence">Coincidence</option>
<option <?php if ($_POST['text'] == 'Memory') print 'selected '; ?> value="Memory">Memory</option>
<option <?php if ($_POST['text'] == 'Sentenced to Death') print 'selected '; ?> value="Sentenced to Death">Sentenced to Death</option>
<option <?php if ($_POST['text'] == 'Lizardman Leaps Into US Folklore') print 'selected '; ?> value="Lizardman Leaps Into US Folklore">Lizardman Leaps Into US Folklore</option>
<option <?php if ($_POST['text'] == 'A Thief's Lucky Day') print 'selected '; ?> value="A Thief's Lucky Day">A Thief's Lucky Day</option>
</select>
</form>
<hr />
<?php
require_once('verbvars.php');
$value = $_POST['text'];
// Mit Datenbank verbinden
$db = mysqli_connect(DB_HOST, DB_BENUTZER, DB_PASSWORT, DB_NAME);
mysqli_set_charset($db, "utf8");
// Die Highscore-Daten aus der Datenbank abrufen
if ($value == "All") {
$sql = "SELECT * FROM vokabel_liste ORDER BY RAND() LIMIT 10";}
else {
$sql = "SELECT * FROM vokabel_liste WHERE text = '$value' ORDER BY RAND() LIMIT 10";}
$daten = mysqli_query($db, $sql);
// Die Daten durchlaufen und als HTML formatieren
echo '<table border="1">';
<form>
<?php while ($zeile = mysqli_fetch_array($daten)) { ?>
<tr><td class="eintrag"><span class="id"><?=$zeile['id'];?></span></td>
<td><?=$zeile['vokabel'];?></td>
<td>
<input id="eingabe_<?=$zeile['id'];?>" name="eingabe" type="text" size="30">
<input id="erklaerung_<?=$zeile['id'];?>" name="erklaerung" type="hidden" size="30" value="<?=$zeile['reponse'];?>">
</td>
</tr>
<?php } ?>
<input type="submit" value="Check" name="form_validation" />
</form>
mysqli_close($db);
?>
</body>
Ok, mais pour moi l'architecture de mon tableau me semble correcte. Dans la première colonne, j'ai l'id du vocable dans la base donnée. Dans la 2ème colonne se trouve le vocable à expliquer et finalement dans la 3ème colonne il y a le champ de texte dans lequel on doit écrire l'explication.
Or dans ta boucle while j'ai le sentiment d'avoir une colonne de plus, car il y a deux champ de texte (si j'ai bien compris), sauf que le dernier tu l'as caché avec le type="hidden".
Vaut mieux l'éviter, mais avec toutes tes balises php dans la boucle while, je suis complètement largué. :D
Quoique non c'est pas des balises php, mais c'est simplement pour ajouter des variables.
Est-ce que tu pourrais me dire ce que je dois exactement faire avec le code que je t'ai donné ?
Qu'est-ce que je dois corriger, effacer, ajouter. Je suis largué.
Or dans ta boucle while j'ai le sentiment d'avoir une colonne de plus, car il y a deux champ de texte (si j'ai bien compris), sauf que le dernier tu l'as caché avec le type="hidden".
Vaut mieux l'éviter, mais avec toutes tes balises php dans la boucle while, je suis complètement largué. :D
Quoique non c'est pas des balises php, mais c'est simplement pour ajouter des variables.
Est-ce que tu pourrais me dire ce que je dois exactement faire avec le code que je t'ai donné ?
Qu'est-ce que je dois corriger, effacer, ajouter. Je suis largué.
Le champ hidden est dans la même colonne que le champ de saisie, donc y'a pas plus de colonnes qu'avant ;)
A vu d'oeil, c'est tout ce qu'il y a à modifier. Vérifie juste que quand tu arrives sur ta balises <form>, tu ne sois pas dans du code PHP (si c'est le cas ferme ta balise php avant)
<form onSubmit="return Check();" et_tes_autres_propriétés >
<?php while ($zeile = mysqli_fetch_array($daten)) { ?>
<tr><td class="eintrag"><span class="id"><?=$zeile['id'];?></span></td>
<td><?=$zeile['vokabel'];?></td>
<td>
<input id="eingabe_<?=$zeile['id'];?>" name="eingabe" type="text" size="30">
<input id="erklaerung_<?=$zeile['id'];?>" name="erklaerung" type="hidden" size="30" value="<?=$zeile['reponse'];?>">
</td>
</tr>
<?php } ?>
<input type="submit" value="Check" name="form_validation" />
</form>
A vu d'oeil, c'est tout ce qu'il y a à modifier. Vérifie juste que quand tu arrives sur ta balises <form>, tu ne sois pas dans du code PHP (si c'est le cas ferme ta balise php avant)
Ah oui correct, désolé, j'ai pas fait attention !
Voilà c'est bon j'ai fermé le code PHP avant la balise <form>
Je les ai rouvert pour le mysqli_close($db); à la fin de la balise </form>
Par contre je ne sais pas de quels autres propriétés tu parles dans la balise <form>, je dois en mettre d'autres obligatoirement ?
Voilà mon code, il fonctionne (j'arrive à accéder à ma page, mais bon ça ne semble pas marcher comme il faut):
<body>
<script type="text/javascript">
function Check() {
var eingabe = document.getElementById("eingabe").value;
var erklaerung = document.getElementById("erklaerung").value;
if(eingabe == erklaerung) {
return true;
}
else {
return false;
}
}
</script>
<h1>Vocabulary Trainer</h1>
Text selection
<form action='index.php' method='post' name='text' >
<select name="text" size="1" onchange="text.form.submit();">
<option selected <?php if ($_POST['text'] == 'All') print 'selected '; ?> value="All">All</option>
<option <?php if ($_POST['text'] == 'Ironman') print 'selected '; ?> value="Ironman">Ironman</option>
<option <?php if ($_POST['text'] == 'Coincidence') print 'selected '; ?> value="Coincidence">Coincidence</option>
<option <?php if ($_POST['text'] == 'Memory') print 'selected '; ?> value="Memory">Memory</option>
<option <?php if ($_POST['text'] == 'Sentenced to Death') print 'selected '; ?> value="Sentenced to Death">Sentenced to Death</option>
<option <?php if ($_POST['text'] == 'Lizardman Leaps Into US Folklore') print 'selected '; ?> value="Lizardman Leaps Into US Folklore">Lizardman Leaps Into US Folklore</option>
<option <?php if ($_POST['text'] == 'A Thief's Lucky Day') print 'selected '; ?> value="A Thief's Lucky Day">A Thief's Lucky Day</option>
</select>
</form>
<hr />
<?php
require_once('verbvars.php');
$value = $_POST['text'];
// Mit Datenbank verbinden
$db = mysqli_connect(DB_HOST, DB_BENUTZER, DB_PASSWORT, DB_NAME);
mysqli_set_charset($db, "utf8");
// Die Highscore-Daten aus der Datenbank abrufen
if ($value == "All") {
$sql = "SELECT * FROM vokabel_liste ORDER BY RAND() LIMIT 10";}
else {
$sql = "SELECT * FROM vokabel_liste WHERE text = '$value' ORDER BY RAND() LIMIT 10";}
$daten = mysqli_query($db, $sql);
// Die Daten durchlaufen und als HTML formatieren
echo '<table border="1">';
?>
<form onSubmit="return Check();">
<?php while ($zeile = mysqli_fetch_array($daten)) { ?>
<tr><td class="eintrag"><span class="id"><?=$zeile['id'];?></span></td>
<td><?=$zeile['vokabel'];?></td>
<td>
<input id="eingabe_<?=$zeile['id'];?>" name="eingabe" type="text" size="30">
<input id="erklaerung_<?=$zeile['id'];?>" name="erklaerung" type="hidden" size="30" value="<?=$zeile['reponse'];?>">
</td>
</tr>
<?php } ?>
<input type="submit" value="Check" name="form_validation" />
</form>
<?php
mysqli_close($db);
?>
</body>
Le site:
http://mizar.lte.lu/~jeske175/Help/index.php
En cliquant sur le bouton Check, le tableau ne doit pas disparaitre, mais tout simplement peindre les bordures des colonnes des explications qui ne correspondent pas à l'explication se trouvant dans la BDD en rouge.
Voilà c'est bon j'ai fermé le code PHP avant la balise <form>
Je les ai rouvert pour le mysqli_close($db); à la fin de la balise </form>
Par contre je ne sais pas de quels autres propriétés tu parles dans la balise <form>, je dois en mettre d'autres obligatoirement ?
Voilà mon code, il fonctionne (j'arrive à accéder à ma page, mais bon ça ne semble pas marcher comme il faut):
<body>
<script type="text/javascript">
function Check() {
var eingabe = document.getElementById("eingabe").value;
var erklaerung = document.getElementById("erklaerung").value;
if(eingabe == erklaerung) {
return true;
}
else {
return false;
}
}
</script>
<h1>Vocabulary Trainer</h1>
Text selection
<form action='index.php' method='post' name='text' >
<select name="text" size="1" onchange="text.form.submit();">
<option selected <?php if ($_POST['text'] == 'All') print 'selected '; ?> value="All">All</option>
<option <?php if ($_POST['text'] == 'Ironman') print 'selected '; ?> value="Ironman">Ironman</option>
<option <?php if ($_POST['text'] == 'Coincidence') print 'selected '; ?> value="Coincidence">Coincidence</option>
<option <?php if ($_POST['text'] == 'Memory') print 'selected '; ?> value="Memory">Memory</option>
<option <?php if ($_POST['text'] == 'Sentenced to Death') print 'selected '; ?> value="Sentenced to Death">Sentenced to Death</option>
<option <?php if ($_POST['text'] == 'Lizardman Leaps Into US Folklore') print 'selected '; ?> value="Lizardman Leaps Into US Folklore">Lizardman Leaps Into US Folklore</option>
<option <?php if ($_POST['text'] == 'A Thief's Lucky Day') print 'selected '; ?> value="A Thief's Lucky Day">A Thief's Lucky Day</option>
</select>
</form>
<hr />
<?php
require_once('verbvars.php');
$value = $_POST['text'];
// Mit Datenbank verbinden
$db = mysqli_connect(DB_HOST, DB_BENUTZER, DB_PASSWORT, DB_NAME);
mysqli_set_charset($db, "utf8");
// Die Highscore-Daten aus der Datenbank abrufen
if ($value == "All") {
$sql = "SELECT * FROM vokabel_liste ORDER BY RAND() LIMIT 10";}
else {
$sql = "SELECT * FROM vokabel_liste WHERE text = '$value' ORDER BY RAND() LIMIT 10";}
$daten = mysqli_query($db, $sql);
// Die Daten durchlaufen und als HTML formatieren
echo '<table border="1">';
?>
<form onSubmit="return Check();">
<?php while ($zeile = mysqli_fetch_array($daten)) { ?>
<tr><td class="eintrag"><span class="id"><?=$zeile['id'];?></span></td>
<td><?=$zeile['vokabel'];?></td>
<td>
<input id="eingabe_<?=$zeile['id'];?>" name="eingabe" type="text" size="30">
<input id="erklaerung_<?=$zeile['id'];?>" name="erklaerung" type="hidden" size="30" value="<?=$zeile['reponse'];?>">
</td>
</tr>
<?php } ?>
<input type="submit" value="Check" name="form_validation" />
</form>
<?php
mysqli_close($db);
?>
</body>
Le site:
http://mizar.lte.lu/~jeske175/Help/index.php
En cliquant sur le bouton Check, le tableau ne doit pas disparaitre, mais tout simplement peindre les bordures des colonnes des explications qui ne correspondent pas à l'explication se trouvant dans la BDD en rouge.
Oki, dans ce cas utilises un bouton de type button au lieu de submit. Et au lieu de faire un return true ou false, modifie les propriété de tes input text avec getElementById("ton_id").style.border = "solid red 1px";
Supprime aussi la propriété onsubmit, vu que tu n'as pas besoin de soumettre le formulaire.
Supprime aussi la propriété onsubmit, vu que tu n'as pas besoin de soumettre le formulaire.
J'ai ajouté un name, un ID et la méthode POST à ma balise <form>.
Modifié le code JS comme tu me l'as dit et supprimé la propriété onsubmit de mon formulaire. Le site ne fonctionne toujours pas.
Est-ce que le code va vérifier si notre explication correspond à celle qui se trouve dans la BDD ?
Code:
<body>
<script type="text/javascript">
function Check() {
var eingabe = document.getElementById("eingabe").value;
var erklaerung = document.getElementById("erklaerung").value;
if(eingabe != erklaerung) {
getElementById("eingabe").style.border = "solid red 1px";
}
}
</script>
<h1>Vocabulary Trainer</h1>
Text selection
<form action='index.php' method='post' name='text' >
<select name="text" size="1" onchange="text.form.submit();">
<option selected <?php if ($_POST['text'] == 'All') print 'selected '; ?> value="All">All</option>
<option <?php if ($_POST['text'] == 'Ironman') print 'selected '; ?> value="Ironman">Ironman</option>
<option <?php if ($_POST['text'] == 'Coincidence') print 'selected '; ?> value="Coincidence">Coincidence</option>
<option <?php if ($_POST['text'] == 'Memory') print 'selected '; ?> value="Memory">Memory</option>
<option <?php if ($_POST['text'] == 'Sentenced to Death') print 'selected '; ?> value="Sentenced to Death">Sentenced to Death</option>
<option <?php if ($_POST['text'] == 'Lizardman Leaps Into US Folklore') print 'selected '; ?> value="Lizardman Leaps Into US Folklore">Lizardman Leaps Into US Folklore</option>
<option <?php if ($_POST['text'] == 'A Thief's Lucky Day') print 'selected '; ?> value="A Thief's Lucky Day">A Thief's Lucky Day</option>
</select>
</form>
<hr />
<?php
require_once('verbvars.php');
$value = $_POST['text'];
// Mit Datenbank verbinden
$db = mysqli_connect(DB_HOST, DB_BENUTZER, DB_PASSWORT, DB_NAME);
mysqli_set_charset($db, "utf8");
if ($value == "All") {
$sql = "SELECT * FROM vokabel_liste ORDER BY RAND() LIMIT 10";}
else {
$sql = "SELECT * FROM vokabel_liste WHERE text = '$value' ORDER BY RAND() LIMIT 10";}
$daten = mysqli_query($db, $sql);
// Die Daten durchlaufen und als HTML formatieren
echo '<table border="1">';
?>
<form name="tabelle" id="tabelle" method="POST">
<?php while ($zeile = mysqli_fetch_array($daten)) { ?>
<tr><td class="eintrag"><span class="id"><?=$zeile['id'];?></span></td>
<td><?=$zeile['vokabel'];?></td>
<td>
<input id="eingabe_<?=$zeile['id'];?>" name="eingabe" type="text" size="30">
<input id="erklaerung_<?=$zeile['id'];?>" name="erklaerung" type="hidden" size="30" value="<?=$zeile['reponse'];?>">
</td>
</tr>
<?php } ?>
<input type="button" value="Check" name="form_validation" />
</form>
<?php
mysqli_close($db);
?>
</body>
Modifié le code JS comme tu me l'as dit et supprimé la propriété onsubmit de mon formulaire. Le site ne fonctionne toujours pas.
Est-ce que le code va vérifier si notre explication correspond à celle qui se trouve dans la BDD ?
Code:
<body>
<script type="text/javascript">
function Check() {
var eingabe = document.getElementById("eingabe").value;
var erklaerung = document.getElementById("erklaerung").value;
if(eingabe != erklaerung) {
getElementById("eingabe").style.border = "solid red 1px";
}
}
</script>
<h1>Vocabulary Trainer</h1>
Text selection
<form action='index.php' method='post' name='text' >
<select name="text" size="1" onchange="text.form.submit();">
<option selected <?php if ($_POST['text'] == 'All') print 'selected '; ?> value="All">All</option>
<option <?php if ($_POST['text'] == 'Ironman') print 'selected '; ?> value="Ironman">Ironman</option>
<option <?php if ($_POST['text'] == 'Coincidence') print 'selected '; ?> value="Coincidence">Coincidence</option>
<option <?php if ($_POST['text'] == 'Memory') print 'selected '; ?> value="Memory">Memory</option>
<option <?php if ($_POST['text'] == 'Sentenced to Death') print 'selected '; ?> value="Sentenced to Death">Sentenced to Death</option>
<option <?php if ($_POST['text'] == 'Lizardman Leaps Into US Folklore') print 'selected '; ?> value="Lizardman Leaps Into US Folklore">Lizardman Leaps Into US Folklore</option>
<option <?php if ($_POST['text'] == 'A Thief's Lucky Day') print 'selected '; ?> value="A Thief's Lucky Day">A Thief's Lucky Day</option>
</select>
</form>
<hr />
<?php
require_once('verbvars.php');
$value = $_POST['text'];
// Mit Datenbank verbinden
$db = mysqli_connect(DB_HOST, DB_BENUTZER, DB_PASSWORT, DB_NAME);
mysqli_set_charset($db, "utf8");
if ($value == "All") {
$sql = "SELECT * FROM vokabel_liste ORDER BY RAND() LIMIT 10";}
else {
$sql = "SELECT * FROM vokabel_liste WHERE text = '$value' ORDER BY RAND() LIMIT 10";}
$daten = mysqli_query($db, $sql);
// Die Daten durchlaufen und als HTML formatieren
echo '<table border="1">';
?>
<form name="tabelle" id="tabelle" method="POST">
<?php while ($zeile = mysqli_fetch_array($daten)) { ?>
<tr><td class="eintrag"><span class="id"><?=$zeile['id'];?></span></td>
<td><?=$zeile['vokabel'];?></td>
<td>
<input id="eingabe_<?=$zeile['id'];?>" name="eingabe" type="text" size="30">
<input id="erklaerung_<?=$zeile['id'];?>" name="erklaerung" type="hidden" size="30" value="<?=$zeile['reponse'];?>">
</td>
</tr>
<?php } ?>
<input type="button" value="Check" name="form_validation" />
</form>
<?php
mysqli_close($db);
?>
</body>
<body>
<script type="text/javascript">
function Check() {
for(var i=0;i<10;i++) {
var eingabe = document.getElementById("eingabe"+i).value;
var erklaerung = document.getElementById("erklaerung"+i).value;
if(eingabe != erklaerung) {
document.getElementById("eingabe"+i).style.border = "solid red 1px";
}
}
}
</script>
<h1>Vocabulary Trainer</h1>
Text selection
<form action='index.php' method='post' name='text' >
<select name="text" size="1" onchange="text.form.submit();">
<option selected <?php if ($_POST['text'] == 'All') print 'selected '; ?> value="All">All</option>
<option <?php if ($_POST['text'] == 'Ironman') print 'selected '; ?> value="Ironman">Ironman</option>
<option <?php if ($_POST['text'] == 'Coincidence') print 'selected '; ?> value="Coincidence">Coincidence</option>
<option <?php if ($_POST['text'] == 'Memory') print 'selected '; ?> value="Memory">Memory</option>
<option <?php if ($_POST['text'] == 'Sentenced to Death') print 'selected '; ?> value="Sentenced to Death">Sentenced to Death</option>
<option <?php if ($_POST['text'] == 'Lizardman Leaps Into US Folklore') print 'selected '; ?> value="Lizardman Leaps Into US Folklore">Lizardman Leaps Into US Folklore</option>
<option <?php if ($_POST['text'] == 'A Thief's Lucky Day') print 'selected '; ?> value="A Thief's Lucky Day">A Thief's Lucky Day</option>
</select>
</form>
<hr />
<?php
require_once('verbvars.php');
$value = $_POST['text'];
// Mit Datenbank verbinden
$db = mysqli_connect(DB_HOST, DB_BENUTZER, DB_PASSWORT, DB_NAME);
mysqli_set_charset($db, "utf8");
if ($value == "All") {
$sql = "SELECT * FROM vokabel_liste ORDER BY RAND() LIMIT 10";}
else {
$sql = "SELECT * FROM vokabel_liste WHERE text = '$value' ORDER BY RAND() LIMIT 10";}
$daten = mysqli_query($db, $sql);
// Die Daten durchlaufen und als HTML formatieren
echo '<table border="1">';
?>
<form name="tabelle" id="tabelle" method="POST">
<?
$i = 0;
php while ($zeile = mysqli_fetch_array($daten)) {
?>
<tr><td class="eintrag"><span class="id"><?=$zeile['id'];?></span></td>
<td><?=$zeile['vokabel'];?></td>
<td>
<input id="eingabe_<?=$i;?>" name="eingabe" type="text" size="30">
<input id="erklaerung_<?=$i;?>" name="erklaerung" type="hidden" size="30" value="<?=$zeile['reponse'];?>">
</td>
</tr>
<?php
$i++;
}
?>
<input type="button" value="Check" name="form_validation" onclick="Check();" />
</form>
<?php
mysqli_close($db);
?>
J'ai mis en gras tout ce qu'il faut corriger, ca devrait être bon.
D'accord d'accord. J'ai remplacé mon code par le tiens, à mon avis j'aurai pas dû le faire. Déjà il me semble que t'as une petite faute ici:
<form name="tabelle" id="tabelle" method="POST">
<?
$i = 0;
php while ($zeile = mysqli_fetch_array($daten)) {
?>
J'ai mis comme ça:
<form name="tabelle" id="tabelle" method="POST">
<?php $i = 0; ?>
<?php while ($zeile = mysqli_fetch_array($daten)) { ?>
Reste à voir, si j'ai bien fait.
Ensuite, je ne sais pas si t'as fait exprès, mais tu effacé ce qu'y se trouvaitpour simplement ajouter le $i :
<input id="eingabe_<?=$i;?>" name="eingabe" type="text" size="30">
<input id="erklaerung_<?=$i;?>" name="erklaerung" type="hidden" size="30" value="<?=$zeile['reponse'];?>">
<form name="tabelle" id="tabelle" method="POST">
<?
$i = 0;
php while ($zeile = mysqli_fetch_array($daten)) {
?>
J'ai mis comme ça:
<form name="tabelle" id="tabelle" method="POST">
<?php $i = 0; ?>
<?php while ($zeile = mysqli_fetch_array($daten)) { ?>
Reste à voir, si j'ai bien fait.
Ensuite, je ne sais pas si t'as fait exprès, mais tu effacé ce qu'y se trouvaitpour simplement ajouter le $i :
<input id="eingabe_<?=$i;?>" name="eingabe" type="text" size="30">
<input id="erklaerung_<?=$i;?>" name="erklaerung" type="hidden" size="30" value="<?=$zeile['reponse'];?>">
D'accord j'ai compris. :)
Par contre c'est pas pour faire le chiant, mais ça ne fonctionne toujours pas.
http://mizar.lte.lu/~jeske175/Help/index.php
<body>
<script type="text/javascript">
function Check() {
for(var i=0;i<10;i++) {
var eingabe = document.getElementById("eingabe"+1).value;
var erklaerung = document.getElementById("erklaerung"+1).value;
if(eingabe != erklaerung) {
document.getElementById("eingabe"+1).style.border = "solid red 1px";
}
else {
document.getElementById("eingabe"+1).style.border = "solid green 1px";
}
}
}
</script>
<h1>Vocabulary Trainer</h1>
Text selection
<form action='index.php' method='post' name='text' >
<select name="text" size="1" onchange="text.form.submit();">
<option selected <?php if ($_POST['text'] == 'All') print 'selected '; ?> value="All">All</option>
<option <?php if ($_POST['text'] == 'Ironman') print 'selected '; ?> value="Ironman">Ironman</option>
<option <?php if ($_POST['text'] == 'Coincidence') print 'selected '; ?> value="Coincidence">Coincidence</option>
<option <?php if ($_POST['text'] == 'Memory') print 'selected '; ?> value="Memory">Memory</option>
<option <?php if ($_POST['text'] == 'Sentenced to Death') print 'selected '; ?> value="Sentenced to Death">Sentenced to Death</option>
<option <?php if ($_POST['text'] == 'Lizardman Leaps Into US Folklore') print 'selected '; ?> value="Lizardman Leaps Into US Folklore">Lizardman Leaps Into US Folklore</option>
<option <?php if ($_POST['text'] == 'A Thief's Lucky Day') print 'selected '; ?> value="A Thief's Lucky Day">A Thief's Lucky Day</option>
</select>
</form>
<hr />
<?php
require_once('verbvars.php');
$value = $_POST['text'];
// Mit Datenbank verbinden
$db = mysqli_connect(DB_HOST, DB_BENUTZER, DB_PASSWORT, DB_NAME);
mysqli_set_charset($db, "utf8");
if ($value == "All") {
$sql = "SELECT * FROM vokabel_liste ORDER BY RAND() LIMIT 10";}
else {
$sql = "SELECT * FROM vokabel_liste WHERE text = '$value' ORDER BY RAND() LIMIT 10";}
$daten = mysqli_query($db, $sql);
// Die Daten durchlaufen und als HTML formatieren
echo '<table border="1">';
?>
<form name="tabelle" id="tabelle" method="POST">
<?php
$i = 0;
while ($zeile = mysqli_fetch_array($daten)) { ?>
<tr><td class="eintrag"><span class="id"><?=$zeile['id'];?></span></td>
<td><?=$zeile['vokabel'];?></td>
<td>
<input id="eingabe_<?=$i;?>" name="eingabe" type="text" size="30">
<input id="erklaerung_<?=$i;?>" name="erklaerung" type="hidden" size="30" value="<?=$zeile['erklaerung'];?>">
</td>
</tr>
<?php } ?>
<input type="button" value="Check" name="form_validation" onclick="Check()";/>
</form>
<?php
mysqli_close($db);
?>
</body>
Pour le input hidden:
<input id="erklaerung_<?=$i;?>" name="erklaerung" type="hidden" size="30" value="<?=$zeile['erklaerung'];?>">
Je dois bien y mettre le nom de la colonne se trouvant dans la BDD où se trouve la bonne explication du vocable, non ?
Par contre c'est pas pour faire le chiant, mais ça ne fonctionne toujours pas.
http://mizar.lte.lu/~jeske175/Help/index.php
<body>
<script type="text/javascript">
function Check() {
for(var i=0;i<10;i++) {
var eingabe = document.getElementById("eingabe"+1).value;
var erklaerung = document.getElementById("erklaerung"+1).value;
if(eingabe != erklaerung) {
document.getElementById("eingabe"+1).style.border = "solid red 1px";
}
else {
document.getElementById("eingabe"+1).style.border = "solid green 1px";
}
}
}
</script>
<h1>Vocabulary Trainer</h1>
Text selection
<form action='index.php' method='post' name='text' >
<select name="text" size="1" onchange="text.form.submit();">
<option selected <?php if ($_POST['text'] == 'All') print 'selected '; ?> value="All">All</option>
<option <?php if ($_POST['text'] == 'Ironman') print 'selected '; ?> value="Ironman">Ironman</option>
<option <?php if ($_POST['text'] == 'Coincidence') print 'selected '; ?> value="Coincidence">Coincidence</option>
<option <?php if ($_POST['text'] == 'Memory') print 'selected '; ?> value="Memory">Memory</option>
<option <?php if ($_POST['text'] == 'Sentenced to Death') print 'selected '; ?> value="Sentenced to Death">Sentenced to Death</option>
<option <?php if ($_POST['text'] == 'Lizardman Leaps Into US Folklore') print 'selected '; ?> value="Lizardman Leaps Into US Folklore">Lizardman Leaps Into US Folklore</option>
<option <?php if ($_POST['text'] == 'A Thief's Lucky Day') print 'selected '; ?> value="A Thief's Lucky Day">A Thief's Lucky Day</option>
</select>
</form>
<hr />
<?php
require_once('verbvars.php');
$value = $_POST['text'];
// Mit Datenbank verbinden
$db = mysqli_connect(DB_HOST, DB_BENUTZER, DB_PASSWORT, DB_NAME);
mysqli_set_charset($db, "utf8");
if ($value == "All") {
$sql = "SELECT * FROM vokabel_liste ORDER BY RAND() LIMIT 10";}
else {
$sql = "SELECT * FROM vokabel_liste WHERE text = '$value' ORDER BY RAND() LIMIT 10";}
$daten = mysqli_query($db, $sql);
// Die Daten durchlaufen und als HTML formatieren
echo '<table border="1">';
?>
<form name="tabelle" id="tabelle" method="POST">
<?php
$i = 0;
while ($zeile = mysqli_fetch_array($daten)) { ?>
<tr><td class="eintrag"><span class="id"><?=$zeile['id'];?></span></td>
<td><?=$zeile['vokabel'];?></td>
<td>
<input id="eingabe_<?=$i;?>" name="eingabe" type="text" size="30">
<input id="erklaerung_<?=$i;?>" name="erklaerung" type="hidden" size="30" value="<?=$zeile['erklaerung'];?>">
</td>
</tr>
<?php } ?>
<input type="button" value="Check" name="form_validation" onclick="Check()";/>
</form>
<?php
mysqli_close($db);
?>
</body>
Pour le input hidden:
<input id="erklaerung_<?=$i;?>" name="erklaerung" type="hidden" size="30" value="<?=$zeile['erklaerung'];?>">
Je dois bien y mettre le nom de la colonne se trouvant dans la BDD où se trouve la bonne explication du vocable, non ?
L'alert ne fonctionne pas à partir d'ici:
<script type="text/javascript">
function Check() {
for(var i=0;i<10;i++) {
var eingabe = document.getElementById("eingabe"+1).value;
var erklaerung = document.getElementById("erklaerung"+1).value;
alert('ici');
if(eingabe != erklaerung) {
document.getElementById("eingabe"+1).style.border = "solid red 1px";
}
else {
document.getElementById("eingabe"+1).style.border = "solid green 1px";
}
}
}
</script>
<script type="text/javascript">
function Check() {
for(var i=0;i<10;i++) {
var eingabe = document.getElementById("eingabe"+1).value;
var erklaerung = document.getElementById("erklaerung"+1).value;
alert('ici');
if(eingabe != erklaerung) {
document.getElementById("eingabe"+1).style.border = "solid red 1px";
}
else {
document.getElementById("eingabe"+1).style.border = "solid green 1px";
}
}
}
</script>