NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Vložení záznamu do databáze

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
michal Čepelák:20.2.2018 12:45

Zdravím,
mám takovýto formulář

<form class="ui mini form" method="POST">
             <input type="hidden" name="id"  />
                    <div class="field">
                <label>Ticket</label>
                <input type="text" name="opr_ticket"   placeholder="Číslo ticketu" />
            </div>
            <div class="field">
                <label>S/N</label>
                <input type="text" name="sn"  placeholder="S/N základní desky" />
            </div>
            <div class="field">
                <label>Typ desky</label>
                <select name="typ_desky"  >
                    <?php
                        OtevriDB();
                                $sql='SELECT * FROM typ_desky WHERE prirazeni=1 AND del=0 ';
                                $v=mysql_query($sql);
                                while ($deska=mysql_fetch_object($v)){
                                        echo '<option value="'.$deska->typ.'">'.$deska->typ.'</option>';
                                }
                                ?>
                </select>
            </div>
            <div class="field">
                <label>MAC</label>
                <input type="text" name="mac"  placeholder="Od koho deska přišla" />
            </div>
            <div class="field">
                <label>Od koho</label>
                <input type="text" name="od_koho"  placeholder="Od koho deska přišla" />
            </div>
            <div class="field">
                <label>Příslušenctví</label>
                <input type="text" name="prislu"  placeholder="Příslušenctví co byli u základní desky" />
            </div>
            <div class="field">
                <label>Závada</label>
                <textarea   name="zavada" placeholder="Závada na HW" ></textarea>
            </div>
             <div class="field" id="polozky">
            <div class="polozka" id="sablona" >
                <label>Náhradní díly</label>
        <!--        <textarea   name="nah_dily[]" placeholder="Závada na HW" ></textarea>  -->
                <input type="text" name="nah_dily[]"  />
            </div></div>
                <i class="large edit icon" onclick="pridatPole()"></i>



            <div class="field">
                <label>Poznámka</label>
                <textarea   name="poznamka" placeholder="Poznámka" ></textarea>
            </div>
            <div class="field">
                     <label>Cena opravy</label>
                <select name="opr_cena" >
                    <option></option>



                <?php

              Db::connect();
            $cena =   Db::queryAll('SELECT * FROM cena_opravy WHERE id_hw=1');
              foreach ($cena as $ceny ){
                  echo '<option value="'.$ceny[cena].'">'.$ceny[cena_nazev].'&nbsp;'.$ceny[cena].'</option> ';
              }


      /*          OtevriDB();
            $sql = 'SELECT * FROM typ_hardware WHERE del=0 ';
            $th = mysql_query($sql);
            while ($typhw=mysql_fetch_object($th)){
                echo'<option value="'.$typhw->nazev_hw.'" >'.$typhw->id_hw.'&nbsp;'.$typhw->nazev_hw.'</option>';
            }
            */

            ?></select> </div>

            <div class="field">
                <label>Čas opravy</label>
                <div class="fields">
            <div class="field">

                <select name="timeh" >
<option value="-">-</option>
<option value="00">00</option>
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>


</select>
            </div>
                <div class="field">
<select name="timem" >
<option value="-">-</option>
<option value="00">00</option>
<option value="05">05</option>
<option value="10">10</option>
<option value="15">15</option>
<option value="20">20</option>
<option value="25">25</option>
<option value="30">30</option>
<option value="35">35</option>
<option value="40">40</option>
<option value="45">45</option>
<option value="50">50</option>
<option value="55">55</option>
</select>
                </div>
            </div>
            </div>
            <div class="actions">
            <div class="ui right buttons">
                <button class="ui negative button" name="cancel"><i class="ui remove icon"></i>Zrušit</button>
            </div>

            <button class="ui positive button" name="addop" ><i class="ui save icon"></i>
                Uložit</button>
            </div>
        </form>
<script>
        var prvniPolozka = document.getElementById('sablona');
var sablona = prvniPolozka.cloneNode(true);

function pridatPole() {
    var kopie = sablona.cloneNode(true);
    document.getElementById('polozky').appendChild(kopie);
    kopie.getElementsByTagName("input")[0].focus();
}

function odebrat(el) {
    var polozka = el.parentNode;
    polozka.parentNode.removeChild(polozka);
}
        </script>

Tento formulář obsahuje řádek náhradní díly, kterýmu přes javascript mohu přidat další řádky, ale pokud je přidám tak do databáze se mi uloží pouze poslední záznam(např. mám celkově tři řádky v položce náhradní díly s hodnotami 1,2,3 a do databáze se mi uloží pouze 3)

kód PHP

if (isset($_REQUEST["addop"]))
   {
       foreach ($_POST['nah_dily'] as $dily){
       $dily->$nah_dily;

       }
       Db::connect();
       $sql = Db::query('INSERT INTO opravy (datum, opr_ticket,sn, typ_desky,mac,od_koho, prislu, zavada, nah_dily, opravil,  poznamka, opr_cena, timeh, timem)
                VALUES (NOW(),?,?,?,?,?,?,?,?,"'.$_SESSION["oprava_id"].'",?,?,?,?)', $_POST['opr_ticket'], $_POST['sn'],$_POST['typ_desky'],$_POST['mac'], $_POST['od_koho'],$_POST['prislu'],$_POST['zavada'],$nah_dily, $_POST['poznamka'],$_POST['opr_cena'],$_POST['timeh'],$_POST['timem'] );
       header("Location: opravy_test.php");

       die;
       }

Děkuji moc za rady v PHP začinám

 
Odpovědět
20.2.2018 12:45
Avatar
Neaktivní uživatel:20.2.2018 13:00

Nevím jestli jsem to spravně pochopil, ale zkus

$nah_dily = serialize($_POST['nah_dily']);

bez foreach.

Nahoru Odpovědět
20.2.2018 13:00
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:20.2.2018 13:22

Nebo ještě:

$nah_dily = implode(",", $_POST['nah_dily']);
Nahoru Odpovědět
20.2.2018 13:22
Neaktivní uživatelský účet
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.