如何在PHP中为2d数组的每一行创建一个Edit按钮

时间:2019-04-11 03:39:58

标签: php mysql

我在php中有一个2d数组,用于显示表内容,并且能够为每一行创建一个编辑图标。但是,我在从所选行中检索数据时遇到了麻烦。

这是我填充数组的方式:

<?php
//use query to retrieve columns
$sql = "SHOW COLUMNS FROM $table_name";
$result1 = mysqli_query($conn, $sql);// contains the query that creates 2d

while ($record = mysqli_fetch_array($result1)) { //returns current row 1d 
  $fields[] = $record['0'];//takes first element from record called fields (table names)
}

//retrieve the table content since data table has rows and columns
//lets use 2d array
$data2dArr = array();

//retrieve all columns without listing them explicitly, for the sort
if ($dir == 0) {
    $query = "SELECT * FROM  $table_name ORDER BY $fields[$cn]";  //ascending
} else {
    $query = "SELECT * FROM  $table_name ORDER BY $fields[$cn] DESC"; //descending
}
$result2 = mysqli_query($conn, $query);

while ($line = mysqli_fetch_array($result2, MYSQL_ASSOC)) {
  $i = 0;  // counter
  //each element in array line 
  foreach ($line as $col_value) {
    $data2dArr[$i][] = $col_value; // is stored in col value, dataarr used for display
    $i++;
  }
}

?>

首先,我将2d数组中的值打印如下:

<?php
for ($j = 0; $j < count($data2dArr[0]); $j++) {
 ?>
    <tr>
        <?php
        for ($k = 0; $k < count($fields); $k++) {
        ?>
            <td><?php print $data2dArr[$k][$j]; print $j;? </td>

        <?php
        }
        //added the Edit button here
        ?>
         <th><input type="image" src="images/edit.png" onclick="openForm()"/</th>
        <?php
 }
 ?>

在我的edit.php文件中,上面有相同的数组,但是在第二个for循环中,包含:

<td><input name="field<?php echo $k ?>" id="field<?php echo $k ?>" placeholder="<?php print $data2dArr[$k][$j] ?>" class="full-width" type="text"> </td

目的是打印包含y列的所选行x,但上述解决方案将打印出所有元素。我知道这是因为表中的所有内容都在每次迭代中都放在了input <>中,所以我不知道是如何仅打印所选行中列的字段。

例如, 在名为“学生”的表中

student_number | name | class| major  |
22             | Rick |  3   | CS     | editButton 
32             | Ross |  5   | Math   | editButton 

如果我从第二行中选择学生编号,则我希望输入的占位符具有|32|Ross|5|Math

我想知道我该怎么做?任何建议都将非常有帮助。

1 个答案:

答案 0 :(得分:0)

您的问题有点长且令人困惑,所以我认为您在打印特定内容时遇到问题 数组中的字段?

您可以尝试:

foreach($data2dArr as $key => $value){
    print $data2dArr[$key]["student_number"]."|".$data2dArr[$key]["name"]."|".$data2dArr[$key]["class"]."|".$data2dArr[$key]["major"];
}

最好减少显示代码的数量,并简要但清晰地说明您要实现的目标