| 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: 15 let
|
|||
0