Используйте $ _GET вместе с $ _POST

1

Я пытаюсь опубликовать новую запись в таблице с помощью <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>
  • 0
    Если вы откроете переменную GET в верхней части скрипта, что вы получите?
  • 0
    Также, каково значение $_POST['saveRecord'] ?
Показать ещё 4 комментария
Теги:

3 ответа

2
Лучший ответ

Не утруждайте себя попыткой сделать оба сразу (переменные $ _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;
  }
}

Который должен извлечь идентификатор из имени поля и связать его с данными, введенными в форму.

  • 0
    Хорошо, что сделал свое дело. У меня есть вопрос о substr($k,10); , Я не очень хорошо с php, в этом контексте, что делает этот subtstr ?
  • 0
    У меня проблемы с хранением в массиве. Как я объяснил в своем вопросе, каждая строка имела форму. Но теперь он берет каждую newRecord из каждой строки таблицы. Таким образом создается массив, полный пустых массивов, кроме одного. Не могли бы вы показать пример?
Показать ещё 2 комментария
1

Имя вашей кнопки

name="saveRecord<?php echo $id; ?>

Для этого условия требуется $id

  if (isset($_POST['saveRecord'])) {// your id missing
  • 0
    Это было то, что я пробовал раньше. Я получил ошибку, потому что тут $id неизвестно, так как он находится над <html> . Вот почему я ищу способ использовать $_GET .
  • 0
    Что вы видите с var_dump($_GET, $_POST) ? if (isset($_POST['saveRecord'].$_GET['record'])) { точнее, точнее.
0

переместите ваши открывающие и закрывающие теги формы в цикле while, он будет отправлять только одну форму за раз, иначе все входы будут отправлены.

  • 0
    Нелегально размещать <form> внутри стола. Вот почему я использую id вместо этого.
  • 0
    Вы не можете использовать JQuery или некоторые методы AJAX?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню