我在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
我想知道我该怎么做?任何建议都将非常有帮助。
答案 0 :(得分:0)
您的问题有点长且令人困惑,所以我认为您在打印特定内容时遇到问题 数组中的字段?
您可以尝试:
foreach($data2dArr as $key => $value){
print $data2dArr[$key]["student_number"]."|".$data2dArr[$key]["name"]."|".$data2dArr[$key]["class"]."|".$data2dArr[$key]["major"];
}
最好减少显示代码的数量,并简要但清晰地说明您要实现的目标