Проблема PHP GET - данные формы $ _GET отсутствуют - PullRequest
1 голос
/ 11 января 2011

У меня есть простая форма PHP, которая отображает входные данные со значениями из базы данных mysql и отправляет результаты формы на другую страницу, которая обновляет таблицу БД на основе результатов GET:

echo "<table>";
echo "<tr>";
echo "      <th>Project No</th>
    <th>Customer Name</th>
    <th>Description</th>
  </tr>";

  while($row = mysql_fetch_array($result))
  {     
    echo "<tr>";
    echo "<td><input value=" . $row['project_no'] . "></input></td>";
    echo "<td><input value='" . $row['cust_name'] . "'></input></td>";
    echo "<td><input value='" . $row['description'] . "'></input></td>";
    echo "</tr>";
  }
echo "</table>";
echo "<input type='submit' value='Update' />";
echo "</form>";

В updateprojects.php, когда я делаю:

echo $_GET['project_no'].$_GET['cust_name'].$_GET['description'];   

Я не вижу никаких значений. Почему это?

Ответы [ 9 ]

4 голосов
/ 11 января 2011

В поле ввода необходимо указать имя параметра с атрибутом «name».

echo "<tr>";
echo "<td><input name=\"project_no\" value=" . $row['project_no'] . "></input></td>";
echo "<td><input name=\"cust_name\" value='" . $row['cust_name'] . "'></input></td>";
echo "<td><input name=\"description\" value='" . $row['description'] . "'></input></td>";
echo "</tr>";
3 голосов
/ 11 января 2011

Это потому, что вы не назначаете имена входным тегам:

echo "<td><input name=\"project_no\" value=\"" . $row['project_no'] . \"></input></td>

Выше должно работать.

3 голосов
/ 11 января 2011

Вы забыли вводимые имена:

<td><input name='project_no' value=" . $row['project_no'] . "></input></td>

Если вы этого не сделаете, php не знает, что вы подразумеваете под 'project_no'. Каждому входу нужно имя.

1 голос
/ 11 января 2011

Поскольку вы создаете входные данные формы с помощью цикла, это должно работать для вас (у вас не может быть 2 полей ввода с одинаковым именем), просто извлеките идентификатор строки / записи из базы данных:

echo "<form method='get' action='updateprojects.php'>";
                echo "<table>";
                echo "<tr>";
                echo "      <th>Project No</th>
                        <th>Customer Name</th>
                        <th>Description</th>
                    </tr>";

                while($row = mysql_fetch_array($result))
                    {       
                        echo "<tr>";
                        echo '<td><input value="' . $row['project_no'] .'" name="form['.$row['id'].']['project_no']"/></td>';
                        echo '<td><input value="' . $row['cust_name'] .'" name="form['.$row['id'].']['cust_name']"/></td>';
                        echo '<td><input value="' . $row['description'] .'" name="form['.$row['id'].']['description']"/></td>';
                        echo "</tr>";
                    }
                echo "</table>";
                echo '<input type="submit" name="submit" value="Update" />';
                echo "</form>";

if(isset($_GET['submit'])){
    foreach($_GET['form'] as $id=>$column){

        //update your database where id=$id. This is just testing
        echo 'Row '.$id .' =>'. $column['project_no'].'-'.$column['cust_name'].'-'.$column['description'];

    }
}
1 голос
/ 11 января 2011

Ваши входы не имеют атрибута name

0 голосов
/ 11 января 2011

Мне кажется, вам нужно иметь имя = "имя_проекта" в вашем вводе HTML.

0 голосов
/ 11 января 2011

Пожалуйста, сообщите тип отправки или скрытый текст.И / или убедитесь, что вы возвращаете данные из SQL-запроса.

0 голосов
/ 11 января 2011

Что-то, что помогло мне в прошлом, - это использовать вкладку Net в Firebug и включить опцию Persist, чтобы увидеть, что браузер действительно отправляет обратно. В одном случае форма содержала повторяющиеся записи для некоторых полей, но вторая запись не отправляла правильные значения.

0 голосов
/ 11 января 2011

Вам необходимо добавить атрибут name="" к вашим входам.

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