#php #mysql
#php #mysql
Вопрос:
У меня есть 2d-массив в php, который отображает содержимое таблицы, и я смог создать значок редактирования для каждой строки. Однако у меня возникли проблемы с извлечением данных из выбранной строки.
Вот как я заполнил свой массив:
<?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 файл, у меня есть тот же массив, что и выше, но внутри 2-го цикла 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
цель состоит в том, чтобы распечатать выбранную строку x, содержащую столбцы y, но приведенное выше решение выводит все элементы. Я знаю, что это потому, что все содержимое моей таблицы помещается в мой ввод<> для каждой итерации, чего я не могу понять, так это как печатать только поля столбца из выбранной строки.
Например, из таблицы с именем Student
student_number | name | class| major |
22 | Rick | 3 | CS | editButton
32 | Ross | 5 | Math | editButton
Если я выберу номер студента из второй строки, я ожидаю, что мой заполнитель ввода будет иметь |32|Ross|5|Math
Я хотел бы знать, как мне это сделать? Любой совет был бы очень полезен.
Комментарии:
1. Вам удобно показывать образец вашего массива?
2. Хорошо, я добавил, где создается массив
Ответ №1:
Ваш вопрос довольно длинный и запутанный, поэтому я предполагаю, что у вас проблема с печатью определенного поля в массиве?
Вы можете попробовать:
foreach($data2dArr as $key => $value){
print $data2dArr[$key]["student_number"]."|".$data2dArr[$key]["name"]."|".$data2dArr[$key]["class"]."|".$data2dArr[$key]["major"];
}
Лучше показывать меньше вашего кода и кратко, но четко объяснять, чего вы пытаетесь достичь
Комментарии:
1. Если у меня есть кнопка редактирования для каждой строки, как мне извлечь данные из этой строки?
2. вы имеете в виду, как вы должны печатать строку с кнопкой редактирования вместе ?
3.
print '<td><input name="field'.$value["student_number"].'" id="field'.$value["student_number"].'" placeholder=".$data2dArr[$key]["student_number"].'|'.$data2dArr[$key]["name"].'|'.$data2dArr[$key]["class"].'|'.$data2dArr[$key]["major"].'" class="full-width" type="text"> </td>'