Данные из формы не добавляются в таблицу базы данных с помощью php - PullRequest
0 голосов
/ 26 октября 2019

Я использую сервер Xampp и хочу добавить данные в таблицу базы данных. Я не знаю, что я делаю здесь не так. Сервер запущен и работает. Данные из поля выбора не вставляются в базу данных. Я новичок в php.

Редактировать: я отредактировал свой код. Я получаю эту ошибку:

Запрошенный URL не найден на этом сервере. Ссылка на ссылающейся странице кажется неправильной или устаревшей. Пожалуйста, сообщите автору этой страницы об ошибке.

Test.php

<form name="form2" action= "Sub.php" method="post">

<table style="width:100%">
        <thead>
        <tr>
          <th style="width:25px;">Section</th>
          <th style="width:250px;">Definition</th> 
          <th style="width:30px;">Sub Process</th>
          <th style="width:35px;">Response</th>
          <th style="width:30px;">Area</th>
          <th style="width:30px;">Rating</th>
          <th style="width:40px;">Comments</th>
          <th style="width:40px;">Improvement Plan</th>
        </tr>
    </thead>

    <tbody>
        <tr class="data">
          <td>1.</td>
          <td style="width:500px;">Does Problem Management adheres to incident analysis and trending to identify the problem?</td>
          <td>Problem Detection</td>
          <td>
               <select name="Response[]">


                    <option >--Select Function--</option>
                    <option value="Defined">Defined</option>
                    <option value="Defined and Followed Completely without Automation">
                        Defined and Followed Completely without Automation</option>
                    <option value="Defined and Followed Partially without Automation">
                        Defined and Followed Partially without Automation</option>
                    <option value="Not Defined">
                            Not Defined</option>
                    <option value="Process Present but not followed">
                            Process Present but not followed</option>
                    <option value="Yes">Yes</option>
                    <option value="Not Applicable">Not Applicable</option>

                </select>
          </td>        
          <td>
            <select name="Area[]">        
                <option >--Select Area--</option>
                <option value="Process">Process</option>
                <option value="Tool">Tool</option>
           </select>
          </td>
          <td>
            <select name="Rating[]">        
                <option value="0">--Select Rating--</option>
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
                <option value="4">4</option>
                <option value="5">5</option>
                <option value="6">6</option>
                <option value="7">7</option>
                <option value="8">8</option>
                <option value="9">9</option>
                <option value="10">10</option>
           </select>
          </td>
          <td>
            <textarea style="width:80px;" name = "Comments[]" placeholder="Please Provide Comments"></textarea>
          </td>

          <td>
            <textarea style="width:80px;" name = "ImpPlan[]" placeholder="Please suggest Improvements"></textarea>
          </td>
        </tr>


    <tr class="data">
          <td>2.</td>
          <td style="width:500px;">Are reactive and proactive problem management understood by teams?</td>
          <td>Problem Detection</td>
          <td>
               <select name="Response[]">        

                    <option>--Select Function--</option>
                    <option value="Defined">Defined</option>
                    <option value="Defined and Followed Completely without Automation">
                        Defined and Followed Completely without Automation</option>
                    <option value="Defined and Followed Partially without Automation">
                        Defined and Followed Partially without Automation</option>
                    <option value="Not Defined">
                            Not Defined</option>
                    <option value="Process Present but not followed">
                            Process Present but not followed</option>
                    <option value="Yes">Yes</option>
                    <option value="Not Applicable">Not Applicable</option>

                </select>
          </td>        
          <td>
            <select name="Area[]">        
                <option>--Select Area--</option>
                <option value="Process">Process</option>
                <option value="Tool">Tool</option>
           </select>
          </td>
          <td>
            <select name="Rating[]">        
                <option value="0">--Select Rating--</option>
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
                <option value="4">4</option>
                <option value="5">5</option>
                <option value="6">6</option>
                <option value="7">7</option>
                <option value="8">8</option>
                <option value="9">9</option>
                <option value="10">10</option>
           </select>
          </td>
          <td>
            <textarea style="width:80px;" name = "Comments[]" placeholder="Please Provide Comments"></textarea>
          </td>

          <td>
            <textarea style="width:80px;" name = "ImpPlan[]" placeholder="Please suggest Improvements"></textarea>
          </td>
        </tr>
</table>
<br><br><br>

<input type="submit" value="Submit">        
</form>

Sub.php

