如何使用PHP从循环插入数据库?

时间:2015-12-13 08:12:19

标签: php jquery mysql ajax

插入没有数据时出现问题。所以我希望你帮助解决这个问题。

这是我的档案: students.php

        <form id="student_form" method="POST"   action="">
<?php
    if(mysql_num_rows($q)>0){           

                ?>


    <table   border="0" dir="ltr" align="center"cellpadding='0' cellspacing='0' >

        <tr> <th>Student ID</th><th>Name</th><th>AVG</th><th>Joining Year</th><th>Message</th><th>Sending Message</th> </tr>

        <?php while($row = mysql_fetch_array($q)){ ?>
        <tr>

            <td id="stud_id[]"> <?php echo $row['studant_ID']; ?></td>
            <td> <?php echo $row['studant_Name']; ?></td>
            <td> <?php echo $row['Average']; ?></td>
            <td> <?php echo $row['year']; ?></td>
            <td> <input id="message1[]" name="message1[]" type="text" size="25px" /></td>
            <td><input name="submit[]" id="submit[]" type="submit"  value="Send"  /> </td>
        </tr>

<?php }}

这是我的插入文件: insert_message.php

if (isset($_POST['message1']) && $_POST['message1']!='') {

            $addss = mysql_real_escape_string($_POST['message1']);
        } 

if (isset($_POST['stud_id']) && $_POST['stud_id']!='') {

            $std_id = mysql_real_escape_string($_POST['stud_id']);
        }        


//####################################################################### 

 $query1 = "INSERT INTO `message` (`rcvrid`, `senderid`, `msg`) VALUES ('$std_id', '22011111', '$addss'); ";
 mysql_query($query1);

我通过 jquery ajax 连接两个文件。

<script>

 $("#student_form").on("submit", function(event) {
                event.preventDefault();
                $.ajax({
                    type: "POST",
                    url: "insert_message.php",
                    data: $(this).serialize(),
                    success: function(data) {
                        $("#inner_contant").append(data+"<br/>");//instead this line here you can call some function to read database values and display
                    },
                });
            });


</script>

2 个答案:

答案 0 :(得分:1)

首先 - 在library(zoo) na.locf(myvec) #[1] "AMLM12001KP" "AMLM12001KP" "1114002" "1114002" "1121501" #[6] "1121501" "1231401" "1231401" "1231401" "1231401" 数组中传递给服务器的所有数据都来自具有$_POST属性的输入字段(除非你有一些自定义的js处理程序)。

所以

name

没有

如果您想以某种方式存储<td id="stud_id[]"> <?php echo $row['studant_ID']; ?></td> ,请使用studant_ID字段,例如:

hidden

接下来 - 你想从这个按钮得到什么:

<td>
    <input type="hidden" name="stud_id[]" value="<?php echo $row['studant_ID']; ?>" />
</td>

因为它们都属于一个<input name="submit[]" id="submit[]" type="submit" value="Send" /> ,所以它们也会这样做 - 将所有字段发送到服务器。如果您希望每个form按钮仅向服务器发送一对submit,则必须为每对创建student_id, message(或执行一些js处理程序)。否则,在您的服务器上,您将拥有:

    来自的
  • form数组所有学生ID 来自表单
  • $_POST['stud_id']数组所有消息

如果您想全部处理它们 - 请执行$_POST['message1']

foreach

当然,您应该删除foreach ($_POST['stud_id'] as $key => $id) { // find the message $msg = $_POST['message1'][$key]; $query1 = "INSERT INTO `message` (`rcvrid`, `senderid`, `msg`) VALUES ('$id', '22011111', '$msg'); "; mysql_query($query1); } 个功能并使用较新的apis - mysql_PDO

答案 1 :(得分:1)

从页面中删除表单

<tr>

            <td id="stud_id"> <?php echo $row['studant_ID']; ?>
              <input type="hidden" name="stud_id" value="<?php echo $row['studant_ID']; ?>"/>
            </td>
            <td> <?php echo $row['studant_Name']; ?></td>
            <td> <?php echo $row['Average']; ?></td>
            <td> <?php echo $row['year']; ?></td>
            <td> <input id="message1" name="message1" type="text" size="25px" /></td>
            <td><button class="submit" type="submit" />Send </button> </td>
        </tr>

第二: 你的js应该是这样的:

$(".submit").on("click", function(event) {
                event.preventDefault();
                $.ajax({
                    type: "POST",
                    url: "insert_message.php",
                    data: {stud_id:$(this).closest('tr').find('input[name="stud_id"]').val(),message1:$(this).closest('tr').find('input[name="message1"]').val()},
                    success: function(data) {
                        $("#inner_contant").append(data+"<br/>");//instead this line here you can call some function to read database values and display
                    },
                });
            });

在insert_message.php中 您需要回显一条消息,看看您是否在更新数据库方面取得了成功

echo json_encode(array('message'=>'Data updated/Error'));