Permalänk
Medlem

Skriver inte till databasen.

Hejsan!

Jag håller på med ett script på en betsida där man skickar in resultat för matcher. Scriptet ska räkna ut vinst, lägga in "pengarna" på spelkontot och dessutom sätta en siffra som symboliserar att spelet blivit avslutat.

Felet ligger någonstans i min loop som ska göra samma sak för alla användare, men det skriver ingenting till databasen. Någon som ser något fel på loopen. Jag har kollat alla variabler som inte defineras i den här kodsnutten och de fungerar som de ska. Allt utanför loopen skriver till databasen som det ska.

$getwinners = mysql_query("SELECT * FROM games WHERE match='$matchid'");
while($winnerrow = mysql_fetch_assoc($getwinners))
{

$betid = $winnerrow['id'];
$bet = $winnerrow['$result'];
$user = $winnerrow['user'];

$share = $bet/$winners;

$win = $share*$pot;

$querycreds = mysql_query("SELECT * FROM gameusers WHERE username='$user'");
$credsrow = mysql_fetch_assoc($querycreds);

$creds = $credsrow['creds'];

$newcreds = $creds+$win;

mysql_query("UPDATE gameusers SET creds='$newcreds' WHERE username='$user'");

mysql_query("UPDATE games SET avslutad='1' WHERE id='$betid'");

}

Här finns hela övriga koden: http://www.pastry.se/119015/

Permalänk
Medlem

Kolumnen "avslutad" är väl förhoppningsvis inte av någon sträng-typ? För nu har du apostrofer runt värdet du sätter, vilket gör det till en sträng.

Visa signatur

Bra, snabbt, billigt; välj två.

Ljud
PC → ODAC/O2 → Sennheiser HD650/Ultrasone PRO 900/...
PC → S.M.S.L SA300 → Bowers & Wilkins 607

Permalänk
Medlem

nej, sant. Men spelar det någon roll om man har värdet inom ' '?

Permalänk
Medlem

Tror mig ha hittat ett antal fel:
1. $bet = $winnerrow['$result']; --> $bet = $winnerrow['result'];
2. "SELECT * FROM gameusers WHERE username='$user'" --> "SELECT * FROM gameusers WHERE username='" . $user . "'"
3. "UPDATE gameusers SET creds='$newcreds' WHERE username='$user'" --> "UPDATE gameusers SET creds='" . $newcreds . "' WHERE username='" . $user . "'"
4. "UPDATE games SET avslutad='1' WHERE id='$betid'" --> "UPDATE games SET avslutad='1' WHERE id='" . $betid . "'"

Lycka till.

Permalänk
Medlem

Tack för hjälpen, men det löste sig ännu inte.

Garret, de fel som hittade rättades förutom fel 1. Vet inte om man får göra så, men $result är den kolmumn som alla "bets" på rätt resultat kommer från. Dessa kolumner heter ins1, ins2 och ins3. Jag har alltså ett form (name=ins) där jag skriver i vilket resultat som är rätt i form av 1, 2 eller 3.

Detta plockas in som:

$res = $_POST['ins'];
$result = "ins".$res;

Detta för att variabeln ska ge mig rätt kolumn. Är det helt galet att göra så?

Permalänk
Medlem

Då ska det stå:

$winnerrow[$result]

I PHP anger apostrofer (') strängar som inte "kontrolleras" efter variabler, citattecken (") däremot kontrolleras.
Dvs. om du vill ha en sträng som innehåller variabler, t.ex. "Hej $name" måste du använda citattecken, använder du däremot apostrofer ('Hej $name') kommer strängen att skrivas ut precis så: Hej $name.

Jag föredrar dock att skriva "'Hej ' . $name" för att bryta upp och markera var jag har variabler, men allt är en smaksak och du ska välja det du känner dig mest bekväm med.

Du kan läsa mer på php.net.

Permalänk
Medlem

Tack, det är ändrat nu! Men inte det som gör att loopen inte körs.

Har gjort en rejäl felsökning nu genom hela koden och ett fel är i den här kodsnutten precis innan loopen.

$getwinners = mysql_query("SELECT * FROM games WHERE match=$matchid") or die(mysql_error());

Det gav:
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 '=10' at line 1

Permalänk
Medlem

Du får inte använda reserverade ord utan att escapa de, i ditt fall gäller detta order "match".
Ta en titt på följande sida för att se vilka ord som är reserverade och som måste escapas om de ska användas.

Ändra din SQL-fråga till:

"SELECT * FROM games WHERE `match` = $matchid"

Permalänk
Medlem

TACK SÅ MYCKET!!!!

Nu blev jag riktigt glad, men samtidigt förbannad på mig själv att jag gör sånna dumma fel!

Permalänk
Medlem

Det är misstagen som gör att man lär sig, kämpa på bara.
Lycka till!