<?php
$Response1=$_POST['Response'][0];
$Area1=$_POST['Area'][0];
$Rating1=$_POST['Rating'][0];

$Response2=$_POST['Response'][1];
$Area2=$_POST['Area'][1];
$Rating2=$_POST['Rating'][1];

$Comments=$_POST['Comments'];
$ImpPlan=$_POST['ImpPlan'];

$servername= 'localhost';
$username = 'root';
$password = '';
$dbname = 'db1';
$port = 3306;

$conn = new mysqli($servername, $username, $password, $dbname, $port);

echo "Connection successful!" . "<bc>";

$conn->query('CREATE TABLE IF NOT EXISTS `problemdet` (Response VARCHAR(100) NOT NULL, Area VARCHAR(100) NOT NULL, Rating VARCHAR(15) NOT NULL, Comments VARCHAR(100) NOT NULL,    ImprovementPlan VARCHAR(100) NOT NULL);');

$sql = "INSERT INTO problemdet (Response, Area, Rating, Comments, ImprovementPlan)
 VALUES ('$Response1', '$Response2', '$Area1', '$Area2', '$Rating1','$Rating2','$Comments', '$ImpPlan')";

if($conn->query($sql) === TRUE){

    echo "New record created successfully";
} else {
    echo "<bc> Error: " .  $sql . "<br>" . $conn->error;
}

$conn->close();

?>

1 Ответ

0 голосов
/ 26 октября 2019

В Sub.php вы пропустили кавычки 'в этой строке за $ Comments

$sql = "INSERT INTO problemdet (Response, Area, Rating, Comments, ImprovementPlan) VALUES ('$Response', '$Area', '$Rating', 
'$Comments', '$ImpPlan')";

в Test.php вы пропустили атрибут name для select и поместили его в тег option, поэтому измените его на

<select name="Response[]">        

       <option >--Select Function--</option> ...

из

<select>        

        <option name="Response">--Select Function--</option> ...

в Test.php у вас есть несколько входов с одинаковым атрибутом имени, а в Sub.php вы получите только одно значение, поэтому измените имена в атрибуте имени намассив

<select name="Response[]"> ...
<textarea name = "Comments[]"> ...

Тогда:

$_POST['Response'][0] 
$_POST['Response'][1]
$_POST['Comments'][0]
$_POST['Comments'][1]
//and so on if you have to many you can write it in a loop

Редактировать с объяснением

вы должны указать браузеру, что атрибут name (в вашем случае ответа)) является массивом (поскольку существует несколько входов select с одним и тем же атрибутом name - response, следовательно, это должен быть response [])

, чем в php вы должны извлекать значение из массива один за другим (например, $ _POST ['Response'] [0], $ _ POST ['Response'] [1], .. upto count ($ _ POST ['response']))

пример в вашем случае

<select name="Response[]">
    <option value="first_0">first</option>
    <option value="second_0">second</option>
    <option value="third_0">third</option>
</select>

<select name="Response[]">
    <option value="first_1">first</option>
    <option value="second_2">second</option>
    <option value="third_3">third</option>
</select>

если вы выбираете третий_0 из 1-го выбора и второй_2 из 2-го, что при извлечении значений в php

echo $get_select_value_1 = $_POST['Response'][0];
echo $get_select_value_2 = $_POST['Response'][1];

//output will be
third_0 //--$get_select_value_1
second_2 //--$get_select_value_2

Редактировать 2 - вставить несколько значений для одного и того же столбца

$Response1 = $_POST['Response'][0];
$Response2 = $_POST['Response'][1];

$sql = "INSERT INTO problemdet (Response) VALUES ('$Response1'),('$Response2')";//upto so on

Редактировать 3 - тестовый код

<!DOCTYPE html>
<html>
<head>
    <title>test</title>
</head>
<body>
<form name="form2" action= "register.php" method="post">
    <select name="Response[]">
    <option value="first_0">first</option>
    <option value="second_0">second</option>
    <option value="third_0">third</option>
</select>

<select name="Response[]">
    <option value="first_1">first</option>
    <option value="second_2">second</option>
    <option value="third_3">third</option>
</select>
<input type="submit" name="submit">
</form>

</body>
</html>

sub.php

<?php
if(isset($_POST['submit'])){
    echo $Response1 = $_POST['Response'][0];
echo $Response2 = $_POST['Response'][1];
}

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...