Запись данных из выпадающего списка в базу PGSQL

DuklonuyS

Новичок
Ситуация такая.... Есть общая таблица с полями для заполнения (infa), также еще доп. таблицы с возможным выбором комнат (room), еще поля для заполнения (ФИО, ИП, Серийник моника и монитора).
Суть в том, что заполняются только те поля, что вписал "с клавы (ФИО, ИП...)" поля выбора комнаты не передаются и пишет вот это...
Notice: Undefined index: room in /usr/local/apache2/htdocs/dobavit.php on line 5
Подскажите что исправить...
вот код add.php:
PHP:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>add</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
    <form action="dobavit.php" method="POST">
<table><td>
<?php
    include "connect.php";
$result = pg_query("SELECT data FROM room order by data asc");
$table = "<select>";

while ($row = pg_fetch_assoc($result))
     
{
    $table .= "<option value>".$row['data']." </option>";
}
$table .= "</select>";
echo $table;


$result = pg_query("SELECT data FROM mon_model order by data asc");
        $table = "<select>";
        while ($row = pg_fetch_assoc($result))
{
    $table .= "<option selected value>".$row['data']." </option>";
}
        $table .= "</select>\n";
        echo $table;
                $result = pg_query("SELECT data FROM mb order by data asc");
        $table = "<select>\n";
        while ($row = pg_fetch_assoc($result))
{
    $table .= "<option selected value>".$row['data']." </option>\n";
}
?><?php
        $table .= "</select>\n";
        echo $table;
                $result = pg_query("SELECT data FROM cpu order by data asc");
        $table = "<select>\n";
        while ($row = pg_fetch_assoc($result))
{
    $table .= "<option selected value>".$row['data']." </option>\n";
}
        $table .= "</select>\n";
        echo $table;   
                $result = pg_query("SELECT data FROM video order by data asc");
        $table = "<select>\n";
        while ($row = pg_fetch_assoc($result))
{
    $table .= "<option selected value>".$row['data']." </option>\n";
}
        $table .= "</select>\n";
        echo $table;
                ?></td><td>
                <?php
                $result = pg_query("SELECT data FROM hdd1 order by data asc");
        $table = "<select>\n";
        while ($row = pg_fetch_assoc($result))
{
    $table .= "<option selected value>".$row['data']." </option>\n";
}
        $table .= "</select>\n";
        echo $table;
$result = pg_query("SELECT data FROM hdd2 order by data asc");
        $table = "<select>\n";
        while ($row = pg_fetch_assoc($result))
{
    $table .= "<option selected value>".$row['data']." </option>\n";
}
        $table .= "</select>\n";
        echo $table;
                $result = pg_query("SELECT data FROM hdd3 order by data asc");
        $table = "<select>\n";
        while ($row = pg_fetch_assoc($result))
{
    $table .= "<option selected value>".$row['data']." </option>\n";
}
        $table .= "</select>\n";
        echo $table;
                $result = pg_query("SELECT data FROM ram order by data asc");
        $table = "<select value>\n";
        while ($row = pg_fetch_assoc($result))
{
    $table .= "<option selected value>".$row['data']." </option>\n";
}
        $table .= "</select>\n";
        echo $table;
                ?>
                                 

<?php   

                ?>
                </td>
    <td> ФИО:          <input type="text" name="fio" />
      IP адрес:        <input type="text" name="ip" />
  S/N системника:    <input type="text" name="sn_sys" />
      S/N монитора:      <input type="text" name="sn_mon" /></td></table>
    <input type="submit" name="submit" />
    </form>
    <form>
        <br>
   
    </form>
</body>
</html>

Код обработчика:
PHP:
<?php
    include 'connect.php';
