2 fouten
dit is het script:
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<?php
include('database.php');
session_start();
$loginnaam = $_SESSION['loginnaam'];
$database_query = "SELECT * FROM gebruikers WHERE loginnaam = '$loginnaam'";
$database_resultaat = mysql_query($database_query);
$train_gegevens = mysql_fetch_object($database_resultaat);
$getraind = $train_gegevens->getraind;
if($getraind == 0){
if(isset($_POST['vaardigheid'])){
$vaardigheid = $_POST['vaardigheid'];
print("<font color=red>Je hebt getraind op: <b>$vaardigheid</b><br>");
$beter = rand(1,4);
print("Je bent in $vaardigheid $beter beter geworden!<br>");
if($vaardigheid == keepen){
$nieuw = $train_gegevens->keepen + $beter;
}
if($vaardigheid == meeverdedigen){
$nieuw = $train_gegevens->meeverdedigen + $beter;
}
if($vaardigheid == tacklen){
$nieuw = $train_gegevens->keepen + $beter;
}
if($vaardigheid == dekken){
$nieuw = $train_gegevens->tacklen + $beter;
}
if($vaardigheid == passen){
$nieuw = $train_gegevens->passen + $beter;
}
if($vaardigheid == inzicht){
$nieuw = $train_gegevens->inzicht + $beter;
}
if($vaardigheid == tactiek){
$nieuw = $train_gegevens->tactiek + $beter;
}
if($vaardigheid == koppen){
$nieuw = $train_gegevens->koppen + $beter;
}
if($vaardigheid == schieten){
$nieuw = $train_gegevens->schieten + $beter;
}
if($vaardigheid == passeren){
$nieuw = $train_gegevens->passeren + $beter;
}
if($vaardigheid == leiderschap){
$nieuw = $train_gegevens->leiderschap + $beter;
}
print("Je hebt nu voor de vaardigheid $vaardigheid: $nieuw");
mysql_query("UPDATE gebruikers SET '$vaardigheid' = '$nieuw' WHERE loginnaam = '$loginnaam'");
}
}
?>
include('database.php');
session_start();
$loginnaam = $_SESSION['loginnaam'];
$database_query = "SELECT * FROM gebruikers WHERE loginnaam = '$loginnaam'";
$database_resultaat = mysql_query($database_query);
$train_gegevens = mysql_fetch_object($database_resultaat);
$getraind = $train_gegevens->getraind;
if($getraind == 0){
if(isset($_POST['vaardigheid'])){
$vaardigheid = $_POST['vaardigheid'];
print("<font color=red>Je hebt getraind op: <b>$vaardigheid</b><br>");
$beter = rand(1,4);
print("Je bent in $vaardigheid $beter beter geworden!<br>");
if($vaardigheid == keepen){
$nieuw = $train_gegevens->keepen + $beter;
}
if($vaardigheid == meeverdedigen){
$nieuw = $train_gegevens->meeverdedigen + $beter;
}
if($vaardigheid == tacklen){
$nieuw = $train_gegevens->keepen + $beter;
}
if($vaardigheid == dekken){
$nieuw = $train_gegevens->tacklen + $beter;
}
if($vaardigheid == passen){
$nieuw = $train_gegevens->passen + $beter;
}
if($vaardigheid == inzicht){
$nieuw = $train_gegevens->inzicht + $beter;
}
if($vaardigheid == tactiek){
$nieuw = $train_gegevens->tactiek + $beter;
}
if($vaardigheid == koppen){
$nieuw = $train_gegevens->koppen + $beter;
}
if($vaardigheid == schieten){
$nieuw = $train_gegevens->schieten + $beter;
}
if($vaardigheid == passeren){
$nieuw = $train_gegevens->passeren + $beter;
}
if($vaardigheid == leiderschap){
$nieuw = $train_gegevens->leiderschap + $beter;
}
print("Je hebt nu voor de vaardigheid $vaardigheid: $nieuw");
mysql_query("UPDATE gebruikers SET '$vaardigheid' = '$nieuw' WHERE loginnaam = '$loginnaam'");
}
}
?>
nu heb ik de volgende problemen:
1- de variabele "nieuw" is niet goed, er hoort te staan:
je bent *1* beter geworden, je hebt voor deze vaardigheid nu *2* punten
wat er staat:
je bent *1* beter geworden, je hebt voor deze vaardigheid nu *1* punten
de oude waarde wordt dus niet bij het aantal bijgetrainde punten opdgeteld.
2- er wordt in de database niets veranderd, terwijl de query zelf wel klopt.
ik hoop dat iemand een oplossing weet.
als je dat toevoegt na je query kun je zien of er toch fouten zitten in je query
2- als er een fout in me query zit, oke, maar hoe kan ik die andere fout eruit krijgen?
dus na het )
$database_resultaat = mysql_query($database_query) or die (mysql_error());
mysql_query("UPDATE gebruikers SET '$vaardigheid' = '$nieuw' WHERE loginnaam = '$loginnaam'") or die (mysql_error());
Je hebt getraind op: meeverdedigen
Je bent in meeverdedigen 4 beter geworden!
Je hebt nu voor de vaardigheid meeverdedigen: 4
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''meeverdedigen' = '4' WHERE loginnaam = 'Administrator'' at lin
dus toch een fout in je query :P
bedankt _o_
graag gedaan
Code (php)
1
2
3
2
3
<?php
mysql_query("UPDATE gebruikers SET ".$vaardigheid."=".$nieuw." WHERE loginnaam='".$loginnaam."';") or die (mysql_error());
?>
mysql_query("UPDATE gebruikers SET ".$vaardigheid."=".$nieuw." WHERE loginnaam='".$loginnaam."';") or die (mysql_error());
?>
Ik ga ervan uit dat je velden meeverdedigen enzo een integer zijn (of smallint). Daar moet je dan geen quotes om gebruiken als je ze weg wil schrijven, want dan ziet die ze als een varchar.
Misschien dat het zo ook al werkt, maar met de variabelen buiten quotes vind ik vaak netter:
mysql_query("UPDATE gebruikers SET '$vaardigheid' = $nieuw WHERE loginnaam = '$loginnaam'") or die (mysql_error());
Code (php)
1
2
3
2
3
<?php
mysql_query("UPDATE gebruikers SET $vaardigheid = $nieuw WHERE loginnaam = '$loginnaam'")or die (mysql_error());
?>
mysql_query("UPDATE gebruikers SET $vaardigheid = $nieuw WHERE loginnaam = '$loginnaam'")or die (mysql_error());
?>
dit heb ik nu het werkt prima (Y)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$query = "
UPDATE
gebruikers
SET
".$vaardigheid." = ".$nieuw."
WHERE
loginnaam = '".$loginnaam."'
";
$result = mysql_query($query);
if (!$result) { // query is mislukt
echo 'Er is een fout opgetreden: '.mysql_error().'<br />';
echo 'Met query: '.$query;
die(); // kan netter
}
?>
$query = "
UPDATE
gebruikers
SET
".$vaardigheid." = ".$nieuw."
WHERE
loginnaam = '".$loginnaam."'
";
$result = mysql_query($query);
if (!$result) { // query is mislukt
echo 'Er is een fout opgetreden: '.mysql_error().'<br />';
echo 'Met query: '.$query;
die(); // kan netter
}
?>
Ik heb trouwens het vermoeden dat het databasemodel voor verbetering in aanmerking komt. In de tabel gebruikers heb je nu diverse vaardigheden staan. Iedere vaardigheid heeft zijn eigen kolom. Dat betekent dat je dus niet zo maar een vaardigheid kunt toevoegen. De vaardigheden horen in een aparte tabel te staan, waarbij iedere vaardigheid in een apart record komt te staan. Dus niet in aparte kolom! Met een koppeltabel ga je dan de verbinding leggen met de diverse gebruikers. Lees eens een artikel/tutorial over normalisatie, dan zul je dat zelf ook constateren.
Edit: Mijn stukje code is gebasseerd op dit stuk code:
Code (php)
1
2
3
2
3
<?php
mysql_query("UPDATE gebruikers SET $vaardigheid = $nieuw WHERE loginnaam = '$loginnaam'")or die (mysql_error());
?>
mysql_query("UPDATE gebruikers SET $vaardigheid = $nieuw WHERE loginnaam = '$loginnaam'")or die (mysql_error());
?>
Gewijzigd op 01/01/1970 01:00:00 door Frank -
Quote:
Re: 2 fouten op 23.05.2006 16:03 wijzig bericht quote bericht
(bericht gewijzigd op 23.05.2006 16:03 door Frank)
Hieronder dezelfde functionaliteit, maar dan wat overzichtelijker uitgeschreven:
Selecteer deze code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Ik heb trouwens het vermoeden dat het databasemodel voor verbetering in aanmerking komt. In de tabel gebruikers heb je nu diverse vaardigheden staan. Iedere vaardigheid heeft zijn eigen kolom. Dat betekent dat je dus niet zo maar een vaardigheid kunt toevoegen. De vaardigheden horen in een aparte tabel te staan, waarbij iedere vaardigheid in een apart record komt te staan. Dus niet in aparte kolom! Met een koppeltabel ga je dan de verbinding leggen met de diverse gebruikers. Lees eens een artikel/tutorial over normalisatie, dan zul je dat zelf ook constateren.
(bericht gewijzigd op 23.05.2006 16:03 door Frank)
Hieronder dezelfde functionaliteit, maar dan wat overzichtelijker uitgeschreven:
Selecteer deze code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$query = "
UPDATE
gebruikers
SET
".$vaardigheid." = ".$nieuw."
WHERE
loginnaam = '".$loginnaam."'
";
$result = mysql_query($query);
if (!$result) { // query is mislukt
echo 'Er is een fout opgetreden: '.mysql_error().'<br />';
echo 'Met query: '.$query;
die(); // kan netter
}
?>
$query = "
UPDATE
gebruikers
SET
".$vaardigheid." = ".$nieuw."
WHERE
loginnaam = '".$loginnaam."'
";
$result = mysql_query($query);
if (!$result) { // query is mislukt
echo 'Er is een fout opgetreden: '.mysql_error().'<br />';
echo 'Met query: '.$query;
die(); // kan netter
}
?>
Ik heb trouwens het vermoeden dat het databasemodel voor verbetering in aanmerking komt. In de tabel gebruikers heb je nu diverse vaardigheden staan. Iedere vaardigheid heeft zijn eigen kolom. Dat betekent dat je dus niet zo maar een vaardigheid kunt toevoegen. De vaardigheden horen in een aparte tabel te staan, waarbij iedere vaardigheid in een apart record komt te staan. Dus niet in aparte kolom! Met een koppeltabel ga je dan de verbinding leggen met de diverse gebruikers. Lees eens een artikel/tutorial over normalisatie, dan zul je dat zelf ook constateren.
ik weet niet waarom ik dit zou doen, is daar een speciale reden voor?
ten tweede snap ik geen bal van die tutorial daar ga ik me binnenkort wel eens verder in verdiepen
Quote:
ik weet niet waarom ik dit zou doen, is daar een speciale reden voor?
Daar is zeker een reden voor: Het maakt je script een stuk overzichtelijker, eenvoudiger te debuggen en eenvoudiger te onderhouden.
En normalisatie kun je onmogelijk binnen een kwartiertje leren/snappen. Dat gaat je echt véél meer tijd kosten.
Succes
dan offer ik me weekend daar wel aan op (Y)