Rinox Skrevet 19. april 2007 Del Skrevet 19. april 2007 Hei! Jeg får en feilmelding når jeg kjører denne spørringen: mysql_query("UPDATE nasking SET chance2 = (" . $chance[2] . " - " . $rand . ") WHERE id = " . $bruker_id) or die(mysql_error()); Feilmeldingen er: 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 ') WHERE id = 1' at line 1 Noen som vet hva feilen kan være og hvordan jeg kan fikse det? Takker for svar Lenke til kommentar
magicgunnar Skrevet 19. april 2007 Del Skrevet 19. april 2007 (endret) Hva er det du prøver å sette inn i chance2? Endret 19. april 2007 av magicgunnar Lenke til kommentar
ve_gard Skrevet 19. april 2007 Del Skrevet 19. april 2007 Hei! Jeg får en feilmelding når jeg kjører denne spørringen: mysql_query("UPDATE nasking SET chance2 = (" . $chance[2] . " - " . $rand . ") WHERE id = " . $bruker_id) or die(mysql_error()); Prøv heller med.. mysql_query("UPDATE nasking SET chance2 = '" . $chance[2] . " - " . $rand . "'" WHERE id = ' . $bruker_id'") or die(mysql_error()); hmm... mvh Vegard Lenke til kommentar
Rinox Skrevet 19. april 2007 Forfatter Del Skrevet 19. april 2007 Hmm.. Det var ikke det Vegard. I chance2 prøver jeg å sette inn et tall. Lenke til kommentar
magicgunnar Skrevet 19. april 2007 Del Skrevet 19. april 2007 (endret) I chance2 prøver jeg å sette inn et tall. 8420957[/snapback] Da må du fjerne noen paranteser og hermetegnene ved siden av minusen i spørringen, for nå setter du inn noe slikt som: ( 8 - 3 ) Kanskje du kan prøve med: mysql_query("UPDATE nasking SET chance2 = " . $chance[2] - $rand . " WHERE id = " . $bruker_id) or die(mysql_error()); Edit: Dette forutsetter at både $chance[2] og $rand er tall. Endret 19. april 2007 av magicgunnar Lenke til kommentar
Rinox Skrevet 19. april 2007 Forfatter Del Skrevet 19. april 2007 Nei, magicgunnar... Da fikk jeg dene meldingen: 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 '0 WHERE id = 1' at line 1 Lenke til kommentar
magicgunnar Skrevet 19. april 2007 Del Skrevet 19. april 2007 Nei, magicgunnar... Da fikk jeg dene meldingen: 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 '0 WHERE id = 1' at line 1 8421541[/snapback] prøv å print ut det du skal sette inn i spørringen din dvs hvis du bruker mitt forslag til spørring: $query = "UPDATE nasking SET chance2 = " . $chance[2] - $rand . " WHERE id = " . $bruker_id; print $query; mysql_query($query); Det vil være litt mer forklarende fordi resultatet avhenger av hva du har i $chance[2] og $rand, hvis de plutselig ikke er tall vil spørringen gå galt.... Post her hva som printes ut når du printer $query. Lenke til kommentar
FraXinuS Skrevet 19. april 2007 Del Skrevet 19. april 2007 Er ikke sikker men det ser ut som om du bruker to tall slik som dette: chance2 = ( 8 - 3 ). Jeg bruker mange ganger å gjøre f.eks chance2 = ( colnavn - 3 ) og det funker, men det er ikke sikkert det funker når du bruker to tall. Men du kan jo gjøre det slik i steden, det blir jo akkurat det samme: mysql_query("UPDATE nasking SET chance2 = " . ( $chance[2] - $rand) . " WHERE id = " . $bruker_id) or die(mysql_error()); Lenke til kommentar
magicgunnar Skrevet 19. april 2007 Del Skrevet 19. april 2007 Jeg bruker mange ganger å gjøre f.eks chance2 = ( colnavn - 3 ) og det funker, men det er ikke sikkert det funker når du bruker to tall. 8421689[/snapback] Jeg må innrømme at jeg ikke har brukt denne syntaksen i sql før var nok litt kjapp da jeg svarte første gangen, det er sikkert dette han prøver å gjøre, og $chance[2] skal sikkert inneholde et kolonnenavn! Rinox: prøv å skriv ut den opprinnelige spørringen din og post den her. Lenke til kommentar
Runar0 Skrevet 19. april 2007 Del Skrevet 19. april 2007 (endret) som sagt tideligere så kan du prøve å skrive ut sql strengen og se korleis den ser ut før du sender den til databasen. Du må og hugse og ha ( og ) rundt ($chance[2] - $rand) slik: PHP <?php mysql_query("UPDATE nasking SET chance2 = " . ($chance[2] - $rand) . " WHERE id = " . $bruker_id) or die(mysql_error()); ?> edit: koden brutt opp av moderator Den ble så lang at den ødela layouten på siden Endret 19. april 2007 av macfjott Lenke til kommentar
Rinox Skrevet 19. april 2007 Forfatter Del Skrevet 19. april 2007 (endret) Okey, nå poster jeg hele scriptet mitt her: Klikk for å se/fjerne innholdet nedenfor <?php ob_start(); include('config.php'); if(!$logged[username]) { echo("Du er ikke innlogget!"); } else{ $result = mysql_query('SELECT id FROM users WHERE username = '.quote_smart($logged['username'])); $resultObj = mysql_fetch_object($result); $bruker_id = $resultObj->id; /* Skjekker om skjema er utført */ $checkaccess = mysql_query("SELECT id FROM nasking WHERE id=$bruker_id"); $checkaccess= mysql_num_rows($checkaccess); $pris = 500; if ($checkaccess == 0) { echo("Du kan ikke naske noe som helst ennå. Først må du kjøpe en maske for $pris mynter.<br><br>"); echo("<form action='?side=nasking&go=nasking&act=kjopMaske' method='post'><input type='submit' value='Kjøp maske'></form>"); } else { if(isset($_POST['submit'])) { $action = (isset($_POST['action']) && $_POST['action'] > 0 && $_POST['action'] <= 4 ) ? intval($_POST['action']) : 0; $resultObj = mysql_fetch_object(mysql_query('SELECT chance1, chance2, chance3, chance4 FROM nasking WHERE id = ' . $bruker_id)); /* Legger handlingene i et array */ $chance = array(1 => $resultObj->chance1, 2 => $resultObj->chance2, 3 => $resultObj->chance3, 4 => $resultObj->chance4 ); $tall = rand(1, 3); if(rand(1, 100) > $chance[$action]) { $output = "Handling misslyktes!"; if ($chance[$action] >= 30) { mysql_query("UPDATE nasking SET chance" . $action . " = (" . $chance[$action] . " - " . $rand . ") WHERE id = " . $bruker_id) or die(mysql_error()); } } else { switch ($action) { case 1: $output = "Handling 1"; if ($chance[1] <= 80) { mysql_query("UPDATE nasking SET chance1 = (chance1 - " . $rand . ") WHERE id = " . $bruker_id) or die(mysql_error()); } break; case 2: $output = "Handling 2"; if ($chance[2] <= 80) { mysql_query("UPDATE nasking SET chance2 = (chance2 - " . $rand . ") WHERE id = " . $bruker_id) or die(mysql_error()); } break; case 3: $output = "Handling 3"; if ($chance[3] <= 80) { mysql_query("UPDATE nasking SET chance3 = (chance13 - " . $rand . ") WHERE id = " . $bruker_id) or die(mysql_error()); } break; case 4: $output = "Handling 4"; if ($chance[4] <= 80) { mysql_query("UPDATE nasking SET chance4 = (chance4 - " . $rand . ") WHERE id = " . $bruker_id) or die(mysql_error()); } break; } } echo $output; } else { echo("<form action='' method='post'> <input type='radio' name='action' value='1'>Nask fra forbipasserende<br> <input type='radio' name='action' value='2'>Stjel fra salgsbod<br> <input type='radio' name='action' value='3'>Bryt deg inn i et hus<br> <input type='radio' name='action' value='4'>Overfall en adelsmann<br><br> <input type='submit' name='submit' value='Stjel'><br> </form>"); } } switch ($_GET[act]) { case 'kjopMaske': $result = mysql_query('SELECT lommebok FROM users WHERE username = '.quote_smart($logged['username'])); $resultObj = mysql_fetch_object($result); $lommebok = $resultObj->lommebok; if($lommebok < $pris) { echo("<b>Du har ikke nok penger i lommeboken.</b>"); } else { mysql_query("UPDATE users SET lommebok = (lommebok - $pris) WHERE username = '$logged[username]'"); mysql_query("INSERT INTO nasking (id) VALUES ($bruker_id)") or die(mysql_error()); echo("<b>Du har betalt $pris mynter for en maske.</b>"); } break; } } ?> edit: lang kodesnutt lagt i skjul Endret 19. april 2007 av macfjott Lenke til kommentar
Rinox Skrevet 19. april 2007 Forfatter Del Skrevet 19. april 2007 Noen flere forslag? Finner rett og slett ikke ut av dette, jeg... Lenke til kommentar
Lurifaksen Skrevet 19. april 2007 Del Skrevet 19. april 2007 Hva med å gjøre som flere har foreslått (innlegg nr 7)? Å skrive ut spørringen er alfa og omega. Det må du alltid gjøre dersom du bruker variabler i spørringen og det feiler av ukjent grunn. Lenke til kommentar
Rinox Skrevet 19. april 2007 Forfatter Del Skrevet 19. april 2007 Printet den ut nå. Dette fikk jeg: UPDATE nasking SET chance2 = (chance2 - ) WHERE id = 1 Lenke til kommentar
Lurifaksen Skrevet 19. april 2007 Del Skrevet 19. april 2007 Ja, der ser du at ingenting er feil i spørringen. Begge variablene dine er det derimot noe feil med. $chance[2] er tydeligvis en streng, mens $rand er ingenting. Lenke til kommentar
magicgunnar Skrevet 20. april 2007 Del Skrevet 20. april 2007 Printet den ut nå. Dette fikk jeg: UPDATE nasking SET chance2 = (chance2 - ) WHERE id = 1 8425873[/snapback] Er ikke helt stø på akkurat den notasjonen du bruker, men hvis jeg har forstått FraXinuS riktig, så er den eneste feilen med spørringen din at det ikke er noen variabel i $rand, den er rett og slett ikke initialisert. Du kan jo selvfølgelig initialisere den ved å skrive dette før $rand blir brukt: $rand = rand(1, 100); Da blir den et tilfeldig tall mellom 1 og 100, men om det er det du skal ha er en helt annen sak! Så da er spørsmålet: Hva prøver du å gjøre med den spørringen? Lenke til kommentar
Rinox Skrevet 20. april 2007 Forfatter Del Skrevet 20. april 2007 Med spørringen prøver jeg å legge til et tilfeldig tall mellom 1 og 3 der hvor 'id' er den samme som den innloggede brukerens... rand(1, 100) er til å regne en slags prosent. Lenke til kommentar
magicgunnar Skrevet 20. april 2007 Del Skrevet 20. april 2007 Med spørringen prøver jeg å legge til et tilfeldig tall mellom 1 og 3 der hvor 'id' er den samme som den innloggede brukerens... rand(1, 100) er til å regne en slags prosent. 8427891[/snapback] Så hvis du putter inn: $rand = rand(1, 3); F.eks helt øverst i koden, iallfall før spørringen, så kan du kanskje få riktig resultat? Gitt at syntaksen funker. Lenke til kommentar
FraXinuS Skrevet 20. april 2007 Del Skrevet 20. april 2007 Bytt ut $rand med $tall. Lenke til kommentar
Rinox Skrevet 20. april 2007 Forfatter Del Skrevet 20. april 2007 Nå fikk jeg det til! $tall skulle egentlig hete $rand Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå