2táblából lekérdezés, majd egyik UPDATE-elése
sziasztok,
amiben a segítségeteket kérem:
van 2 táblám: tb1, tb2
db1 tartalmazza a username, pontszam mezőket (is)
db2 tartalmazza a meccs, eredmeny, who mezőket (ebben tárolom a userek által készített tippeket)
Van egy admin felületem ahol a bevitt eseményeknek megadtahatom a kimenetelét. Itt létrehoztam egy lekérdezést melyben ezt a 2 táblát egyesítem és ezen végigmassírozva megkeresem, hogy hol egyezik az általam bevitt (POST-olt) esemény a 'meccs' mező elemeivel, majd ha az 'eredmeny' is megegyezik az általam POST-olt eredménnyel akkor a hozzá tartozó 'who' mezőben tárolt felhasználónévhez megkeresem a db2-ben található 'username'-t és a hozzá tartozó 'pontszam' mező értékét megnövelem (ha meg nem talált akkor csökkentem)
remélem kibogozható a dolog, íme a kód:
$pontoz = mysql_query("SELECT meccs,eredmeny,who,username,pontszam FROM tb1 JOIN users ON tb1.who = tb2.username WHERE meccs = '$_POST[meccs]'");
while($info = mysql_fetch_array( $pontoz ))
{
if ($info['eredmeny'] == '$_POST[tipp]')
{
mysql_query("UPDATE tb2,tb1 SET pontszam = pontszam + 1 WHERE tb2.username = tb1.who") or die(mysql_error());;
}
else
{
mysql_query("UPDATE tb2,tb1 SET pontszam = pontszam - 1 WHERE tb2.username = tb1.who") or die(mysql_error());;
}
}
nem az történik amire számítok: Hogy az adott felhasználóhoz tartozó pontszám nő vagy csökken annak fejében egyezik-e az általa készített meccs-eredmeny a db1-ben.... mi a hiba? köszi előreis
■ amiben a segítségeteket kérem:
van 2 táblám: tb1, tb2
db1 tartalmazza a username, pontszam mezőket (is)
db2 tartalmazza a meccs, eredmeny, who mezőket (ebben tárolom a userek által készített tippeket)
Van egy admin felületem ahol a bevitt eseményeknek megadtahatom a kimenetelét. Itt létrehoztam egy lekérdezést melyben ezt a 2 táblát egyesítem és ezen végigmassírozva megkeresem, hogy hol egyezik az általam bevitt (POST-olt) esemény a 'meccs' mező elemeivel, majd ha az 'eredmeny' is megegyezik az általam POST-olt eredménnyel akkor a hozzá tartozó 'who' mezőben tárolt felhasználónévhez megkeresem a db2-ben található 'username'-t és a hozzá tartozó 'pontszam' mező értékét megnövelem (ha meg nem talált akkor csökkentem)
remélem kibogozható a dolog, íme a kód:
$pontoz = mysql_query("SELECT meccs,eredmeny,who,username,pontszam FROM tb1 JOIN users ON tb1.who = tb2.username WHERE meccs = '$_POST[meccs]'");
while($info = mysql_fetch_array( $pontoz ))
{
if ($info['eredmeny'] == '$_POST[tipp]')
{
mysql_query("UPDATE tb2,tb1 SET pontszam = pontszam + 1 WHERE tb2.username = tb1.who") or die(mysql_error());;
}
else
{
mysql_query("UPDATE tb2,tb1 SET pontszam = pontszam - 1 WHERE tb2.username = tb1.who") or die(mysql_error());;
}
}
nem az történik amire számítok: Hogy az adott felhasználóhoz tartozó pontszám nő vagy csökken annak fejében egyezik-e az általa készített meccs-eredmeny a db1-ben.... mi a hiba? köszi előreis
elírtam a főcímben
$pontoz = mysql_query("SELECT meccs,eredmeny,who,username,pontszam FROM tb1 JOIN tb2 ON tb1.who = tb2.username WHERE meccs = '$_POST[meccs]'");
A kérdés viszont ugyanaz mi a megoldás/hol a hiba?
Parancsolj
De ha összekapcsolsz két (vagy több) táblát, akkor használj egyértelmű minősítéseket pl.
köszi megpróbálom
összefűzés
a felhasználó megtalálva
ígysem ok...
Magyarul ha 4 ember találta el az 'eredmenyt' akkor -4-es lett az értéke mindenkinek a 'pontszam' :|
mintha az if ágba bele se ugrana csak az else be...
Csak most látom
Helyesen:
jó de...
Debugold
Szerintem lehet, hogy ezt az
Mivel update-nél úgyis összekapcsolod a 2 táblát, még a where feltételbe beleteszed a meccs-re szűrést is és egy if-es függvénnyel a feltételnek megfelelően 1-et, vagy -1-et adsz hozzá a pontszámhoz.
átgondoltam ---> új igények ---> átírtam ---> újabb HELP
Még mindig megvan az admin felületem amin beviszem a meccshez tartozó végeredményt, de most felvettem a táblámba olyan mezőket amik a végeredményhez tartozó odds-okat is rögzíti.(értékük: $eredmenyH, $eredmenyD, $eredmenyV)
most 3 query-vel megoldom:
$hazaik = mysql_query("SELECT tippmix.meccs,tippmix.eredmeny,tippmix.who,users.username,users.pontszam FROM tippmix JOIN users ON tippmix.who = users.username WHERE tippmix.meccs = '$_POST[meccs]' AND tippmix.eredmeny = 'H'") or die(mysql_error());
és ugyanez a másik kettő, csak a végén tippmix.eredmeny = 'D', tippmix.eredmeny = 'V'
mindegyik után indítok egy while ciklust:
while($info = mysql_fetch_array( $hazaik ))
{
if ($info['eredmeny'] == $_POST[tippem])
//'eredmeny' amit a user tippelt, 'tippem' amit én adtam meg vegeredmenynek
{
mysql_query("UPDATE tippmix,users SET pontszam = pontszam + $eredmenyH WHERE username = '".$info['who']."'") or die(mysql_error());
}
else
{
mysql_query("UPDATE users SET pontszam = pontszam - $eredmenyh WHERE username = '".$info['who']."' ") or die(mysql_error());
}
}
a ha lefuttatom kiakadt a WHERE username = valaki sorokon:
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 username = 'egyjuzernevemegjelenik'' at line 1
a szintaktikát pedig úgy írtam ahogy ajánlotáttok, mi a hiba? :/
Escape
de...
aha persze
köszi a tippet
Pontos hiba
Lehet a felhasználó nevében van idézőjel, vagy valami még nagyobb turpisság. És sose tudhatod, hogy egy felhasználó mit küld el egy formba, nem kell neki feltétlen azokat a lehetőségeket választania amire te számítasz, mindig kezeld úgy a felhasználótól jövő adatot, hogy biztosan hackelni akar, és akkor nem tévedhetsz. Azaz mindent vizsgálj meg, és mindent escapelj ott, ahol használod az általa beküldött adatot, jöjjön az formból vagy adatbázisból.
Lehet hogy a felhasználó valahol korábban adott meg olyan adatot, pl. felhasználónévnek, amit te valahol máshol használsz fel, de akkor már lehet hogy nem gondolsz rá, hogy újra escapelni kellene.
pontos hiba #2
de nem engedek SPEC karaktereket a nevekben (semmi ,'";<>)
plz help
elírás: