|
|
|
| Задача такая, что есть таблица "test_table":
id - int(2)
flower - set('роза','пион','ромашка','фиалка')
color - set('белый','красный','тёмный','оранжевый')
пример заполнения таблицы:
1 пион белый
2 роза красная
3 фиалка тёмная и т.д.
надо вывести содержимое таблицы в виде таблицы:
№ наимен цвет
но чтобы поля наимен и цвет были б в виде списков, т.е. чтобы можно было выбрать другое значение цветка или его цвета и потом записать уже новое в базу. | |
|
|
|
|
|
|
|
для: lilu
(17.05.2006 в 09:48)
| | Цветы и цвета только такие или предполагается добавления новых (или удаления ненужных)? | |
|
|
|
|
|
|
|
для: WebTech
(17.05.2006 в 11:39)
| | нет новые цветы и цвета будут добавляться через базу а не через форму пользователя, т.е. это будет довольно редко а у того, кто будет обслуживать эту программу задача только менять комбинации значений, выбирая из списков доступных значений | |
|
|
|
|
|
|
|
для: lilu
(17.05.2006 в 09:48)
| | А почему в виде выпадающего списка, а не набора флажков? Ведь под выпадающие списки обычно заводят поля типа ENUM, а не SET? | |
|
|
|
|
|
|
|
для: cheops
(17.05.2006 в 12:17)
| | про цветы и их цвета - это только пример, на самом деле тематика другая и по 10 значений, выпадающий список-это экономия места.
enum использовать-хорошо поправлюсь, не знала, но это проблемы не решает.
Я тут набросала примерный код, но криво он работает- в списках выводятся по одному значению(не первому из списка, а текущее значение в данном столбце таблицы):
<?
$rez = mysql_query("SELECT * FROM test_table");
$flower=mysql_query("select distinct flower from test_table");
while($myfl=mysql_fetch_array($flower)){echo $myfl[0]."<br>";}
if($rez)
{ echo "<table border=1>\n";
echo "<tr><td>№</td><td>наименование</td><td>цвет</td></tr>";
while($myrow=mysql_fetch_array($rez))
{ ?>
<tr><td><? echo $myrow[0];?></td>
<td> <select size='1'> <option selected><? echo $myrow[1]; ?></option><option><? echo $myfl[0]; ?></option><br>
</select>
</td>
<td><select size='1'><option><? echo $myrow[2];?></option></select></td>
</tr><br>
<? }
echo "</table>\n";
}
?>
|
| |
|
|
|
|
|
|
|
для: lilu
(18.05.2006 в 09:35)
| | А автоматизировать процесс формирования выпадающего списка вряд ли получится, придётся явно его писать в коде
<?php
$rez = mysql_query("SELECT * FROM test_table");
if(!$rez) exit(mysql_error());
if(mysql_num_rows($rez) > 0)
{
while($table=mysql_fetch_array($rez))
{
<select>
<option value='белый' <?php if($table['flower'] =='белый') echo "selected"; ?>>белый</option>
<option value='красный' <?php if($table['flower'] =='красный') echo "selected"; ?>>красный</option>
<option value='тёмный' <?php if($table['flower'] =='тёмный') echo "selected"; ?>>тёмный</option>
<option value='оранжевый' <?php if($table['flower'] =='оранжевый') echo "selected"; ?>>оранжевый</option>
<selected><br>
<?php
}
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(18.05.2006 в 12:17)
| | Ну почему же... можно и автоматизировать...
<?
include 'config.inc.php';
$query = "Show columns from test_table like 'flower'";
if(($res = mysql_query($query)) == 0)
die ("Error in $query - ".mysql_error());
$type = mysql_result($res, 0, 'Type');
$flower = explode(',', substr(strstr($type, '('), 1, -1));
foreach($flower as $key => $val)
$flower[$key] = stripslashes(substr($val, 1, -1));
$query = "SELECT * FROM test_table";
if(($res = mysql_query($query)) == 0)
die ("Error in $query - ".mysql_error());
if(mysql_num_rows($res) > 0)
{
while($table=mysql_fetch_array($res))
{
echo '<select>';
foreach($flower as $elem)
{
$sel = $table['flower'] == $elem ? 'selected ' : ' ';
echo "<option value='$elem' $sel >$elem</option>\r\n";
}
echo "</select>\r\n";
}
}
?>
|
| |
|
|
|
|
|
|
|
для: Trianon
(18.05.2006 в 15:40)
| | КРУТО, вот то что надо, спасибочки! | |
|
|
|