fout in script upgrade.php

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Thomas

thomas

29/03/2007 16:49:00
Quote Anchor link
Hallo ik heb een klein foutje erin zitten.
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)
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
<?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&nbsp;<input type=radio value="1" checked name="b1"></td></tr><tr><td class="mainTxt">Voer de id van de auto in&nbsp;<input type="text" size="12" name="id"></td></tr><tr><td class="mainTxt"><input type="submit" name="upgrade" value="Opvoeren"></td></tr>
</form>
 
PHP hulp

PHP hulp

22/12/2024 09:41:40
 
Frank -

Frank -

29/03/2007 16:55:00
Quote Anchor link
Je hebt een bug in je script en de SQL wordt gewoon keihard verkracht... Tja, hoeveel problemen wil je hebben?

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
 
Thijs X

Thijs X

29/03/2007 16:58:00
Quote Anchor link
Idd frank,

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.
 
Thomas

thomas

29/03/2007 17:10:00
Quote Anchor link
sorry daarvoor.
maare hoe haal ik de gegevns eruit dan ik dacht altijd met een query kan ik fout hebben hoor.
het vergelijken kan ik wel
 
Frank -

Frank -

29/03/2007 17:22:00
Quote Anchor link
Ok, even een algemeen voorbeeldje hoe eenvoudig een SELECT-query op de database los laat:
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
<?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();
}

?>

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!
 



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.