更新循环

时间:2016-02-05 21:58:53

标签: php html mysql

这是更新mysqli_array_fetch中某一行的特定列的正确方法吗?它对我不起作用。

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>الرد على التذكرة</title>
<style>

.table, tr, td {border: 1px solid black; text-align:center}
.contents { position:static}
p1 {font-size:15px; font-weight:bolder} 
.inputresponse {resize:none}
</style>
</head>
<body class="body">
<div class="contents" align="right">
<?php

include 'config.php';



$sql = "SELECT * FROM contact ORDER BY id";

$con->set_charset('utf8');
$users = mysqli_query($con,$sql);

?>
<table class="table">
<?php

while($row = mysqli_fetch_array($users)) {

?>

<form id="<?php echo $row[id] ?>" method="post" name="respone" action="addresponse.php">
<tr>
<td> <p1> الإسم </p1> </td>
<tr>
<td> <?php echo $row[name] ?> </td>
</tr>
<tr>
<td> <p1> رقم التذكرة</p1> </td>
</tr>
<tr>
<td> <?php echo $row[ticketnumber] ?> </td>
</tr>
<tr>
<td> <p1> الإيميل</p1> </td>
</tr>
<tr>
<td> <?php echo $row[email] ?> </td> 
</tr>
<tr>
<td> <p1>  الموضوع </p1> </td>
</tr>
<tr>
<td> <?php echo $row[subject] ?> </td>
</tr>
<tr>
<td> <p1> الرد </p1> </td>
</tr>
<tr>
<td>  <textarea name="response" rows="5" dir="rtl" class="inputresponse"> </textarea> </td>
</tr>
<tr>
<td> <input type="submit" value="إرسال" name="send"> </td>
</tr>
<tr>
<td>
<?php 

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

        $repsonse = $_POST['response'];

        $result = ("UPDATE contact SET response ='$response' WHERE id= $row[id]");

        $rst = mysqli_query($con,$result);

if($rst){
    echo "تم الإرسال";

} else {

    echo " لم يتم الإرسال";
}
}
}
?>
</form>
</table>
</div>
</body>
</html>

编辑后,我想我再次做错了

    <!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>الرد على التذكرة</title>
<style>

.table, tr, td {border: 1px solid black; text-align:center}
.contents { position:static}
p1 {font-size:15px; font-weight:bolder} 
.inputresponse {resize:none}
.inputid {text-align:center; font-size:10px}
</style>
</head>
<body class="body">
<div class="contents" align="right">
<?php

include 'config.php';



$sql = "SELECT * FROM contact ORDER BY id";

$con->set_charset('utf8');
$users = mysqli_query($con,$sql);




?>
<table class="table">
<?php
while($row = mysqli_fetch_array($users)) {

?>


<form id="<?php echo $row['id'] ?>" method="post" name="respone" action="addresponse.php">
<tr>
<td> <input value="<?php echo $row['id'] ?>" name="id" class="inputid" readonly> </td>
<tr>
<tr>
<td> <p1> الإسم </p1> </td>
<tr>
<td> <?php echo $row['name'] ?> </td>
</tr>
<tr>
<td> <p1> رقم التذكرة</p1> </td>
</tr>
<tr>
<td> <?php echo $row['ticketnumber'] ?> </td>
</tr>
<tr>
<td> <p1> الإيميل</p1> </td>
</tr>
<tr>
<td> <?php echo $row['email'] ?> </td> 
</tr>
<tr>
<td> <p1>  الموضوع </p1> </td>
</tr>
<tr>
<td> <?php echo $row['subject'] ?> </td>
</tr>
<tr>
<td> <p1> الرد </p1> </td>
</tr>
<tr>
<td>  <textarea name="response" rows="5" dir="rtl" class="inputresponse"> </textarea> </td>
</tr>
<tr>
<td> <input type="submit" value="إرسال" name="send"> </td>
</tr>
<tr>
<td>
<?php 

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


        $response = $_POST['response'];



        $result = ("UPDATE contact SET response ='$response' WHERE id= $row[id]");

        $rst = mysqli_query($con,$result);



if($rst){
    echo "تم الإرسال";

} else {

    echo " لم يتم الإرسال";
}
}
}
?>
</form>
</table>
</div>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

您的HTML格式很奇怪,但我认为这应该可以实现您的目标。

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>الرد على التذكرة</title>
<style>
.table, tr, td {
    border: 1px solid black;
    text-align:center
}
.contents {
    position:static
}
p1 {
    font-size:15px;
    font-weight:bolder
}
.inputresponse {
    resize:none
}
.inputid {
    text-align:center;
    font-size:10px
}
</style>
</head>
<body class="body">
<div class="contents" align="right">
<?php
include 'config.php';
$sql = "SELECT * FROM contact ORDER BY id";
$con->set_charset('utf8');
$users = mysqli_query($con,$sql);
?>
<table class="table">
<?php
while($row = mysqli_fetch_array($users)) {
?>
<form id="<?php echo $row['id'] ?>" method="post" name="respone" action="addresponse.php">
    <tr>
    <td><input value="<?php echo $row['id'] ?>" name="id" class="inputid" type="hidden"></td>
    <tr>
    <tr>
    <td><p1> الإسم </p1></td>
    <tr>
    <td><?php echo $row['name'] ?></td>
    </tr>
    <tr>
    <td><p1> رقم التذكرة</p1></td>
    </tr>
    <tr>
    <td><?php echo $row['ticketnumber'] ?></td>
    </tr>
    <tr>
    <td><p1> الإيميل</p1></td>
    </tr>
    <tr>
    <td><?php echo $row['email'] ?></td>
    </tr>
    <tr>
    <td><p1> الموضوع </p1></td>
    </tr>
    <tr>
    <td><?php echo $row['subject'] ?></td>
    </tr>
    <tr>
    <td><p1> الرد </p1></td>
    </tr>
    <tr>
    <td><textarea name="response" rows="5" dir="rtl" class="inputresponse"> </textarea></td>
    </tr>
    <tr>
    <td><input type="submit" value="إرسال" name="send"></td>
    </tr>
    </form>
    <?php 
}
?>
    </table>
<?php
    if(isset($_POST['send'])){
        $response = $_POST['response'];
        $result = "UPDATE contact SET response = ? WHERE id= ?";
        $rst = mysqli_prepare($con,$result);
        mysqli_stmt_bind_param($rst, 'si', $response, $_POST['id']);
        mysqli_stmt_execute($rst);
        if($rst){
            echo "تم الإرسال";
        } else {
            echo " لم يتم الإرسال";
            echo mysqli_stmt_error($rst);
        }
    }
?>
</div>
</body>
</html>

改变/潜在改进:

  1. 使用预准备语句代替内联值。
  2. 将更新移到while循环之外,因为它无关紧要。
  3. form循环内移动了关闭while标记。你正在制作多种形式,但每个人都是第一个孩子,因为它从未关闭过。
  4. p1看起来像是标题?如果是这样,他们应该在循环之外。
  5. 如果要在更新的行旁边显示消息,可以在页面处理之前移动整个更新过程。将变量状态分配给变量,然后在输出时输出该消息。
  6. 您的表格行似乎关闭不正确。