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 *
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
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
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>";

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