fout in script upgrade.php
als ik op opvoeren druk dan krijg ik meteen je hbet al enginelvl1
terwijl er in mijn db gewoon nog steeds nul staat hoe kan dit.
Hier is mijn 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
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
<?php
include_once("_include-config.php");
if(! check_login()) {
header('Location: login.php');
exit;
}
if(isset($_POST['upgrade'])){
$id = $_POST['id'];
$b1 = $_POST['b1'];
$auto = mysql_query("SELECT `enginelvl1` FROM `[auto]` WHERE `id`='$id'");
if($auto->enginelvl1 == 1){
if($b1 == 1){
mysql_query("UPDATE `[auto]` SET `enginelvl1`='1' WHERE `owner`='{$data->login}' AND `id`='$id'");
mysql_query("UPDATE `[auto]` SET `snelheid`=`snelheid`+'10' WHERE `owner`='{$data->login}' AND `id`='$id'");
print "<tr><td class=mainTxt>Je auto is getuned</td></tr>";
}
}elseif($b1 == 1){
print "<tr><td class=maniTxt>Je hebt al engine lvl 1</td></tr>";
}
}
?>
<html>
<Head>
<link rel="stylesheet" type="text/css" href="<?php echo ($_COOKIE['v'] == 2) ? "css-v2.css" : "css-v1.css"; ?>">
</head>
<table width=100%><form method="POST">
<tr><td class="mainTxt">Motor lvl 1 <input type=radio value="1" checked name="b1"></td></tr><tr><td class="mainTxt">Voer de id van de auto in <input type="text" size="12" name="id"></td></tr><tr><td class="mainTxt"><input type="submit" name="upgrade" value="Opvoeren"></td></tr>
</form>
include_once("_include-config.php");
if(! check_login()) {
header('Location: login.php');
exit;
}
if(isset($_POST['upgrade'])){
$id = $_POST['id'];
$b1 = $_POST['b1'];
$auto = mysql_query("SELECT `enginelvl1` FROM `[auto]` WHERE `id`='$id'");
if($auto->enginelvl1 == 1){
if($b1 == 1){
mysql_query("UPDATE `[auto]` SET `enginelvl1`='1' WHERE `owner`='{$data->login}' AND `id`='$id'");
mysql_query("UPDATE `[auto]` SET `snelheid`=`snelheid`+'10' WHERE `owner`='{$data->login}' AND `id`='$id'");
print "<tr><td class=mainTxt>Je auto is getuned</td></tr>";
}
}elseif($b1 == 1){
print "<tr><td class=maniTxt>Je hebt al engine lvl 1</td></tr>";
}
}
?>
<html>
<Head>
<link rel="stylesheet" type="text/css" href="<?php echo ($_COOKIE['v'] == 2) ? "css-v2.css" : "css-v1.css"; ?>">
</head>
<table width=100%><form method="POST">
<tr><td class="mainTxt">Motor lvl 1 <input type=radio value="1" checked name="b1"></td></tr><tr><td class="mainTxt">Voer de id van de auto in <input type="text" size="12" name="id"></td></tr><tr><td class="mainTxt"><input type="submit" name="upgrade" value="Opvoeren"></td></tr>
</form>
UPDATE `[auto]` SET `enginelvl1`='1' WHERE `owner`='{$data->login}' AND `id`='$id'"
Wat doen die backtics `, blokhaken [] en accolades {} in deze query? Leer dat toch eens af, dit heeft echt niets met SQL te maken.
Verder controleer je niet of de query wel is gelukt en of de query ook records heeft bijgewerkt.
Veel succes met deze ellende
Je vergelijkt $b1 of die 1 is en dan zeg je of hij al engine lvl 1 heeft? Je geeft daarvoor aan dat $b1 een $_POST is...
Je haalt nergens de gegevens uit de database? Zie alleen een query maar daar doe je verder niks mee.
- Haal je gegevens eruit
- Vergelijk huidige engine lvl met waarin hij het wil upgraden, zijn ze hetzelfde -> geef error dat ze hetzeflde zijn.
maare hoe haal ik de gegevns eruit dan ik dacht altijd met een query kan ik fout hebben hoor.
het vergelijken kan ik wel
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$query = "
SELECT
enginelvl1
FROM
auto
WHERE id = '".$id."'
"
$result = mysql_query($query);
if($result){ // query is gelukt
if(mysql_num_rows() > 0){ // er zijn resultaten
while($row = mysql_fetch_assoc($result)){
echo $row['eningelvl1'];
}
}
else {
echo 'Geen resultaten gevonden.';
}
}
else { // query mislukt
echo 'Query mislukt vanwege de volgende fout: '.mysql_error();
}
?>
$query = "
SELECT
enginelvl1
FROM
auto
WHERE id = '".$id."'
"
$result = mysql_query($query);
if($result){ // query is gelukt
if(mysql_num_rows() > 0){ // er zijn resultaten
while($row = mysql_fetch_assoc($result)){
echo $row['eningelvl1'];
}
}
else {
echo 'Geen resultaten gevonden.';
}
}
else { // query mislukt
echo 'Query mislukt vanwege de volgende fout: '.mysql_error();
}
?>
Dit principe kun je ook op andere en/of betere manier doen, maar alles wordt gecontroleerd en er is niet 1 aanname. Het doen van aannames gaat namelijk altijd fout.
Let op: Geen backtics, blokhaken en accolades in de query!