Autor | Zpráva | ||
---|---|---|---|
Azhrei Profil |
Řeším elektronické známkování - v databázi mám uložené třídy, předměty, žáky a známky.
Z databáze se do formuláře načítá do selectu třída - po vybrání přidy se zobrazí předměty co se v ní vyučují, vybere se předmět a odešle se formulář. Tím si předám jakou třídu a předmět uživatel vybral. Dál potřebuji aby se mi z databáze do formuláře vypsali studenti(imput) a přes radio se zadají známky. To odesílám na jinou stránku, která má vše uložit do databáze. Problém ale je, že všichni studenti mají stejné položky name - tudíž se mi předává pouze poslední student a ne všichni. Také nevím, jak je pak uložit odděleně do databáze…. Kód, pro předání informací <form action="uloz_znamky.php" method="post" name="znamky"> <? $vysledek=mysql_query("select ID_ZACI, jmeno, prijmeni FROM zaci JOIN tridy ON zaci.ID_TRIDY=tridy.ID_TRIDY where tridy.ID_TRIDY='".$_POST['trida_vyber']."' ORDER BY zaci.prijmeni"); ?> <table summary=""> <tr><td colspan="2"><h2> <? if ($_POST['trida_vyber']==1)echo "1.A"; if ($_POST['trida_vyber']==2)echo "1.B"; ?></h2></td></tr> <tr><td>Číslo žáka</td><td>Žáci</td><td>známky</td></tr> <? while ($zaznam=MySQL_Fetch_Array($vysledek)) { $cislo=$zaznam['ID_ZACI']; ?> <tr><td><input value="<?echo $zaznam['ID_ZACI']?>" name="ID_ZACI" ><input value="<?echo $zaznam['jmeno']?>" name="jmeno" > <input value="<?echo $zaznam['prijmeni']?>" name="prijmeni" ></td><td> nepsal <input type="radio" name="<?echo $cislo?>" value="0"> 1 <input type="radio" name="<?echo $cislo?>" value="1" checked="checked"> 2 <input type="radio" name="<?echo $cislo?>" value="2"> 3 <input type="radio" name="<?echo $cislo?>" value="3"> 4 <input type="radio" name="<?echo $cislo?>" value="4"> 5 <input type="radio" name="<?echo $cislo?>" value="5"> </td></tr> <input type="hidden" value="<?echo $zaznam['ID_ZACI']?>" name="<?echo $zaznam['ID_ZACI']?>"> <?}?> </table> <input type="submit" name="posli" value="Uložit"> </form> Velice spěchá, prosím pomozte… Moderátor Alphard: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na ).
|
||
Taps Profil |
#2 · Zasláno: 29. 8. 2010, 19:00:55
Azhrei:
odeslané položky musíš zpracovat přes pole |
||
Azhrei Profil |
#3 · Zasláno: 29. 8. 2010, 19:02:26
Taps:
Mohl bys mi prosím napsat příklad? |
||
Taps Profil |
#4 · Zasláno: 29. 8. 2010, 19:06:53
Azhrei:
musíš upravit položky do níže uvedeného tvaru name="jmeno[]" a pak si na stránce kam odesíláš udaje projdi pole pomocí foreach a udaje zapiš do databáze Když tak si můžeš zobrazit pole přes print_r($_POST); |
||
Azhrei Profil |
#5 · Zasláno: 29. 8. 2010, 19:33:35
Taps:
Vyzkouším, móóóóc děkuji |
||
Azhrei Profil |
#6 · Zasláno: 30. 8. 2010, 08:58:48
Taps:
Tak pole si už předám i zobrazím, ale to ukládání je problém, mohl by mi to někdo ukázat na příkladu? |
||
jenikkozak Profil |
#7 · Zasláno: 30. 8. 2010, 10:42:24 · Upravil/a: jenikkozak
Azhrei:
Záleží na tom, jak jste pojal Tapsovo řešení. Nedáte sem zdrojový kód svého skriptu nebo aspoň výsledek print_r($_POST)? |
||
Azhrei Profil |
#8 · Zasláno: 30. 8. 2010, 15:33:45
Zde je kód
$vysledek=mysql_query("insert into znamky (ID_ZACI, ID_PREDMET, znamka) values ('".$_POST["ID_ZACI"]."','".$_POST["predmet_vyber"]."','".$_POST["cislo"]."')"); a zde výpis Array ( [ID_ZACI] => Array ( [0] => 3 [1] => 1 ) [jmeno] => Karel [prijmeni] => Novák [3] => 3 [1] => 1 [posli] => Uložit ) neposílám tam všechno, jen jsem si to chtěl zkusit na tom ID_ZACI |
||
jenikkozak Profil |
#9 · Zasláno: 30. 8. 2010, 17:55:36 · Upravil/a: jenikkozak
Podle toho výpisu máte proměnné:
$_POST[ID_ZACI][0], $_POST[ID_ZACI][1], $_POST[jmeno], $_POST[prijmeni], $_POST[3], $_POST[1], $_POST[uloz] ale používáte proměnné $_POST[ID_ZACI], $_POST[predmet_vyber] a $_POST[cislo] Podle toho výpisu bych řekl, že formulář nemáte správně sestaven. Neměl by posílat dvě různá id žáků, také by se v tomto formuláři neměla upravovat jména, příjmení i to id. Formulář na úpravu jmen by měl být mimo formulář na přidání známky, řekl bych. Ale možná to chcete jinak. Dále si myslím, že byste neměl mít $_POST[1] ($_POST[2], $_POST[3]...), ale například $_POST[znamka] s hodnotou 1 (2, 3, 4 nebo 5). Ale možná jsem jen špatně pochopil, čeho chcete dosáhnout. |
||
Azhrei Profil |
#10 · Zasláno: 30. 8. 2010, 18:01:09
jenikkozak:
Ten formulář slouží k vypsání žáků a zadání známek a pak k uložení známek, takže vypisuje i něco co se neukládá jako je jméno a příjmení a využije se jen číslo žáka. Ale žáků je tam hodně a tak nemohu mít $_POST[znamka] s hodnotou 1 (2, 3, 4 nebo 5), ale něco jako $_POST[znamka(zde různá čísla podle žáků)] s hodnotami 1, 2, 3... |
||
jenikkozak Profil |
#11 · Zasláno: 30. 8. 2010, 18:36:25
Pokud se něco z toho formuláře nevyužívá, tak by se to tam nemělo vůbec vypisovat. K čemu je políčko na změnu příjmení žáka, když toto příjmení stejně nepůjde změnit?
Můžete použít zápis nepsal <input type="radio" name="znamka[<?echo $cislo?>]" value="0"> 1 <input type="radio" name="znamka[<?echo $cislo?>]" value="1" checked="checked"> Pak známka žáka s id 1 bude jako hodnota $_POST[znamka][1], známka 2. žáka bude v $_POST[znamka][2]... |
||
Azhrei Profil |
#12 · Zasláno: 30. 8. 2010, 18:37:46
a jak to pak uložím do databáze?
|
||
jenikkozak Profil |
#13 · Zasláno: 30. 8. 2010, 18:52:34 · Upravil/a: jenikkozak
Projděte pole $_POST[znamka] pomocí cyklu foreach, uložte hodnoty i indexy pole.
Edit: Kontakt na sebe jsem vymazal. |
||
Časová prodleva: 14 let
|
0