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
Azhrei:
odeslané položky musíš zpracovat přes pole
Azhrei
Profil
Taps:
Mohl bys mi prosím napsat příklad?
Taps
Profil
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
Taps:
Vyzkouším, móóóóc děkuji
Azhrei
Profil
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
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
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
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
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
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
a jak to pak uložím do databáze?
jenikkozak
Profil
Projděte pole $_POST[znamka] pomocí cyklu foreach, uložte hodnoty i indexy pole.

Edit: Kontakt na sebe jsem vymazal.

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