Php不会插入/发布空值,但仍然插入/填充填充值

时间:2014-09-19 04:00:44

标签: php mysql

在询问之前,这是我的表格照片: enter image description here

正如您所看到的,我有一个带有2个表格的表格,每个表格中有六个输入。

“Table Alat”和“Table Bahan”中的输入代码如下:

<form method='post' action='p_input.php'>
    <table>
    <tr>
        <td>1.</td>
        <td><input type='text' name='nama[]' style='width:100%;' autocomplete='off'></td>
        <td><input type='text' name='merk[]' style='width:100%;' autocomplete='off'></td>
        <td><input type='text' name='kemasan[]' style='width:100%;' autocomplete='off'></td>
        <td><input type='text' name='mhs[]' style='width:100%;' autocomplete='off'></td>
        <td><input type='text' name='jml[]' style='width:100%;' autocomplete='off'></td>
        <td><input type='text' name='hps[]' style='width:100%;' autocomplete='off'>
        <input type='hidden' name='jenis[]' value='alat' autocomplete='off'></td>
    </tr>
    </table>

    <table>
    <tr>
        <td>1.</td>
        <td><input type='text' name='nama[]' style='width:100%;' autocomplete='off'></td>
        <td><input type='text' name='merk[]' style='width:100%;' autocomplete='off'></td>
        <td><input type='text' name='kemasan[]' style='width:100%;' autocomplete='off'></td>
        <td><input type='text' name='mhs[]' style='width:100%;' autocomplete='off'></td>
        <td><input type='text' name='jml[]' style='width:100%;' autocomplete='off'></td>
        <td><input type='text' name='hps[]' style='width:100%;' autocomplete='off'>
        <input type='hidden' name='jenis[]' value='bahan' autocomplete='off'></td>
    </tr>
    <table width='100%' align='center' style='margin-top:0;'>
    <tr>
    <td><input name='reset' type='reset' id='bersihkan' value='Reset'>
    <input name='submit' type='submit' id='ajukan' value='Send'></td>
    </tr>
    </table>
    </table>
    </form>

这里的差异是<input type='hidden' name='jenis[]' value='alat' autocomplete='off'>,对于“Table Alat”,“Table Bahan”的值是'alat',值是'bahan'(我在这里没有问题,只是告诉你)。

