check of een waarde voldoet aan voorwaarden
ik maak een scriptje om frans te studeren.
Het lukt mij niet om te checken of het woord juist is.
wie kan even helpen en mij terug even op de juiste weg zetten?
De POST van het franse moet dus voldoen aan het franse woord in de database
dit is de code:
script staat in volgende post
Gewijzigd op 15/09/2010 19:58:21 door Jasper DS
-> zo kan je niet contoleren of er een post gedaan is!!
$check = mysql_result(mysql_query("SELECT COUNT(*) FROM frans WHERE ......
-> je moet mysql functies niet nesten, dat maakt het debuggen / foutafhandeling onmogelijk
-> gebruik ook altijd maar 1 fetch methode! En de voorkeur heeft dan _fetch_assoc
Neem eerst een wat tutorials door....
Selecteer altijd wat je wilt hebben.
hoe kan ik best checken of de post voldoet aan het woord in de db?
mysql_real_escape_string.
Verder moet je db ook nog op het juiste karakterset ingesteld staan (dus niet die Zweedse nonsense rommel die ze standaard hebben).
Verder moet je db ook nog op het juiste karakterset ingesteld staan (dus niet die Zweedse nonsense rommel die ze standaard hebben).
mijn db bestaat uit id, woord_fr, woord_nl.
woord_fr word naar het scherm geëchood dan vul je met een input een woord_nl in dan moet er nagekeken worden of het ingevulde woord hetzelfde is als het woord_nl in de database dat hoort bij het woord_fr dat weergeven is.
Gewijzigd op 15/09/2010 19:35:08 door Jasper DS
PHP jasper op 15/09/2010 19:20:43:
waarom zou ik hier mysql_real_escape_string gebruiken?
Omdat je userinput ($_POST) in de query zet.
Verder is de totale opzet verkeerd. Je zal het woord uit het formulier niet vinden naast het woord uit de database omdat na het posten eerst een nieuw woord uit de database wordt geselecteerd welk jij vergelijkt met het vorige woord.
ik heb nu dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
$sql = mysql_query("SELECT * FROM frans ORDER BY RAND() LIMIT 1");
while ($res=mysql_fetch_assoc($sql)) {
$ned = $res['woord_nl'];
//output
echo '<form name="form2" method="post" action="">';
echo ''.$res['woord_nl'].'';
echo '<br />';
echo '<tabel>';
echo '<tr>';
echo '<td><input type="text" name="woord_fr"/></td>';
echo '</tr>';
echo '<tr><td><input type="submit" name="submit1" value="Versturen" /></td></tr>';
echo '</tabel>';
echo '</form>';
// foutmeldingen
if(!isset($_POST['submit1'])) {
} else {
$check = mysql_result(mysql_query("SELECT COUNT(id) FROM frans WHERE woord_nl='".$ned."' AND woord_fr='".mysql_real_escape_string($_POST['woord_fr'])."'"),0);
$error = array();
if($_POST['woord_fr'] == "") {
$error[] = 'Je moet wel iets invullen!';
}
if($check == "0") {
$error[] = 'Fout';
}
// foutel tellen
$fouten = sizeof($error); // aantal errors tellen
if($fouten != 0) { // Er is minstens 1 error
echo '<ul>';
for($i = 0; $i < $fouten; $i++) {
echo '<li>'.$error[$i].'</li>';
}
echo '</ul>';
} else {
echo 'juist!';
echo '<br />';
}
}
}
?>
$sql = mysql_query("SELECT * FROM frans ORDER BY RAND() LIMIT 1");
while ($res=mysql_fetch_assoc($sql)) {
$ned = $res['woord_nl'];
//output
echo '<form name="form2" method="post" action="">';
echo ''.$res['woord_nl'].'';
echo '<br />';
echo '<tabel>';
echo '<tr>';
echo '<td><input type="text" name="woord_fr"/></td>';
echo '</tr>';
echo '<tr><td><input type="submit" name="submit1" value="Versturen" /></td></tr>';
echo '</tabel>';
echo '</form>';
// foutmeldingen
if(!isset($_POST['submit1'])) {
} else {
$check = mysql_result(mysql_query("SELECT COUNT(id) FROM frans WHERE woord_nl='".$ned."' AND woord_fr='".mysql_real_escape_string($_POST['woord_fr'])."'"),0);
$error = array();
if($_POST['woord_fr'] == "") {
$error[] = 'Je moet wel iets invullen!';
}
if($check == "0") {
$error[] = 'Fout';
}
// foutel tellen
$fouten = sizeof($error); // aantal errors tellen
if($fouten != 0) { // Er is minstens 1 error
echo '<ul>';
for($i = 0; $i < $fouten; $i++) {
echo '<li>'.$error[$i].'</li>';
}
echo '</ul>';
} else {
echo 'juist!';
echo '<br />';
}
}
}
?>
Zoals santhe zegt
Nu wordt er gekeken naar het volgende woord en niet naar het vorige kan ik dit misschien oplossen met een cookie?
Gewijzigd op 15/09/2010 20:08:28 door Jasper DS
Eerst het ingegeven woord controleren en dan pas een nieuw woord en het formulier.
en gaat dat met die formulier?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$sql = "SELECT id
FROM frans
WHERE woord_nl = '" . mysql_real_escape_string($_POST['woord_nl']) . "'
AND woord_fr = '" . mysql_real_escape_string($_POST['woord_fr']) . "'";
$res = mysql_query($sql);
if($res)
{
if(mysql_num_rows($res) == 1)
{
echo 'Juiste vertaling.';
}
else
{
echo 'Onjuiste vertaling.';
}
}
else
{
echo 'SQL Error.';
}
}
$sql = "SELECT woord_nl
FROM frans
ORDER BY RAND()
LIMIT 1";
$res = mysql_query($sql);
if($res)
{
$row = mysql_fetch_assoc($res);
echo '<form name="form2" method="post" action="">';
echo 'Vertaal ' . $row['woord_nl'];
echo '<input type="hidden" name="woord_nl" value="' . $row['woord_nl'] . '"/>';
echo '<br />';
echo '<tabel>';
echo '<tr>';
echo '<td><input type="text" name="woord_fr"/></td>';
echo '</tr>';
echo '<tr><td><input type="submit" name="submit1" value="Versturen" /></td></tr>';
echo '</tabel>';
echo '</form>';
}
else
{
echo 'SQl Error.';
}
?>
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$sql = "SELECT id
FROM frans
WHERE woord_nl = '" . mysql_real_escape_string($_POST['woord_nl']) . "'
AND woord_fr = '" . mysql_real_escape_string($_POST['woord_fr']) . "'";
$res = mysql_query($sql);
if($res)
{
if(mysql_num_rows($res) == 1)
{
echo 'Juiste vertaling.';
}
else
{
echo 'Onjuiste vertaling.';
}
}
else
{
echo 'SQL Error.';
}
}
$sql = "SELECT woord_nl
FROM frans
ORDER BY RAND()
LIMIT 1";
$res = mysql_query($sql);
if($res)
{
$row = mysql_fetch_assoc($res);
echo '<form name="form2" method="post" action="">';
echo 'Vertaal ' . $row['woord_nl'];
echo '<input type="hidden" name="woord_nl" value="' . $row['woord_nl'] . '"/>';
echo '<br />';
echo '<tabel>';
echo '<tr>';
echo '<td><input type="text" name="woord_fr"/></td>';
echo '</tr>';
echo '<tr><td><input type="submit" name="submit1" value="Versturen" /></td></tr>';
echo '</tabel>';
echo '</form>';
}
else
{
echo 'SQl Error.';
}
?>
bedankt santhe