За последние 24 часа нас посетил 20971 программист и 1640 роботов. Сейчас ищут 1203 программиста ...

Форма для заполнения БД PostgreSQL

Тема в разделе "Вопросы от блондинок", создана пользователем Dre, 5 июн 2007.

  1. Dre

    Dre Активный пользователь

    С нами с:
    5 июн 2007
    Сообщения:
    2
    Симпатии:
    0
    Вообщем вопрос нюбский...ну и тема для "блондинок" так сказать :) Вообщем ситуация следующая есть скрипт...вот листинг:

    <?php
    $data .= "<html>
    <body>
    <h1>Content Man</h1>
    Edit table <br>";

    #7podklu4enie mysql_connect pg_connect
    $connstr = "dbname = basa user = postgres password = postgres host = localhost port = 5432";
    $dbh = pg_connect($connstr);
    if (!$dbh)
    {
    die ("cannot connect <br>\n");
    }

    #проверка на наличие вставки
    if ($number_of_fields)
    {
    $sql = "INSERT INTO message VALUES (";
    for ($i = 1; $i < $number_of_fields - 1; $i++)
    {
    $sql .= "'${$i},' ";
    }

    $max = $number_of_fields -1;
    $sql .= "'${$max}')";
    $ret = @pg_exec($dbh, $sql) or

    die ("cannot execute UPDATE<br>\n");
    }

    # 29получение списка таблиц в базе данных
    $sql = "SELECT oid, * FROM message";
    $res= pg_exec($dbh, $sql) or
    die("cannot retrieve list of tables");

    # 34отображение списка
    $data .="<br><b>Details:</b><br>\n";
    $rows=pg_numrows($res);
    $fields=pg_numfields($res);

    #39отоброжение заголовка страницы

    $table .="<table border=3><tr>\n";
    for ($i=1; $i < $fields; $i++)
    {
    $table .="<th>".
    pg_fieldname($res, $i)."</th>";

    }
    $data .=$table."<th>action</th>\n";
    $data .= "</tr>\n";

    #51отображение данных
    $data .= '<form action="details.php" method="post">';
    for ($i = 0; $i < $rows; $i++)
    {
    $data .= "<tr>";
    $line= pg_fetch_row($res, $i);
    for ($j = 1; $j < $fields; $j++)
    {
    $data .= "<td>";
    $data .= $line[$j];
    $data .="</td>";
    }
    $data .= '<td><a href="action.php?act=delete&oid='.
    $line[0].'&tab='.message.'">Delete</a> </td>';
    $data .= "</tr>\n";
    }
    $data .="</table>";
    $data .="<br><b>Add data to the table</b><br>\n";

    #отображение ХТМЛ-кода для вставки данных
    $data .=$table;
    $data .= "<tr>";
    for ($i = 1; $i < $fields; $i++)
    {
    $data .= "<td>".
    '<input type="text" name="'.$i.'"></td>';
    }
    $data .= "</tr>\n";
    $data .= "</table>\n";
    $data .= '<input type="hidden" name="number_of_fields" '.
    "value=\"$fields\"><br><br>";
    $data .= '<input type="submit" name="submit" >';
    $data .= "</form>\n";
    echo $data, $tail;
    ?>

    Вообщем там выводится форма для просмотра и заполнения БД, и есть три текстовых полня и одна кнопка для заполнени БД. Так вот когда жму эту кнопку мне выдают ошибку

    Warning: pg_exec() [function.pg-exec]: Query failed: ERROR: syntax error at or near "','" at character 33 in C:\Program Files\Apache Group\Apache2\htdocs\1\details.php on line 26
    cannot execute UPDATE

    Я уже как только не менял код, но данные не добавляются....т.е. если тупо прописать в комманде INSERT данные например INSERT INTO message VALUES (1, '1','1')"; то все нормуль и данные добавляются, но мне нужно чтобы данные заполнялись именно через веб-форму т.е. чтобы значение подставлялись в комманду INSERT именно из этих 3-х тектовых полей с веб-формы
    П.С. Помогите разобраться пожалуйста
    П.С.С. Если есть можете даже просто выложить простенький скрипт с веб-формой для заполнения БД PostgreSQL