Opdatering af én MySQL tabel og tilføjelse til en anden

Tags:    php

Er ved at lave et simpelt ligasystem men er stødt ind i problemer, da det lidt overgår min kunnen.

Det drejer sig om, at når jeg tilføjer et resultat til en kamp, skal resultatet skrives ind i en tabel, samtidig med at der bliver tildelt 3 point til det hold som er vinderen. Dette forgår i en anden tabel.
Der tildeles 3 point til det hold der har opnået en score på 3 eller derover. (5 runder i alt)

Først min resultat formular:

Fold kodeboks ind/udKode 



Og add_result.php ser således ud. Der mangler en masse, har umiddelbart forsøgt at få det til at virke hvis team_1 vinder 3 runder eller derover

Fold kodeboks ind/udKode 



Det skal måske lige siges, at det jeg ikke kan få til at virke at delen hvor der skal lægges 3 point til vinderholdet. Delen med at opdatere kampresultatet virker tilsyneladen fint.



Indlæg senest redigeret d. 23.08.2010 09:27 af Bruger #16078
7 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Fold kodeboks ind/udKode 


Jeg har lige rettet de fejl jeg kunne finde, så det burde virke, -men- der er stadig mulighed for at gøre grimme ting, så det skal ikke kunne bruges af andre end dig. Desuden er der flere ting du muligvis vil få problemer med, af de ting du selv har struktureret det med, som kan give problemer ved opdatering af server-indstillinger.

Det jeg umilbart har rettet, udover lige nogle småting for at jeg selv kan læse det bedre, er at du brugte PHP-variabler hvor der bare skulle angives felter. (points, team_1, osv.)



Indlæg senest redigeret d. 24.08.2010 10:12 af Bruger #15624
Først vil jeg lige påpege, at der er en del steder hvor der ikke tjekkes for om der er farligt indhold med, til MySQL-forspørelserne.

Fold kodeboks ind/udKode 


Jeg kan ikke finde en $points-variabel, så jeg går ud fra, det måske skal være SET points = points + 3 i stedet. Så vit jeg kan se, kan man heller ikke stille det op som du gør, ved at sige SET points + 3.

Derudover kan jeg i øvrigt ikke se pointen i at få den til at køre en forspørsel, længere nede, for at give +0 points, altså ingen ændring. :S



Indlæg senest redigeret d. 23.08.2010 15:23 af Bruger #15624
Hvordan skal man så evt. sætte det op?
Der skal jo i teorien bare lægges 3 til det tal der i forvejen er i point kolonnen i MSQL.

Men det skal jo være ud for det rigtige hold, det er lidt der min hovedpine er, da jeg ikke synes jeg får holdet med over.

Ligatabel ses her:
http://www.websides.dk/luffe/liga/

Og her tilføjer jeg resultater:
http://www.websides.dk/luffe/liga/admin/list_add_result.php


Tabellen for når jeg tilføjer resultater og opretter kampe:

Fold kodeboks ind/udKode 


Tabellen for stillingstabellen hvor der skal smides data i samtidig med et resultat bliver tilføjet ovenstående:

Fold kodeboks ind/udKode 




Hmm... Det virker stadig ikke, får ingen fejl, og resultatet opdaterer fint, men der er ingen ændringer i stillingstabellen.
Det betyder der ikke bliver lagt 3 point til nogen steder.

Det virker som om at $team_name er tom for data?!?

Men hvad mener du med grimme ting? Er der umiddelbare huller som kan misbruges eller hvordan?

Ligeledes, hvad tænker du på muligvis kan give problemer ved serveropdateringer?

Behøver ikke nogen længere udredning, bare kort fortalt :)



Indlæg senest redigeret d. 24.08.2010 12:25 af Bruger #16078
Ok, har fundet ud af hvorfor det ikke virker.

Skal tilbage til det link som genererer formen for tilføjelse af resultat.
Her kan jeg se at de 2 hold bliver genereret ud fra et ID, det vil sige at jeg hverken har team_1 eller team_2 som individuelle variabler.

<a href='javascript:popUp(\"form_add_result.php?id=$row_list[id]\")'><b>Redigér</b></a>

Så når min fornemmelse har været at $team_name var tom, havde jeg ret.

Må have skrevet det om på en måde hvor jeg både for team_1 og team_2 med over som individuelle variabler.

Vender tilbage med status...



Indlæg senest redigeret d. 24.08.2010 14:01 af Bruger #16078
Ting der godt kan ende med ikke at virke:
1) Du skriver <? i stedet for <?php, hvilket ikke alle servere tillader
2) Du bruger REGISTER_GLOBALS, altså at du siger f.eks $team_1 i stedet for $_POST['team_1']. Udover at det i sig selv kan betyde sikkerhedsproblemer, hvis en hacker forfalsker en variabel til en inkluderet fil, kan servere godt have det slået fra per standart, og nogen gange kan man ikke slå det til igen, så vit jeg husker.

Sikkerhedshuller: Du tjekker ikke for om der bliver sat SQL ind i forspørgelserne. Selvom jeg ikke er helt sikker på hvordan, kan man vist godt tilføje ting som at slette/ændre ting i databasen eller hente fra andre dele af den.

Det var lige hvad jeg kunne komme i tanke om.



Jeg har nu fået et stykke kode der gør det jeg har efterspurgt, så det er på sin vis godt nok.
Problemet er bare, at det er et løsningsforslag jeg har fået, og det er lige en tand for teknisk til min kunnen.

Ville gerne hvis det jeg har arbejdet med kunne komme til at fungere, men er det nogen der kan hjælpe med det ud fra det nye jeg har fået?

Oprindelig kode (virker ikke):
Fold kodeboks ind/udKode 


Ny kode (virker):
Fold kodeboks ind/udKode 




t