pg_query("INSERT INTO infa (room,fio,sn_sys,sn_mon,mon_model,mb,cpu,ram,video,hdd1,hdd2,hdd3,ip) VALUES
    ('".$_REQUEST['room']."','".$_REQUEST['fio']."','".$_REQUEST['sn_sys']."','".$_REQUEST['sn_mon']."',
        '".$_REQUEST['mon_model']."','".$_REQUEST['mb']."','".$_REQUEST['cpu']."','".$_REQUEST['ram']."',
            '".$_REQUEST['video']."','".$_REQUEST['hdd1']."','".$_REQUEST['hdd2']."','".$_REQUEST['hdd3']."',
                '".$_REQUEST['ip']."')");

?>
 
Последнее редактирование:

Andkorol

Новичок
http://phpfaq.ru/debug

Hint:
Используй кнопку "Код" в Редакторе для нормального оформления кода (с форматированием и подсветкой синтаксиса) – иначе никто твою вырвиглазно заболденную лапшу читать не будет точно.
Да ещё и с кучей левогозакомментированного кода.
 

DuklonuyS

Новичок
http://phpfaq.ru/debug

Hint:
Используй кнопку "Код" в Редакторе для нормального оформления кода (с форматированием и подсветкой синтаксиса) – иначе никто твою вырвиглазно заболденную лапшу читать не будет точно.
Да ещё и с кучей левогозакомментированного кода.
сори..
 

Andkorol

Новичок
Счас чё, иметь хоть базовые знания HTML web-разработчикам уже не нужно?

У тебя текстовые поля имеют атрибут name:
<input type="text" name="fio" />
<input type="text" name="ip" />
<input type="text" name="sn_sys" />

Вот такие же атрибуты нужно добавить в списки <select>:
<select name="room">...</select>
<select name="mon_model">...</select>
...
и так для всех списков.
 

DuklonuyS

Новичок
Счас чё, иметь хоть базовые знания HTML web-разработчикам уже не нужно?

У тебя текстовые поля имеют атрибут name:
<input type="text" name="fio" />
<input type="text" name="ip" />
<input type="text" name="sn_sys" />

Вот такие же атрибуты нужно добавить в списки <select>:
<select name="room">...</select>
<select name="mon_model">...</select>
...
и так для всех списков.
Еще вопрос... если этот кусок вносить в раздел HTML то зачем делать еще выбор если он не нужен????
А вот если в раздел PHP то ошибки ушли, но по прежнему не добавляет...
Вот пример:
PHP:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>add</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
    <form action="dobavit.php" method="POST">
<table><td>
<?php
    include "connect.php";
$result = pg_query("SELECT data FROM room order by data asc");
$table = "<select name='room'>";

while ($row = pg_fetch_assoc($result))
     
{
    $table .= "<option value>".$row['data']." </option>";
}
$table .= "</select>";
echo $table;


$result = pg_query("SELECT data FROM mon_model order by data asc");
        $table = "<select name='mon_model'>";
        while ($row = pg_fetch_assoc($result))
{
    $table .= "<option selected value>".$row['data']." </option>";
}
        $table .= "</select>\n";
        echo $table;
                $result = pg_query("SELECT data FROM mb order by data asc");
        $table = "<select name='mb'>\n";
        while ($row = pg_fetch_assoc($result))
{
    $table .= "<option selected value>".$row['data']." </option>\n";
}
?><?php
        $table .= "</select>\n";
        echo $table;
                $result = pg_query("SELECT data FROM cpu order by data asc");
        $table = "<select name='cpu'>\n";
        while ($row = pg_fetch_assoc($result))
{
    $table .= "<option selected value>".$row['data']." </option>\n";
}
        $table .= "</select>\n";
        echo $table;   
                $result = pg_query("SELECT data FROM video order by data asc");
        $table = "<select name='video'>\n";
        while ($row = pg_fetch_assoc($result))
{
    $table .= "<option selected value>".$row['data']." </option>\n";
}
        $table .= "</select>\n";
        echo $table;
                ?></td><td>
                <?php
                $result = pg_query("SELECT data FROM hdd1 order by data asc");
        $table = "<select name='hdd1'>\n";
        while ($row = pg_fetch_assoc($result))
{
    $table .= "<option selected value>".$row['data']." </option>\n";
}
        $table .= "</select>\n";
        echo $table;
$result = pg_query("SELECT data FROM hdd2 order by data asc");
        $table = "<select name='hdd2'>\n";
        while ($row = pg_fetch_assoc($result))
{
    $table .= "<option selected value>".$row['data']." </option>\n";
}
        $table .= "</select>\n";
        echo $table;
                $result = pg_query("SELECT data FROM hdd3 order by data asc");
        $table = "<select name='hdd3'>\n";
        while ($row = pg_fetch_assoc($result))
{
    $table .= "<option selected value>".$row['data']." </option>\n";
}
        $table .= "</select>\n";
        echo $table;
                $result = pg_query("SELECT data FROM ram order by data asc");
        $table = "<select  name='ram'>\n";
        while ($row = pg_fetch_assoc($result))
{
    $table .= "<option selected value>".$row['data']." </option>\n";
}
        $table .= "</select>\n";
        echo $table;
                ?>
                                 

<?php   

                ?>
                </td>
    <td> ФИО:          <input type="text" name="fio" />
      IP адрес:        <input type="text" name="ip" />
  S/N системника:    <input type="text" name="sn_sys" />
      S/N монитора:      <input type="text" name="sn_mon" /></td></table>

    <input type="submit" name="submit" />
    </form>
    <form>
        <br>
   
    </form>
</body>
</html>
 

riff

Новичок
Вот как так можно составлять вопросы:
если этот кусок вносить в раздел HTML то зачем делать еще выбор если он не нужен????
А вот если в раздел PHP то ошибки ушли
Ну хоть какая-то логика, не знаю, сцепка между предложениями, должна быть?! не говоря уже о том, что сами предложения должны быть законченными.


Научись настраивать debugger в своём редакторе, он тебе столько всего полезного покажет.
Например то, что всякие там $_REQUEST['hdd1'] у тебя поступают пустыми.
Я, конечно, не дебажил, но судя по
$table .= "<option selected value>".$row['data']." </option>\n";
так оно и есть.
Ты ведь, когда писал атрибуты тэга "option", давал себе отчёт, зачем ты их пишешь?

PHP:
pg_query("INSERT INTO infa (...) VALUES
('".$_REQUEST['room']."','".$_REQUEST['fio']."','".$_REQUEST['sn_sys']."','".$_REQUEST['sn_mon']."', ......
А ты в курсе про http://phpfaq.ru/slashes ?
И на примечание в низу обрати внимание.
 
Последнее редактирование:

DuklonuyS

Новичок
Ты ведь, когда писал атрибуты тэга "option", давал себе отчёт, зачем ты их пишешь?
Для того чтобы сделать выпадающий список не методом ручного написания вариантов выбора типа
HTML:
<select>
  <option>Пункт 1</option>
  <option>Пункт 2</option>
</select>
а для того, чтоб эти варианты брались из таблицы POSGRESQL.
Трабл в том, что не понимаю как сделать выбранный вариант переменной и отправить в обработчик...
 

Andkorol

Новичок
Трабл в том, что не понимаю как сделать выбранный вариант переменной и отправить в обработчик...
Трабл в том, что ты не понимаешь, что делаешь – и потому пытаешься править код просто методом тыка.
О работе с формами знаний практически нет – потому приобретай их.
 

riff

Новичок
Для того чтобы сделать выпадающий список...
Не правильный ответ.

Для этого
Для того чтобы сделать выпадающий список не методом ручного написания вариантов выбора типа
ты написал
Код:
<select>
  <option>Пункт 1</option>
  <option>Пункт 2</option>
</select>
А потом ты к тегам <option> добавил атрибуты "selected value".
Не просто же так ты их написал, они же что-то значат.
 

riff

Новичок
Andkorol, пример для обучения, конечно, тот ещё )
echo '...';
echo '...';
echo '...';
echo '...';
+
echo "<p><b>".$_POST['textfield']."</b></p>";
 

Andkorol

Новичок
riff, как пример для понимания принципов работы с элементами HTML-форм – вполне нормальный пример, бездумно копипастить оттуда код никто не предлагает.
Знаешь пример получше – предложи.
Очевидно же, что ТС в этом вопросе плавает – поэтому ему любой пример с комментариями будет полезен.
 
Сверху