2 fouten

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Thomas

thomas

23/05/2006 15:15:00
Quote Anchor link
ik heb een trainingsscriptje gemaakt, om zoals de naam al zegt een bepaalde vaardigheid beter te maken.
dit is het script:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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'");


}

}


?>


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.
 
PHP hulp

PHP hulp

27/11/2024 11:51:27
 
Gerben G

Gerben G

23/05/2006 15:23:00
Quote Anchor link
or die (mysql_error())

als je dat toevoegt na je query kun je zien of er toch fouten zitten in je query
 
Thomas

thomas

23/05/2006 15:26:00
Quote Anchor link
1- waar zet ik dat precies?

2- als er een fout in me query zit, oke, maar hoe kan ik die andere fout eruit krijgen?
 
Gerben G

Gerben G

23/05/2006 15:28:00
Quote Anchor link
je zet die or die op regel 65 na je query voor de ;

dus na het )
 
Robert Deiman

Robert Deiman

23/05/2006 15:30:00
Quote Anchor link
Regel 11:

$database_resultaat = mysql_query($database_query) or die (mysql_error());



mysql_query("UPDATE gebruikers SET '$vaardigheid' = '$nieuw' WHERE loginnaam = '$loginnaam'") or die (mysql_error());
 
Thomas

thomas

23/05/2006 15:34:00
Quote Anchor link
je had gelijk, ik krijg nu deze fout

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
 
Gerben G

Gerben G

23/05/2006 15:35:00
Quote Anchor link
dus toch een fout in je query :P
 
Thomas

thomas

23/05/2006 15:37:00
Quote Anchor link
ik heb het nu goed, ik heb in de query wat gerommeld met de ' ' en nu doet ie het

bedankt _o_
 
Gerben G

Gerben G

23/05/2006 15:38:00
Quote Anchor link
graag gedaan
 
Robert Deiman

Robert Deiman

23/05/2006 15:39:00
Quote Anchor link
Probeer dit eens:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
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());
 
Thomas

thomas

23/05/2006 15:48:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
mysql_query("UPDATE gebruikers SET $vaardigheid = $nieuw WHERE loginnaam = '$loginnaam'")or die (mysql_error());
?>

dit heb ik nu het werkt prima (Y)
 
Frank -

Frank -

23/05/2006 16:03:00
Quote Anchor link
Hieronder dezelfde functionaliteit, maar dan wat overzichtelijker uitgeschreven:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
}

?>


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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
mysql_query("UPDATE gebruikers SET $vaardigheid = $nieuw WHERE loginnaam = '$loginnaam'")or die (mysql_error());
?>
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 
Thomas

thomas

23/05/2006 16:15:00
Quote Anchor link
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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
}

?>



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
 
Frank -

Frank -

23/05/2006 16:26:00
Quote Anchor link
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
 
Thomas

thomas

23/05/2006 17:10:00
Quote Anchor link
dan offer ik me weekend daar wel aan op (Y)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.