更新交换箱中的单个数据


Updating a single data in a switch case

我有一个开关,我用它来更新一些数据(问题)。问题是,如果我编辑一个问题,点击提交,什么都没有发生。然而,当我编辑所有的问题一样,他们被更新到我的数据库。无论如何,每个问题更新一次。因此,如果我编辑一个数据并单击提交,它就会升级,而不必升级其他所有数据。

case 'Addquiz':
    $sql = "SELECT questiontext,type FROM questioninfo ORDER BY type DESC ";
    $result = mysqli_query($con,$sql);
    $selectedtable  = "<form method='post' action=''>'n";
    $selectedtable .= "<table class='sortable'>'n<tr><th>Question</th><th>Type</th></tr>'n";
    while($row = mysqli_fetch_array($result)) {
        $selectedtable .= "<tr><td><input type='text' name='QuestionText' value='".$row['questiontext']."'></td><td>$row[1]</td></tr>'n";
    }
    $selectedtable .= "</table>'n"; 
    $selectedtable .= "<input type='submit' name='submit' value='Update' style='width:80px; height:30px; text-align:center; padding:0px;'>'n";
    $selectedtable .= "<input type='submit' name='addquestion' value='Add Question' style='width:140px; height:30px; text-align:center; padding:0px;'>'n";
    $selectedtable .= "</form>'n";
    if(isset($_POST['submit'])) {   
        $questiontext = $_POST['QuestionText'];
        $sql1="SELECT questiontext FROM questioninfo";
        if($result=mysqli_query($con,$sql1)) {
            $rowcount=mysqli_num_rows($result);
        }
        if($rowcount==0) {
            $sql="INSERT INTO questioninfo (questiontext) VALUES('$questiontext')";
            $result = mysql_query($sql);
        } else {
            $sql2 = "UPDATE questioninfo SET questiontext = '$questiontext'";
            $result2 = mysql_query($sql2);
        }
    }
    break;

使用查询结果中的rowID,在循环中更改input标记,使其具有动态名称。

<input type='text' name='QuestionText[$row[id]]' value='".$row['questiontext']."'>
.....................................^        ^

然后将提交一个由QuestionText元素组成的"数组",每个元素的行ID作为"键",输入的文本作为"值"

然后,在提交表单之后,循环遍历$_POST['QuestionText']并依次处理每个表单,如下所示:

foreach($_POST['QuestionText'] as $key => $value){
    // update row $key with $value
}

我看不出你怎么会需要insert查询,因为它们最初都来自数据库。