这是我的p_input.php脚本:

 <?php
       error_reporting(0);
       session_start();

        if(isset($_REQUEST['submit'])) {
        include "../conf/koneksi.php";
        $count = count($_POST['nama']);
        $jurusan = $_POST['jurusan'];
        $lab = $_POST['lab'];
        $materi = $_POST['materi'];
        $mahasiswa= $_POST['mahasiswa'];
        for($i = 0; $i < $count; $i++){
          $nama = mysql_real_escape_string($_POST['nama'][$i]);
          $merk = mysql_real_escape_string($_POST['merk'][$i]);
          $kemasan = mysql_real_escape_string($_POST['kemasan'][$i]);
          $mhs = mysql_real_escape_string($_POST['mhs'][$i]);
          $jml = mysql_real_escape_string($_POST['jml'][$i]);
          $hps = mysql_real_escape_string($_POST['hps'][$i]);
          $jenis = mysql_real_escape_string($_POST['jenis'][$i]);
          $sql2= "ALTER TABLE tb_usulan AUTO_INCREMENT = 1";
          mysql_query($sql2);
          $sql=mysql_query("INSERT INTO tb_usulan (nama,merk,kemasan,kebutuhan,jml_kebutuhan,hps,jenis,materi_praktikum)
           VALUES
           ('$nama', '$merk', '$kemasan', '$mhs', '$jml', '$hps','$jenis','$materi')") or die(mysql_error());

        }
        }
        ?>

我的问题是:如果我只填写“TABLE ALAT”中的输入并将“TABLE BAHAN”中的输入保持为空,那么当我单击“提交”时,我只想在表格中输入插入/ post to database,反之亦然,如果我只填写“TABLE BAHAN”中的输入并将“TABLE ALAT”中的输入保持为空,则只有“TABLE BAHAN”中的输入才会插入/发布到数据库。

更新问题:这只是一个表单和一个提交按钮,并同时将其插入到同一个表中。

3 个答案:

答案 0 :(得分:2)

只需在for循环中进行检查。

for($i = 0; $i < $count; $i++)
{
    //skip if nama is empty
    if($_POST["nama"][$i] == ""){continue;}

    $nama = mysql_real_escape_string($_POST['nama'][$i]);
    $merk = mysql_real_escape_string($_POST['merk'][$i]);
    $kemasan = mysql_real_escape_string($_POST['kemasan'][$i]);
    $mhs = mysql_real_escape_string($_POST['mhs'][$i]);
    $jml = mysql_real_escape_string($_POST['jml'][$i]);
    $hps = mysql_real_escape_string($_POST['hps'][$i]);
    $jenis = mysql_real_escape_string($_POST['jenis'][$i]);
    $sql2= "ALTER TABLE tb_usulan AUTO_INCREMENT = 1";
    mysql_query($sql2);
    $sql=mysql_query("INSERT INTO tb_usulan (nama,merk,kemasan,kebutuhan,jml_kebutuhan,hps,jenis,materi_praktikum)
    VALUES ('$nama', '$merk', '$kemasan', '$mhs', '$jml', '$hps','$jenis','$materi')") or die(mysql_error());
}

答案 1 :(得分:1)

记得我添加了输入字段。所以在应用解决方案之前删除它。因为你已经以原始形式输入了feild。

<table>
    <tr>
        <td>1.</td>
        <td><input type='text' name='nama1' style='width:100%;' autocomplete='off'></td>
        <td><input type='text' name='merk1' style='width:100%;' autocomplete='off'></td>
        <td><input type='text' name='kemasan1' style='width:100%;' autocomplete='off'></td>
        <td><input type='text' name='mhs1' style='width:100%;' autocomplete='off'></td>
        <td><input type='text' name='jml1' style='width:100%;' autocomplete='off'></td>
        <td><input type='text' name='hps1' style='width:100%;' autocomplete='off'>
        <input type='hidden' name='jenis1' value='alat' autocomplete='off'></td>
    </tr>
    </table>

    <table>
    <tr>
        <td>1.</td>
        <td><input type='text' name='nama2' style='width:100%;' autocomplete='off'></td>
        <td><input type='text' name='merk2' style='width:100%;' autocomplete='off'></td>
        <td><input type='text' name='kemasan2' style='width:100%;' autocomplete='off'></td>
        <td><input type='text' name='mhs2' style='width:100%;' autocomplete='off'></td>
        <td><input type='text' name='jml2' style='width:100%;' autocomplete='off'></td>
        <td><input type='text' name='hps2' style='width:100%;' autocomplete='off'>
        <input type='hidden' name='jenis2' value='bahan' autocomplete='off'></td>
    </tr>
    </table>


  <input type='submit' name="submit">
</form>
</body>

比运行查询的位置只更改该部分。

if(!empty($_POST['name1']))
    {
        //Run First query
    }
    if(!empty($_POST['name2']))
    {
        //run your second query
    }

此代码执行此操作将检查值。如果值不为空,那么它将执行查询,否则它将不执行查询

和第二个是当您使用代码时,您不会有任何数组,因此您需要删除$ count变量。和你的foreach从代码循环。

第三件事。你需要在

之后设置值

if(isset($ _ REQUEST ['submit'])){         包括“../ conf / koneksi.php”;

对于下面的每个场地,因为我设置的很少

$ NAME1 = $ _邮政[ 'NAME1']; $ merk1 = $ _交[ 'merk1'];

对两个表的每个值执行此操作。

第四件事您需要更改查询中的值部分,例如您的值将是$ name1,依此类推第一个查询和第二个查询$ name2,依此类推。

希望我按照步骤解释这一点。并在执行步骤之前。如果你不明白,在你开始应用之前问我。

由于

答案 2 :(得分:1)

一个简单的解决方案是将表分开,如下所示:

<form name=formOne>
   <table><!-- Alat etc. -->
   </table>
   <input type=submit>
</form>

<form name=formTwo>
   <table><!-- Behan etc. -->
   </table>
   <input type=submit>
</form>

然后只推送提交的表格将被提交!

修改 使其仅使用一个提交按钮(客户端)。 添加以下jquery:

var lastForm;
$("form").click(function(){
     lastForm = this;
});

$("input[type=submit]").click(function(){
   $(lastForm).submit();
});

然后在表单元素之外添加提交按钮。 但最好的解决方案是检查服务器端字段。 (无论如何都应该这样做,因为你真的不能信任最终用户)。

但是在其他答案中已经提出过这个问题了!