Autor Zpráva
dawe
Profil *
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]' ");   
             }
           
         }
Co tam má být jinak? :(
panther
Profil
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 *
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
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 *
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
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 *
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>";
         }
ale pořád nic :(
AM_
Profil
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 *
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
prázdné znamená, že když na začátek skriptu dáš
var_dump($_POST);
, vypíše to prázdné pole?
dawe
Profil *
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
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 *
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
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 *
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 . " ";
mi to vypíše všechno co jsem zadal..ale v tabulce se aktualizuje jen první řádek, takže selže zřejmě update, ale chybu to žádnou nehází
AM_
Profil
a když ty další provedené dotazy vypíšeš v myadminovi? nebo za mysql_query dáš vypsat mysql_error()?
dawe
Profil *
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>";
a zpracování
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();
                
            }    
         }
vypíše to pouze první řádek..další jako by nebyly zadaný
AM_
Profil
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 *
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

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: