Autor | Zpráva | ||
---|---|---|---|
dawe Profil * |
#1 · Zasláno: 23. 10. 2010, 18:06:56
Zdravim,
mám jeden problém. Mám tabulku kde mám několik řádku o několika sloupcích a chtěl bych když kliknu na jedno tlačítko aby se mi to v tabulce vše aktualizovalo, ale nefunguje mi to. Zde zadávám hodnoty v jednotlivých řádích if ($_POST["vyber"]){ $pomocna=$_POST["tym"]; $result = mysql_query("select * from tymy where id='$pomocna'"); $z=mysql_fetch_array ($result); echo"<form action='?page=stat' method='post'><br />"; echo"<table><tr><td colspan='10'> Uprava statistiky pro tým: <strong>" . $z["jmeno"] . "</strong></td></tr>"; echo"<tr><td>Jméno</td> <td>G</td> <td>A</td> <td>VG</td> <td>Odehrané</td> <td>OG</td> <td>Odchytané</td> <td>CK</td> <td>ZK</td> </tr>"; $result = mysql_query("select * from hraci where tym='$pomocna'"); $pocet = mysql_NumRows($result); for ($i=1;$i<=$pocet;$i++) { $z=mysql_fetch_array ($result); $id=$z["id"]; echo"<tr> <input type='hidden' name='pomocna' value=" .$pomocna." /> <input type='hidden' name='kdo[" . $i . "]' value=" .$id. " /> <td>" . $z["jmeno"] . "</td> <td><input type='text' name='g[" . $i . "]' size='4' /></td> <td><input type='text' name='a[" . $i . "]' size='4' /></td> <td><input type='text' name='vg[" . $i . "]' size='4' /></td> <td><input type='text' name='odehrane[" . $i . "]' size='4' /></td> <td><input type='text' name='og[" . $i . "]' size='4' /></td> <td><input type='text' name='odchytane[" . $i . "]' size='4' /></td> <td><input type='text' name='ck[" . $i . "]' size='4' /></td> <td><input type='text' name='zk[" . $i . "]' size='4' /></td> </tr>"; } echo"<tr><td colspan='10'><input type='submit' name='uloz' value='Ulož statistiky' /></td></tr>"; echo"</table></form>"; } A tady sem chtěl vytáhnout ty staré hodnoty a přičíst knim ty nové ale nefunguje to. if ($_POST["uloz"]){ $pomocna=$_POST["pomocna"]; $result = mysql_query("select * from tymy where id='$pomocna'"); $z=mysql_fetch_array ($result); echo"<table><tr><td colspan='10'> Statistiky týmu <strong>" . $z["jmeno"] . "</strong></td></tr>"; echo"<tr><td>Jméno</td> <td>G</td> <td>A</td> <td>VG</td> <td>Odehrané</td> <td>OG</td> <td>Odchytané</td> <td>CK</td> <td>ZK</td> </tr>"; $result = mysql_query("select * from hraci where tym='$pomocna'"); $pocet = mysql_NumRows($result); for ($i=1;$i<=$pocet;$i++) { $z=mysql_fetch_array ($result); $g=$z["g"] + $g[$i]; $a=$z["a"] + $a[$i]; $b=$z["b"] + $g[$i] + $g[$b]; $vg=$z["vg"] + $vg[$i]; $odehrane=$z["odehrane"] + $odehrane[$i]; $og=$z["z"] + $og[$i]; $odchytane=$z["odchytane"] + $odchytane[$i]; $ck=$z["ck"] + $ck[$i]; $zk=$z["zk"] + $zk[$i]; mysql_query("UPDATE hraci SET g = '$gg', a = '$a', b = '$b', vg = '$vg', odehrane = '$odehrane', og = '$og', odchytane = '$odchytane', ck = '$ck', zk = '$zk', WHERE id = '$kdo[$i]' "); } } |
||
panther Profil |
#2 · Zasláno: 23. 10. 2010, 18:11:58
dawe:
kde definuješ funkci mysql_numrows() , kterou používáš na ř. 20 a 19 v obou kódech? Zapni si vypisování chybových hlášek, hlášení o nedefinované funkci bys nepřehlédl.
|
||
dawe Profil * |
#3 · Zasláno: 23. 10. 2010, 18:23:57
panther:
Ted sem trochu zmatenej..myslel sem že pomocí mysql_numrows() spočítám počet řádku který sem vytáhnul pomocí dotazu a pak to mužu použít do cyklu do kolika to má proběhnout |
||
panther Profil |
#4 · Zasláno: 23. 10. 2010, 18:32:49
dawe:
zapni si vypisování chybových hlášek error_reporting(E_ALL) .
Ta funkce, kterou hledáš, se jmenuje mysql_num_rows(), na prcházení cyklu je v tomto případě lepší while (), než for. |
||
dawe Profil * |
#5 · Zasláno: 23. 10. 2010, 18:40:45
panther:
A tim muže být to že by se to nepřičítalo?mě spíš jde o to že když kliknu na tlačítko tak se to chová jako by tam hodnoty nebyly a vubec se nepředají do zpracování |
||
AM_ Profil |
#6 · Zasláno: 23. 10. 2010, 18:49:26
dawe:
„A tim muže být to že by se to nepřičítalo?“ tak to zkus a pokud se to tím spraví, tak ano bylo to tím. |
||
dawe Profil * |
#7 · Zasláno: 24. 10. 2010, 21:06:27
tak to tím nebylo mám to ted takto:
if ($_POST["vyber"]){ $pomocna=$_POST["tym"]; $result = mysql_query("select * from tymy where id='$pomocna'"); $z=mysql_fetch_array ($result); echo"<form action='?page=stat' method='post'><br />"; echo"<table><tr><td colspan='10'> Uprava statistiky pro tým: <strong>" . $z["jmeno"] . "</strong></td></tr>"; echo"<tr><td>Jméno</td> <td>G</td> <td>A</td> <td>VG</td> <td>Odehrané</td> <td>OG</td> <td>Odchytané</td> <td>CK</td> <td>ZK</td> </tr>"; $result = mysql_query("select * from hraci where tym='$pomocna'"); while($z = MySQL_Fetch_Array($result)) { $id=$z["id"]; echo"<tr> <input type='hidden' name='pomocna' value=" .$pomocna." /> <input type='hidden' name='kdo[" . $i . "]' value=" .$id. " /> <td>" . $z["jmeno"] . "</td> <td><input type='text' name='g[" . $i . "]' size='4' /></td> <td><input type='text' name='a[" . $i . "]' size='4' /></td> <td><input type='text' name='vg[" . $i . "]' size='4' /></td> <td><input type='text' name='odehrane[" . $i . "]' size='4' /></td> <td><input type='text' name='og[" . $i . "]' size='4' /></td> <td><input type='text' name='odchytane[" . $i . "]' size='4' /></td> <td><input type='text' name='ck[" . $i . "]' size='4' /></td> <td><input type='text' name='zk[" . $i . "]' size='4' /></td> </tr>"; } echo"<tr><td colspan='10'><input type='submit' name='uloz' value='Ulož statistiky' /></td></tr>"; echo"</table></form>"; } if ($_POST["uloz"]){ $pomocna=$_POST["pomocna"]; $result = mysql_query("select * from hraci where tym='$pomocna'"); while($z = MySQL_Fetch_Array($result)) { $z=mysql_fetch_array ($result); $g=$z["g"] + $g[$i]; $a=$z["a"] + $a[$i]; $b=$z["b"] + $g[$i] + $a[$i]; $vg=$z["vg"] + $vg[$i]; $odehrane=$z["odehrane"] + $odehrane[$i]; $og=$z["z"] + $og[$i]; $odchytane=$z["odchytane"] + $odchytane[$i]; $ck=$z["ck"] + $ck[$i]; $zk=$z["zk"] + $zk[$i]; echo $g[" . $i . "]; mysql_query("UPDATE hraci SET g = '$g', a = '$a', b = '$b', vg = '$vg', odehrane = '$odehrane', og = '$og', odchytane = '$odchytane', ck = '$ck', zk = '$zk', WHERE id = '$kdo[$i]' "); } $result = mysql_query("select * from tymy where id='$pomocna'"); $z=mysql_fetch_array ($result); echo"<table><tr><td colspan='11'> Statistiky týmu <strong>" . $z["jmeno"] . "</strong></td></tr>"; echo"<tr><td>Jméno</td> <td>G</td> <td>A</td> <td>B</td> <td>VG</td> <td>Odehrané</td> <td>OG</td> <td>Odchytané</td> <td>CK</td> <td>ZK</td> </tr>"; $result = mysql_query("select * from hraci where tym='$pomocna'"); while($z = MySQL_Fetch_Array($result)) { echo"<tr><td>" . $z["jmeno"] . "</td> <td>" . $z["g"] . "</td> <td>" . $z["a"] . "</td> <td>" . $z["b"] . "</td> <td>" . $z["vg"] . "</td> <td>" . $z["odehrane"] . "</td> <td>" . $z["og"] . "</td> <td>" . $z["odchytane"] . "</td> <td>" . $z["ck"] . "</td> <td>" . $z["zk"] . "</td> </tr>"; } echo"</table>"; } |
||
AM_ Profil |
#8 · Zasláno: 24. 10. 2010, 21:23:01
podíval jsem se na to pořádněji:
- máš špatně navrženou databázi - vlastnosti, které náleží celému týmu (odehrané zápasy, body...) by měly být v tabulce týmů, nikoli hráčů - co znamená pořád nic? mě by se víc líbilo napsat "dojde mi to na ten a ten řádek, tam se spustí update, do kterého se správně dosadí hodnoty (zkusil jsem si dotaz po dosazení proměnných vyechovat, spustit v phpmyadminovi jestli nehází chybu atd..), ale tam se nic nestane"... nebo něco podobného, hledat za tebe chybu v kódu nebudeme, až budeš vědět, kde je chyba, a nebudeš si s ní vědět rady, poradíme ti, jak ji opravit. - dělat to takhle je zvrhlost, mnohem jednodušší je: "UPDATE hraci SET g=g+".intval($pridej_g).", a=a+".intval($pridej_a).", ... WHERE tym=$tym" |
||
dawe Profil * |
#9 · Zasláno: 24. 10. 2010, 21:31:07
AM:
no já mám tabulku týmy kde je seznam všech týmů a pak tabulku hráči(zde vedu ty statistiky) kteří jsou přes cizí klíč spojeny..všechno zkrachuje až při zpracování formuláře resp poslané hodnoty jsou prázdné..tady je to i špatně jelikož sem odstranil for ale zapomněl..zkusil jsem to přesměrovat jinam po kliknutí na tlačítko a jen si ty hodnoty vypsat ale chová se to jako když tam nic neni..ještě mě něco napadá tak to zkusim |
||
AM_ Profil |
#10 · Zasláno: 24. 10. 2010, 21:34:14
prázdné znamená, že když na začátek skriptu dáš
var_dump($_POST); |
||
dawe Profil * |
#11 · Zasláno: 24. 10. 2010, 21:53:41
po kliknutí na uložit to prázdný neni..ten výpis vidím porpvý..zkusim sem třeba hodit zjednodušenej kousek kodu jestli třeba nedělám něco špatně (což dělám) ale nevim kde :/
|
||
AM_ Profil |
#12 · Zasláno: 24. 10. 2010, 22:43:07
dawe:
„sem třeba hodit“ budeš schopný si i poradit sám. zjisti, jestli kód dojde vůbec k updatu, zda se update provede, jestli nevrátí chybu (mysql_error()) atd... |
||
dawe Profil * |
#13 · Zasláno: 25. 10. 2010, 00:14:48
ten update pak udělam jak jsi radil, bylo to hodně pokusu a výpisů. Akorát že se mi v databázi aktualizuje pouze první řádek, s těmi dalšími to už nepracuje. Nevéte proč?
if ($_POST["uloz"]){ $pomocna=$_POST["pomocna"]; $result = mysql_query("select * from hraci where tym='$pomocna'"); while($z = MySQL_Fetch_Array($result)) { $cislo=intval($z["id"]); $g=intval($g[$cislo])+intval($z["g"]); echo" goly" . $g . " "; error_reporting(E_ALL); mysql_query("UPDATE hraci SET g='$g' WHERE id = '$cislo' "); } } |
||
AM_ Profil |
#14 · Zasláno: 25. 10. 2010, 10:43:20
nevím. ty také nevíš? kolikrát se provede ten while cyklus? jednou? nebo n-krát ale při ostatních selže update? s jakou chybou? nebo proč se provede jen jednou?
|
||
dawe Profil * |
#15 · Zasláno: 25. 10. 2010, 11:08:07
AM: No já myslim že ten cyklus by měl proběhnout tolikrát kolik to vytáhne z tabulky řádků..při výpisu
echo" goly" . $g . " "; |
||
AM_ Profil |
#16 · Zasláno: 25. 10. 2010, 14:52:25
a když ty další provedené dotazy vypíšeš v myadminovi? nebo za mysql_query dáš vypsat mysql_error()?
|
||
dawe Profil * |
#17 · Zasláno: 25. 10. 2010, 17:52:01
AM:
to nehodí žádnou chybu..ted jsem zkusil vypsat všechny možné výsledky a zřejmě to nějak nekomunikuje s těmi hodnotami z textboxu které jsou v poli echo"<form action='?page=stat' method='post'>"; $result = mysql_query("select * from hraci where tym='$pomocna'"); while($z = MySQL_Fetch_Array($result)) { $id=$z["id"]; echo"<tr> <input type='hidden' name='pomocna' value=" .$pomocna." /> <td>" . $z["jmeno"] . "</td> <td><input type='text' name='g[" . $id . "]' size='4' /></td> <td><input type='text' name='a[" . $id . "]' size='4' /></td> <td><input type='text' name='vg[" . $id . "]' size='4' /></td> <td><input type='text' name='odehrane[" . $id . "]' size='4' /></td> <td><input type='text' name='og[" . $id . "]' size='4' /></td> <td><input type='text' name='odchytane[" . $id . "]' size='4' /></td> <td><input type='text' name='ck[" . $id . "]' size='4' /></td> <td><input type='text' name='zk[" . $id . "]' size='4' /></td> </tr>"; } echo"<tr><td colspan='10'><input type='submit' name='uloz' value='Ulož statistiky' /></td></tr>"; echo"</table></form>"; if ($_POST["uloz"]){ $pomocna=$_POST["pomocna"]; $result = mysql_query("select * from hraci where tym='$pomocna'"); while($z = MySQL_Fetch_Array($result)) { $cislo=intval($z["id"]); $g=intval($g[$cislo])+intval($z["g"]); $a=intval($a[$cislo])+intval($z["a"]); $vg=intval($vg[$cislo])+intval($z["vg"]); $odehrane=intval($odehrane[$cislo])+intval($z["odehrane"]); $og=intval($og[$cislo])+intval($z["og"]); $odchytane=intval($odchytane[$cislo])+intval($z["odchytane"]); $ck=intval($ck[$cislo])+intval($z["ck"]); $zk=intval($zk[$cislo])+intval($z["zk"]); echo"<table> <tr><td>Kdo: " . $cislo . " </td> <td>Goly: " . $g . " </td> <td>Asis: " . $a . " </td> <td>vit gol: " . $vg . " </td> <td>odehrane: " . $odehrane . " </td> <td>OG: " . $og . " </td> <td>Odchytane: " . $odchytane . " </td> <td>CK: " . $ck . " </td> <td>ZK: " . $zk . " </td> </tr> </table>"; error_reporting(E_ALL); mysql_query("UPDATE hraci SET g='$g', a='$a', vg='$vg', odehrane='$odehrane', og='$og', odchytane='$odchytane', ck='$ck', zk='$zk' WHERE id = '$cislo' "); mysql_error(); } } |
||
AM_ Profil |
#18 · Zasláno: 25. 10. 2010, 23:28:53
v [#13] dawe jsi tvrdil, že se něco vypsalo v každém cyklu. Teď tvrdíš, že se vypíše jen první řádek. Tak jak to je? Pokud to vypíše jen jeden řádek, tak mi řekni proč (co přijde z databáze, jaký do ní jde dotaz, co vrátí phpmyadmin se stejným dotazem...)
mysql_error() máš špatně použité, podíval ses do reference, jak se to používá? |
||
dawe Profil * |
#19 · Zasláno: 26. 10. 2010, 07:56:15
AM:
vypsalo to vždycky vše pokud jsem zadal hodnoty pouze v prvním sloupci tak jak jsem zde uvedl kod v 13. příspěvku..v mém posledním příspěvku jsem použil všechny sloupce a to vypisovalo jen první řádek..jinak jsem to už rozchodil..místo pole jsem uložil proměnou ke které jsem vždycky přidal id a to funguje tak jak má..jinak díky za ochotu a rady |
||
Časová prodleva: 13 let
|
0