Как засунуть солбец таблицы БД в <select...> и <option value...>

Pawell

Новичок
Как засунуть солбец таблицы БД в <select...> и <option value...>

Вопос - я сделал выборку из бд:

$result = pg_query($conn, "SELECT devicename FROM list WHERE createdby='$author'");

как реультат в переменной $result должен иметь столбец таблицы - теперь надо этот столбец засунуть в

<select name="value1">
<option>Выберите значение</option>
<option value="field1">devicename_1</option>
<option value="field1">devicename_2</option>

в общем подскажите, как это сделать - как правильно через while это прогнать и как сделать так чтобы то, что человек быбрал в какую-нить переменную записалось...
вотъ заранее спасибо всем кто захочет помочь...
 

Фанат

oncle terrible
Команда форума
Pawell
я думаю, тебе стоит почитать вот здесь:
http://php5.ru/study
и здесь
http://phpclub.ru/detail/article/phpintro
Это хорошие статьи для начинающих, для освоения самых основ пхп.
в частности, там рассказывается, как выводить текст на экран пользователю.

да, и не забудь почитать документацию про pg_query
никакого столбца там и близко не должно быть

и заодно - на pg_fetch_row
там есть и пример
 

Pawell

Новичок
в общем вот сам файл логично сделать так:

PHP:
<?php
// Connecting, selecting database
$dbconn = pg_connect("host=localhost port=5432 dbname=testbase user=test password=test")
    or die('Could not connect: ' . pg_last_error());

//selecting
$query = 'SELECT devicename FROM devices WHERE createdby='$author'';
$result = pg_query($query) or die('Query failed: ' . pg_last_error());

echo "<table>\n";
echo "<select name="value1">\n";
echo "<option>Choose one:</option>\n";

while ($line = pg_fetch_array($result, null, PGSQL_ASSOC)) {
    echo "\t<tr>\n";
    foreach ($line as $col_value) {
        echo "\t\t<td><option value="field1">'$col_value'</option>
</td>\n";
    }
    echo "\t</tr>\n";
}
echo "</select>\n";

echo "</table>\n";

// Free resultset
pg_free_result($result);

// Closing connection
pg_close($dbconn);
?>
что я неправильно делаю??? вроде всё логично
 

Фанат

oncle terrible
Команда форума
отредактируй пост, оставь один код, и поставь в начале открывающий пхп тег
иначе читать невозможно

-~{}~ 16.04.06 19:21:

что такое field1 и $col_value?
откуда они берутся?
 

Pawell

Новичок
foreach ($line as $col_value)

это если я правильно сделал выборка элементов по-одному для цикла чтобы их все прогнать


field1 это вот честно глюк... щас подумаю что с ним сделать...
оригинал то был такой
<form>
<select name="value1">
<option>Выберите значение</option>
<option value="field1">значение№1.1</option>
<option value="field2">значение№1.2</option>
<option value="field3">значение№1.3</option>
<option value="field4">значение№1.4</option>
</select>
</form>

тут field* это значения полей, я правильно понимаю? при выборе конкретного поля выбирается именно значени field4, так? смысл - универсализировать всё это
 

Фанат

oncle terrible
Команда форума
непонятно, зачем тебе тут foreach
непонятно, зачем тебе тут таблица
скажи, ты вообще с языком HTML знаком?
 

rob72

Новичок
Зачем эти table,tr,td?
Выходной HTML будет типа того:
<table>
<select>
<tr>
<td><option>...И так много-много раз</option</td>
</tr>
</select>
</table>
Короче, дикая чушь, и понятно, что браузер ее не отобразит.
PHP не тестировал, но вроде должно работать
 

Pawell

Новичок
Фанат
скажи, ты вообще с языком HTML знаком?
ну так скажем немного... обычно работаю только со страницами без интрерактива, а тут вот пришлос интерактив осваивать и пока плохо получается :(

rob72
я торможу - зыбыл что надо всё это за пределы цикла вынести. пасиб!

вот подправил вроде всё + с ковычками разобрался:
PHP:
<?php
// Connecting, selecting database
$dbconn = pg_connect("host=localhost port=5432 dbname=testbase user=test password=test")
    or die('Could not connect: ' . pg_last_error());

//selecting
$query = "SELECT devicename FROM devices WHERE createdby='$author'";
$result = pg_query($query) or die('Query failed: ' . pg_last_error());

echo '<select name="value1">\n';
echo "<option>Choose one:</option>\n";

while ($line = pg_fetch_array($result, null, PGSQL_ASSOC)) {
    foreach ($line as $col_value) {
        echo "<option value="field1">'$col_value'</option>\n"; // это та самая 15я строчка
    }
}

// Free resultset
pg_free_result($result);

// Closing connection
pg_close($dbconn);
?>
Parse error: parse error, unexpected T_STRING, expecting ',' or ';' in /srv/www/hosts/localhost/html/pawell/request_X.php on line 15

и чего он там ожидает ',' or ';' вроде всё стоит?
 

Yo!

Новичок
echo '<select name="value1">\n';

Правильнее будет:
echo '<select name=\"value1\">\n';
 

Pawell

Новичок
блин глупая ошибка была - с кавычками промахнулся

было:
PHP:
  echo "<option value="field1">'$col_value'</option>\n";
надо:
PHP:
 echo "<option value='field1'>'$col_value'</option>\n";
теперь такой вопрос - а куда будет сохраняться выбор в такой штуке? (ещё немного оптимизировал)

PHP:
<?php
// Connecting, selecting database
$dbconn = pg_connect("host=localhost port=5432 dbname=test user=test password=test")
    or die('Could not connect: ' . pg_last_error());

//selecting
$query = "SELECT name FROM accounts WHERE del='TRUE'";
$result = pg_query($query) or die('Query failed: ' . pg_last_error());

echo '<form>';

echo '<select name="value1">';

echo "<option>Choose one:</option>";

while ($line = pg_fetch_array($result, null, PGSQL_ASSOC)) {
    foreach ($line as $col_value) {
        echo "<option value='field1'>'$col_value'</option>";
    }
}
echo '</select>';

echo '<br><br>';

echo '<input type="button" value="Make choice" onClick="dataSelect(this.form)">';

echo '</form>';

// Free resultset
pg_free_result($result);

// Closing connection
pg_close($dbconn);
?>
 

Фанат

oncle terrible
Команда форума
слово кАвычка пишется через "а".
извИните - через "и"
постарайся это запомнить

в "этой штуке" выбор никуда не будет сохраняться.
ты, похоже, проигнорировал ссылки, которые я тебе дал.
а зря.
и на вопрос - зачем тебе foreach - не ответил
 

Pawell

Новичок
слово кАвычка пишется через "а".
правописание у меня хромает - это да :eek:

ссылки я открыл и прочитал только там немного не про то - или я не совсем то читал? можешь плиз кинуть ссылку где именно говорится как в подобных случаях выбор сохранялся куда-нить, лучше бы впеременную~ $choice_01
 

nina

Новичок
foreach там на самом деле не в тему :)

ну и с кавычками тоже косяк. а чтобы значение передавалось при выборе опшена нужно его записывать в value

короче надо писать:
echo "<option value=\"".$col_value.\"">".$col_value."</option>";
 

Pawell

Новичок
я вот честно не знаю, зачем foreach просто в образце из документации оно было, я решил не менять ничего - в документации зря не напишут... или напишут? тут можно просто for использовать?
 

SelenIT

IT-лунатик :)
Pawell
Зачем "перебирать" каждую строку выборки циклом по столбцам, когда известно, что столбец у тебя один?
 
Сверху