Я пытаюсь опубликовать новую запись в таблице с помощью <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
. Но каждая строка в моей таблице имеет уникальный идентификатор, и этот идентификатор помещается рядом с каждым name
. Поэтому я пытаюсь получить идентификатор с $_GET
но пока это было неуспешно. Является ли метод, который я пытаюсь сделать неправильно, или я делаю что-то еще неправильно? Если кто-нибудь скажет мне, что происходит не так, я бы оценил.
PHP, который помещается над <html>
<?php
if (isset($_POST['saveRecord'])) {
if (isset($_POST["newRecord"]) && !empty($_POST["newRecord"])) {
$id = $_GET['record'];
$klant=$_POST['newRecord'].$id;
$query = "INSERT INTO table2
(recordid, recordname)
VALUES
(NULL, '$record')";
mysqli_query($con, $query);
}
}
?>
наценка
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table>
<?php
$query = ("select * from table1");
$result = mysqli_query($con, $query) or die (mysqli_error());
while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
$id = $row['rowid'];
?>
<tr>
<td>
<input class="newRecord<?php echo $id; ?>" type="text" name="newRecord<?php echo $id; ?>" />
<a href="?record=<?php echo $id; ?>">
<button class="saveRecord<?php echo $id; ?>" name="saveRecord<?php echo $id; ?>">Save</button>
</a>
</td>
</tr>
<?php } ?>
</table>
</form>
Не утруждайте себя попыткой сделать оба сразу (переменные $ _GET будут переданы, только если они включены в действие формы).
Сценарий не будет забирать записи из $ _POST, так как имена полей имеют идентификатор, включенный в них.
Либо создайте каждую запись как отдельную форму (переместите всю партию внутри цикла WHILE), либо вы можете использовать идентификатор, хранящийся внутри имени поля, например:
$newdata = array();
foreach($_POST as $k => $v) {
if ((substr($k,0,9) == 'newRecord') && (!empty($v)) {
$id = substr($k,9);
$klant = $v;
$newdata[$id] = $klant;
}
}
Который должен извлечь идентификатор из имени поля и связать его с данными, введенными в форму.
substr($k,10);
, Я не очень хорошо с php, в этом контексте, что делает этот subtstr
?
newRecord
из каждой строки таблицы. Таким образом создается массив, полный пустых массивов, кроме одного. Не могли бы вы показать пример?
Имя вашей кнопки
name="saveRecord<?php echo $id; ?>
Для этого условия требуется $id
if (isset($_POST['saveRecord'])) {// your id missing
$id
неизвестно, так как он находится над <html>
. Вот почему я ищу способ использовать $_GET
.
var_dump($_GET, $_POST)
? if (isset($_POST['saveRecord'].$_GET['record'])) {
точнее, точнее.
переместите ваши открывающие и закрывающие теги формы в цикле while, он будет отправлять только одну форму за раз, иначе все входы будут отправлены.
<form>
внутри стола. Вот почему я использую id
вместо этого.
$_POST['saveRecord']
?