簡體   English   中英

將多行從php存儲到sql

[英]Storing multi rows from php to sql

當我從 php 發送帖子以將輸入值保存在單獨的行中時,我以 ma 表中的那個結尾總是存儲額外的空白行。 例如,這是我發送帖子以保存值的表單:

<table class="table table-bordered" id="data">
                <tr>
                    <th width="40%">Knjiga</th>
                    <th width="40%">Pisac</th>
                    <th width="5%">Radnja</th>
                </tr>
            <?php
            if(isset($_COOKIE["spisak_knjiga"]))
            {
                $cookie_data = stripslashes($_COOKIE['spisak_knjiga']);
                $knjiga_podaci = json_decode($cookie_data, true);
                foreach($knjiga_podaci as $keys => $values)
                {
                    $skola= $values["skola"];
                    $inv_id= $values["inv_id"];
                    $sql = "SELECT knjige.id_knjige, knjige.naziv_knjige, knjige.pisac, knjige.mjesto_izdanja, knjige.godina_izdanja, knjige.signatura, knjige.inv_broj,knjige.kategorija, knjige_kategorija.naziv_kategorije, skole.ime_skole FROM knjige INNER JOIN skole ON knjige.skola = skole.id_skole INNER JOIN knjige_kategorija ON knjige.kategorija = knjige_kategorija.id_kat WHERE id_skole ='$skola' AND inv_broj = '$inv_id'";
                    mysqli_query($db, $sql);
                    foreach ($db->query($sql) as $row){

                        $idKnjige =  $row['id_knjige'];

            ?>
                <tr>
                <td><?php echo $row['naziv_knjige'] ?></td>
                <td><?php echo $row['pisac'] ?></td>
                </tr>
                <tr>
                <input type="hidden" name="ucenik[]" value="<?php echo $idUcenika; ?>">
                <input type="hidden" name="knjiga[]" value="<?php echo $idKnjige; ?>">
                <input type="hidden" name="skola[]" value="<?php echo $skola; ?>">
                </tr>
            <?php   
            }               
            }
            $broj = mysqli_num_rows(mysqli_query($db, $sql));

             $db->close(); 
            ?>
            <?php } 

            } ?>
            </table>
            <input type="submit" name="zaduziUcenika" class="btn btn-primary btn-lg btn-block" value="Save orders">
                </form>

這是我接收數據並插入數據庫的地方,它插入所有按順序排列的產品,但它也保存了額外的空行。

if (isset($_POST['zaduziUcenika'])) {

        $i = 0;
        foreach ($_POST as $val) {
            $idUcenika = $_POST['ucenik'][$i];
            $idKnjige = $_POST['knjiga'][$i];
            $idSkole = $_POST["skola"][$i];

            $sql = "INSERT INTO izdane_knjige (knjiga, ucenik, skola, datum_podizanja, stanje) VALUES ('$idKnjige', '$idUcenika', '$idSkole', CURRENT_DATE(), 0)";
            $u = mysqli_query($db, $sql);
            $i++;
          }
          if($u)
                            {
                                header("Location: izdaj2.php?action=spremljeno&id=$idUcenika");
                                exit();

                            }  
        }

因為$_POST數組中還有其他值而不是要插入表中的值,所以您在foreach循環中迭代了太多次。 更改循環以迭代您擁有多個副本的值之一,例如ucenik

foreach ($_POST['ucenik'] as $i => $val) {
    $idUcenika = $_POST['ucenik'][$i];
    $idKnjige = $_POST['knjiga'][$i];
    $idSkole = $_POST["skola"][$i];

請注意,您需要刪除$i = 0; $i++; 代碼中的行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM