Я пытаюсь создать динамическую таблицу e, из которой будут извлекаться данные, и я могу редактировать любое значение, которое я хочу

#php #mysql

#php #mysql

Вопрос:

Я могу получить данные, но кнопка отправки не работает. Меня смущает запрос на обновление и хранение данных в массиве. Вот код для извлечения и отображения данных в таблице.

      `<?php
           while ($rows=mysqli_fetch_assoc($result)){ ?>
               <tr>
               <td align="center">
               <?php $id[]=$rows['id']; ?><?php echo $rows['id']; ?>
               </td>
               <td align="center">  
               <input name="name[]" type="text" id="name" value="<?=$rows['name']; ?>">
               </td>
               <td align="center">
               <input name="lastname[]" type="text" id="lastname" value="<? =$rows['lastname']; ?>">
               </td>
               <td align="center">
               <input name="email[]" type="text" id="email" value="<?=$rows['email']; ?>">
               </td>
               </tr>
 

`

Вот код для кнопки отправки

 if ($_SERVER["REQUEST_METHOD"] == "POST" amp;amp; $_POST["Submit"] != ""){
    $count = mysqli_num_rows($result);
        for($i=0;$i<$count;$i  ){
            $sql2="UPDATE test_mysql SET name='".$_POST["name"][$i]."',lastname='".$_POST["lastname"][$i]."', email='".$_POST["email"][$i]."' WHERE id='$id[$i]'";
            $result1=mysqli_query($con, $sql2);
        }
header("Location: update-multiple-2.php");
 

}

Комментарии:

1. моим первым отладочным тестом было бы echo $sql2; проверить, правильно ли это выглядит

2. Ошибка: неопределенная переменная. Почти уверен, что что-то не так с запросом обновления или хранением данных. Я застрял с запросом на обновление почти на 6 часов. Не удалось выяснить, что не так. Спасибо за вашу помощь. @nogad

3. проверяли ли вы , действительно ли вы попадаете в это состояние ?

4. Постоянно отображаются две ошибки (обратите внимание: использование неопределенной константы sql2 и Обратите внимание: неопределенная переменная: test_mysql ). Да, скрипт попадает внутрь цикла, и цикл for работает нормально. @nogad

Ответ №1:

Если вы обрабатываете POST после вывода формы (для установки переменной $id ), а переменная $test_mysql устанавливается в существующую таблицу в вашей базе данных, и все столбцы существуют, и вы единственный, кто может добавить или удалить строку (потому что это изменит $id переменную), тогда это должно сработать.

Возможно, это могло бы помочь:

 if(!$result1=mysqli_query($con, $sql2)){
    echo 'Error: '.mysqli_error();
}
 

Вам нужно как-то отладить это:

 if ($_SERVER["REQUEST_METHOD"] == "POST" amp;amp; $_POST["Submit"] != ""){
    $count = mysqli_num_rows($result);
    $error = '';
    for($i=0;$i<$count;$i  ){
        $sql2="UPDATE $test_mysql SET name='".$_POST["name"][$i]."',lastname='".$_POST["lastname"][$i]."', email='".$_POST["email"][$i]."' WHERE id='$id[$i]'";
        if(mysqli_query($con, $sql2) === FALSE){
            $error .= 'SQL query failed, SQL: '.$sql2.', Error: '.mysqli_error() . "n";        
        }
    }

    if(!$error){
        header("Location: update-multiple-2.php");
    }else{
        echo $error;
        exit();
    }
}
 

Комментарии:

1. возможно, из-за заголовка местоположения

2. следуйте сообщениям об ошибках, печатайте значение $count , $id , $sql2 чтобы проверить, все ли с ними в порядке (после их установки), переменная $result должна быть установлена правильно $count , и если вы перенаправляете страницу, вы не можете увидеть вывод, поэтому прокомментируйте расположение заголовка для отладки