Aide en PHP
Fermé
Nivek99
Messages postés
19
Date d'inscription
mardi 21 février 2012
Statut
Membre
Dernière intervention
23 février 2012
-
21 févr. 2012 à 11:31
Sombresonge Messages postés 106 Date d'inscription mardi 7 février 2012 Statut Membre Dernière intervention 19 avril 2015 - 23 févr. 2012 à 16:31
Sombresonge Messages postés 106 Date d'inscription mardi 7 février 2012 Statut Membre Dernière intervention 19 avril 2015 - 23 févr. 2012 à 16:31
23 réponses
Sombresonge
Messages postés
106
Date d'inscription
mardi 7 février 2012
Statut
Membre
Dernière intervention
19 avril 2015
9
Modifié par Sombresonge le 21/02/2012 à 13:53
Modifié par Sombresonge le 21/02/2012 à 13:53
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).
Sombresonge
Messages postés
106
Date d'inscription
mardi 7 février 2012
Statut
Membre
Dernière intervention
19 avril 2015
9
Modifié par Sombresonge le 21/02/2012 à 17:16
Modifié par Sombresonge le 21/02/2012 à 17:16
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
Sombresonge
Messages postés
106
Date d'inscription
mardi 7 février 2012
Statut
Membre
Dernière intervention
19 avril 2015
9
Modifié par Sombresonge le 22/02/2012 à 14:23
Modifié par Sombresonge le 22/02/2012 à 14:23
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.
Sombresonge
Messages postés
106
Date d'inscription
mardi 7 février 2012
Statut
Membre
Dernière intervention
19 avril 2015
9
22 févr. 2012 à 23:22
22 févr. 2012 à 23:22
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
AssassinTourist
Messages postés
5710
Date d'inscription
lundi 16 janvier 2012
Statut
Contributeur
Dernière intervention
29 février 2024
1 311
21 févr. 2012 à 11:40
21 févr. 2012 à 11:40
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.
Nivek99
Messages postés
19
Date d'inscription
mardi 21 février 2012
Statut
Membre
Dernière intervention
23 février 2012
21 févr. 2012 à 11:47
21 févr. 2012 à 11:47
Merci, mais je suis encore un débutant en php et en javascript je suis un tout petit novice. Ça aide pas. :P
AssassinTourist
Messages postés
5710
Date d'inscription
lundi 16 janvier 2012
Statut
Contributeur
Dernière intervention
29 février 2024
1 311
21 févr. 2012 à 11:55
21 févr. 2012 à 11:55
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)
Nivek99
Messages postés
19
Date d'inscription
mardi 21 février 2012
Statut
Membre
Dernière intervention
23 février 2012
21 févr. 2012 à 12:06
21 févr. 2012 à 12:06
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 ?
AssassinTourist
Messages postés
5710
Date d'inscription
lundi 16 janvier 2012
Statut
Contributeur
Dernière intervention
29 février 2024
1 311
Modifié par AssassinTourist le 21/02/2012 à 12:11
Modifié par AssassinTourist le 21/02/2012 à 12:11
Pour le Check donc, oui.
Pour le Next, je dirais non, puisqu'il s'agit d'une simple pagination. Regarde par ici => https://www.commentcamarche.net/faq/20420-php-pagination Du php suffira.
Pour le Next, je dirais non, puisqu'il s'agit d'une simple pagination. Regarde par ici => https://www.commentcamarche.net/faq/20420-php-pagination Du php suffira.
Nivek99
Messages postés
19
Date d'inscription
mardi 21 février 2012
Statut
Membre
Dernière intervention
23 février 2012
Modifié par Nivek99 le 21/02/2012 à 12:34
Modifié par Nivek99 le 21/02/2012 à 12:34
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.
Nivek99
Messages postés
19
Date d'inscription
mardi 21 février 2012
Statut
Membre
Dernière intervention
23 février 2012
Modifié par Nivek99 le 21/02/2012 à 14:23
Modifié par Nivek99 le 21/02/2012 à 14:23
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.
Nivek99
Messages postés
19
Date d'inscription
mardi 21 février 2012
Statut
Membre
Dernière intervention
23 février 2012
Modifié par Nivek99 le 21/02/2012 à 18:16
Modifié par Nivek99 le 21/02/2012 à 18:16
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>
Sombresonge
Messages postés
106
Date d'inscription
mardi 7 février 2012
Statut
Membre
Dernière intervention
19 avril 2015
9
Modifié par Sombresonge le 21/02/2012 à 18:24
Modifié par Sombresonge le 21/02/2012 à 18:24
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']">
Nivek99
Messages postés
19
Date d'inscription
mardi 21 février 2012
Statut
Membre
Dernière intervention
23 février 2012
Modifié par Nivek99 le 21/02/2012 à 18:37
Modifié par Nivek99 le 21/02/2012 à 18:37
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 ?
Sombresonge
Messages postés
106
Date d'inscription
mardi 7 février 2012
Statut
Membre
Dernière intervention
19 avril 2015
9
21 févr. 2012 à 18:54
21 févr. 2012 à 18:54
tu dois l'ajouter dans ta boucle. ca te permet d'avoir un champ hidden contenant la réponse pour chaque question que tu affiches.
Nivek99
Messages postés
19
Date d'inscription
mardi 21 février 2012
Statut
Membre
Dernière intervention
23 février 2012
21 févr. 2012 à 19:08
21 févr. 2012 à 19:08
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.
Sombresonge
Messages postés
106
Date d'inscription
mardi 7 février 2012
Statut
Membre
Dernière intervention
19 avril 2015
9
22 févr. 2012 à 01:00
22 févr. 2012 à 01:00
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
Nivek99
Messages postés
19
Date d'inscription
mardi 21 février 2012
Statut
Membre
Dernière intervention
23 février 2012
22 févr. 2012 à 12:14
22 févr. 2012 à 12:14
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>
Sombresonge
Messages postés
106
Date d'inscription
mardi 7 février 2012
Statut
Membre
Dernière intervention
19 avril 2015
9
Modifié par Sombresonge le 22/02/2012 à 13:52
Modifié par Sombresonge le 22/02/2012 à 13:52
<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.
Nivek99
Messages postés
19
Date d'inscription
mardi 21 février 2012
Statut
Membre
Dernière intervention
23 février 2012
Modifié par Nivek99 le 22/02/2012 à 14:15
Modifié par Nivek99 le 22/02/2012 à 14:15
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>
Nivek99
Messages postés
19
Date d'inscription
mardi 21 février 2012
Statut
Membre
Dernière intervention
23 février 2012
22 févr. 2012 à 14:41
22 févr. 2012 à 14:41
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é.
Sombresonge
Messages postés
106
Date d'inscription
mardi 7 février 2012
Statut
Membre
Dernière intervention
19 avril 2015
9
22 févr. 2012 à 14:51
22 févr. 2012 à 14:51
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)
Nivek99
Messages postés
19
Date d'inscription
mardi 21 février 2012
Statut
Membre
Dernière intervention
23 février 2012
22 févr. 2012 à 15:05
22 févr. 2012 à 15:05
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.
Sombresonge
Messages postés
106
Date d'inscription
mardi 7 février 2012
Statut
Membre
Dernière intervention
19 avril 2015
9
22 févr. 2012 à 18:54
22 févr. 2012 à 18:54
Bah éventuellement un name et un ID, ainsi que la méthode(POST)
Sombresonge
Messages postés
106
Date d'inscription
mardi 7 février 2012
Statut
Membre
Dernière intervention
19 avril 2015
9
Modifié par Sombresonge le 22/02/2012 à 18:59
Modifié par Sombresonge le 22/02/2012 à 18:59
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.
Nivek99
Messages postés
19
Date d'inscription
mardi 21 février 2012
Statut
Membre
Dernière intervention
23 février 2012
22 févr. 2012 à 20:47
22 févr. 2012 à 20:47
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>
Sombresonge
Messages postés
106
Date d'inscription
mardi 7 février 2012
Statut
Membre
Dernière intervention
19 avril 2015
9
22 févr. 2012 à 21:07
22 févr. 2012 à 21:07
Oui, ta fonction JS va vérifier si la réponse fournie est exactement celle stockée dans ton champ hidden (va falloir la modifier par contre pour qu'elle vérifie les 10 champs). Par contre, faut rajouter l'appel de la fonction Check() sur ton bouton, si tu ne l'appelles pas ca ne marchera pas.
Sombresonge
Messages postés
106
Date d'inscription
mardi 7 février 2012
Statut
Membre
Dernière intervention
19 avril 2015
9
Modifié par Sombresonge le 22/02/2012 à 21:15
Modifié par Sombresonge le 22/02/2012 à 21:15
<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.
Sombresonge
Messages postés
106
Date d'inscription
mardi 7 février 2012
Statut
Membre
Dernière intervention
19 avril 2015
9
22 févr. 2012 à 21:16
22 févr. 2012 à 21:16
Par contre, je te conseille de stocker ta fonction Check() dans un fichier JS que tu appèlera dans le header de ta page, ou au pire de la déclarer directement dans ce même header, mais surtout pas en milieu de page.
Nivek99
Messages postés
19
Date d'inscription
mardi 21 février 2012
Statut
Membre
Dernière intervention
23 février 2012
22 févr. 2012 à 21:38
22 févr. 2012 à 21:38
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'];?>">
Nivek99
Messages postés
19
Date d'inscription
mardi 21 février 2012
Statut
Membre
Dernière intervention
23 février 2012
22 févr. 2012 à 23:33
22 févr. 2012 à 23:33
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 ?
Sombresonge
Messages postés
106
Date d'inscription
mardi 7 février 2012
Statut
Membre
Dernière intervention
19 avril 2015
9
Modifié par Sombresonge le 22/02/2012 à 23:37
Modifié par Sombresonge le 22/02/2012 à 23:37
logiquement oui.
Essaye de faire des alert dans ta fonction JS pour voir ou sa bloque
Essaye de faire des alert dans ta fonction JS pour voir ou sa bloque
Nivek99
Messages postés
19
Date d'inscription
mardi 21 février 2012
Statut
Membre
Dernière intervention
23 février 2012
Modifié par Nivek99 le 22/02/2012 à 23:46
Modifié par Nivek99 le 22/02/2012 à 23:46
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>
Sombresonge
Messages postés
106
Date d'inscription
mardi 7 février 2012
Statut
Membre
Dernière intervention
19 avril 2015
9
22 févr. 2012 à 23:53
22 févr. 2012 à 23:53
tu as fais un alert des deux variables au dessus pour voir si tu récupérais bien les données ? Si oui, c'est que les champs saisis sont identiques en toute logique
Sombresonge
Messages postés
106
Date d'inscription
mardi 7 février 2012
Statut
Membre
Dernière intervention
19 avril 2015
9
22 févr. 2012 à 23:54
22 févr. 2012 à 23:54
je viens de voir l'erreur, tu as mis document.getElementById("eingabe"+1) au lieu de +i...