Autor | Zpráva | ||
---|---|---|---|
Arpagone Profil |
Dobrý den, rád bych vybral z databáze podle nějaké podmínky seznam zvířat. Konkrétně bych vybral seznam ušních čísel zvířat, která splňují podmínku rozmezí data narození. Tento seznam ušních čísel bych rád dostal do formuláře, kde by by pod sebou vždy byla dvojice - ušní číslo a prázdné okno pro doplnění hmotnosti. Uživatel by zaznamenal u všech zvířat jednotlivá vážení a potom celý seznam uložil do databáze (do jiné tabulky která má 3 sloupce číslo zvířete, datum vážení a naměřená hmotnost. Samozřejme nemám problém vygenerovat sezam z databáze, ale lámu si hlavu, jak to udělat aby šlo přidávat hmotnosti ukládat. Už se k tomuto skriptu vracím po několikáté, zkouším různé úpravy a ne a ne najít řešení. Snažil jsem se na internetu najít něco podobného a marně.
<?php $dat_vaz="2022-02-21"; //datum vážení $rok=2021; // ročník $datum_od = $rok."-01-01"; // datum narození od $datum_do = $rok."-12-31"; // datum narození do // nejprve vytvoření seznamu zvířat splňujících podmíky výběru echo "<table class='potomci'>"; echo "<form method='post'>" ; $rph10_2019 = Db::queryAll ("SELECT * FROM $farmar WHERE datnar_farma between '$datum_od' AND '$datum_do' ORDER BY zvire ASC"); echo "<tr> <th> Číslo </th> <th> Hmotnost</th> </tr>"; foreach ($rph10_2019 as $u) { echo "<tr>"; $zvire=($u['zvire']); echo " <td class='stred'> "; echo " <input name='cislo_vaha' type='text' size='8' value='$zvire ' /> </td>"; echo " <td class='stred'> "; $vaha=$_POST['vaha']; ?> <input TYPE="text" NAME="vaha" SIZE="4" VALUE="<?php echo $_POST ['vaha'] ?>"> <?php echo "</tr>"; IF ($_POST) { Db::query( "INSERT INTO $vazeni_farmar (cislo_vaha, dat_vaz, vaha ) VALUES (?,?,?)" ,$zvire, $dat_vaz, $_POST['vaha'] ); } } echo "</table>"; echo "<input type='submit' value='Vlož hlášení o vážení' /> "; echo "</form>"; Moderátor juriad: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na ).
|
||
anonym_ Profil * |
#2 · Zasláno: 3. 2. 2022, 16:20:05
Arpagone:
Bez odsazení, podbarvení kódu, atd. se tím probírat nebude, ale... Jak můžeš na ř. <input TYPE="text" NAME="vaha" SIZE="4" VALUE="<?php echo $_POST ['vaha'] ?>"> pracovat s $_POST , když nevíš, jestli byla odeslaná? A kde by se tam vzala, když evidentně skládáš formulář, který ta data má teprve odeslat?
|
||
juriad Profil |
#3 · Zasláno: 3. 2. 2022, 16:26:19
Můžeš využít toho, že PHP umí pracovat s poli v requestu:
Konceptuálně takto: <form ... method=post><table> foreach ($zvirata as $zvire) { <tr> <td> <input type=hidden name="zvire[]" value="$zvire"> </td> <td> <input type=number name="vaha[]"> </td> </tr> } </table></form> Takto dostaneš dvě pole $_POST['zvire'] a $_POST['vaha'] a bude platit, že 1. zvíře má ušní číslo $_POST['zvire'][0] a váhu $_POST['vaha'][0] , druhé bude mít indexy [1] atd.
Ta pole snadno proiteruješ a vložíš data do databáze. |
||
Arpagone Profil |
#4 · Zasláno: 3. 2. 2022, 16:37:39
Omlouvám se všem za neoznačený a nepodbarvený text. Vubec jsem si to neuvědomil a samozřejmě si na to budu snažit dát pozor
Tedy tento kod je asi dlouhý protože jsem ho musel označit na dvakrát. $dat_vaz="2022-02-21"; //datum vážení $rok=2021; // ročník $datum_od = $rok."-01-01"; // datum narození od $datum_do = $rok."-12-31"; // datum narození do // nejprve vytvoření seznamu zvířat splňujících podmíky výběru echo "<table class='potomci'>"; echo "<form method='post'>" ; $rph10_2019 = Db::queryAll ("SELECT * FROM $farmar WHERE datnar_farma between '$datum_od' AND '$datum_do' ORDER BY zvire ASC"); echo "<tr> <th> Číslo </th> <th> Hmotnost</th> </tr>"; foreach ($rph10_2019 as $u) { echo "<tr>"; $zvire=($u['zvire']); echo " <td class='stred'> "; echo " <input name='cislo_vaha' type='text' size='8' value='$zvire ' /> </td>"; echo " <td class='stred'> "; $vaha=$_POST['vaha']; ?> <input TYPE="text" NAME="vaha" SIZE="4" VALUE="<?php echo $_POST ['vaha'] ?>"> <?php echo "</tr>"; IF ($_POST) { Db::query( "INSERT INTO $vazeni_farmar (cislo_vaha, dat_vaz, vaha ) VALUES (?,?,?)" ,$zvire, $dat_vaz, $_POST['vaha'] ); } } echo "</table>"; echo "<input type='submit' value='Vlož hlášení o vážení' /> "; echo "</form>"; |
||
Časová prodleva: 2 roky
|
0