Autor Zpráva
Azhrei
Profil
V elektronickém známkování řeším nasledující - opravu zadaných známek a jejich uložení do databáze. Známky se mi zobrazí do formuláře a tím předávám informace stránce co je má uložit.

Formulář na vypsání známek (funguje) a jejich odeslání
$jmeno=false;
if(isset($_POST[predmet_vyber])) {//u jednotlivých žáků jsou vybrány známky, je vybrán předmět, uložíme známky - 3. krok
$vysledek=mysql_query("select * FROM znamky JOIN zaci ON znamky.ID_ZACI=zaci.ID_ZACI JOIN predmety on znamky.ID_predmet=predmety.ID_PREDMET JOIN tridy on zaci.ID_TRIDY=tridy.ID_TRIDY WHERE zaci.ID_TRIDY='$_POST[trida_vyber]' and znamky.ID_PREDMET='$_POST[predmet_vyber]' order by prijmeni");
                   $zaznam=MySQL_Fetch_Array($vysledek);
                    echo "$zaznam[trida] $zaznam[zkratka]";
                    while ($zaznam=MySQL_Fetch_Array($vysledek)){
                    if($zaznam[jmeno]!=$jmeno){
                    echo "<tr><td colspan=2>$zaznam[jmeno] $zaznam[prijmeni]</td></tr>";}
          SetLocale(LC_ALL, "Czech");
                    $datum = Date("j. m. Y", $zaznam[datum]);
                    echo "<tr><td>$datum</td>";
                    echo "<td><input value=$zaznam[znamka] name=znamka[$zaznam[ID]] size=8></td></tr>";    
                  $jmeno=$zaznam[jmeno];
                    }    


kód pro ukládání
foreach($_POST[znamka] as $zak => $znamka){mysql_query("update znamky SET znamka='$znamka' where ID='$_POST[ID]'");}
echo "Známky byly změněny.<br><a href=http://www.sos-veseli.cz/znamky/index.php>Zpět</a>";


a výpis $POST
Array ( [ID] => 79 [znamka] => Array ( [3] => 1 [1] => 5 ) [posli] => Opravit ) Známky byly Změněny.
Zpět


V tabulce se mi mění pouze první řádek, nic víc.
jenikkozak
Profil
kód pro ukládání je nutno změnit takto:
foreach($_POST[znamka] as $zak => $znamka){mysql_query("update znamky SET znamka='$znamka' where ID='$zak'");}

Jen pak nevím, na co je $_POST[ID].
Azhrei
Profil
ID je číslo řádku v tabulce s konkrétní známkou.
Alphard
Profil
Azhrei:
Viz ten výpis [ID] => 79. Id je jediná hodnota, takže je zcela správně že where ID='$_POST[ID]' mění jediný řádek.
Vzhledem k tomu, že netušíme, kde se id bere, těžko radit. Jak už psal (přibližně) jenikkozak, id musí ukazovat na aktuálně upravovaný záznam.

Krom toho, řetězcové klíče polí (která nejsou součástí jiného řetězce), patří do apostrofů (nebo uvozovek).
Takže
if(isset($_POST['predmet_vyber']))
Pak tohle máte správně bez apostrofů.
echo "<td><input value=$zaznam[znamka] name=znamka[$zaznam[ID]] size=8></td></tr>";

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:

0