[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: количество полей в select= значение переменной
Зодчий
Добрый день!
Возможно ли реализовать такую зависимость?
На страницу присылается переменная.И в зависимости от ее значения строится количество строк option в форме выбора.

$ports=$_POST['ports'];
/*например значение перменной равно 4-м.Тогда:*/
<form action="script.php" method="post">
<
p><select>
<
option disabled="disabled" selected="selected">Выберите:</option>
<
option value="1">1</option>
<
option value="2">2</option>
<
option value="3">3</option>
<
option value="4">4</option>
</
select></p>
<
p><input type="submit" value="Отправить"></p>
</
form>




Спустя 5 минут, 26 секунд (12.04.2011 - 15:59) panacea написал(а):
Не вижу преград. Передаешь в виде переменной количество циклов for ля создания строк
$str .= '<option value="{$i}">{$i}</option>\n';

Спустя 1 минута, 7 секунд (12.04.2011 - 16:00) waldicom написал(а):
обычный цикл
$str = '<select>';
$max = (int)$_POST['ports'];
if($max > 0){
for($i = 1; $i <= $max; $i++){
$str .= '<option value="' . $i . '">' . $i . '</option>';
}
}

$str .= '</select>';

echo $str;


пысы. panacea был быстрее.

Спустя 9 минут, 34 секунды (12.04.2011 - 16:09) Зодчий написал(а):
panacea,
waldicom, спасибо!все элементарное просто...
Еще раз убедился,что писать код надо не отвлекаясь на основную работу.

Спустя 13 дней, 17 часов, 5 минут, 38 секунд (26.04.2011 - 09:15) Зодчий написал(а):
Решил я усложнить задачу.
При построении списка сверяемся с БД -нет ли такого значения в таблице. Если есть, то не отображаем это значение.
Как я понимаю нужно сначала выбрать все значения в таблице, занести в массив, затем построить массив из приходящей переменной и сравнить их?

Спустя 1 час, 39 минут, 59 секунд (26.04.2011 - 10:55) Игорь_Vasinsky написал(а):
а не проще сразу в цикле условие написать, если совпадений не найдено то

$str .= "<option></option>"

правдпа не хорошо как то пустую опцию выставлять...

но смасл я думаю понятен

Спустя 22 минуты, 11 секунд (26.04.2011 - 11:17) Зодчий написал(а):
Пока накопал до вот этого

$res= mysql_query("SELECT `od_ports` FROM `klient` WHERE `summ_id`='$summ_id' ORDER BY `od_ports`") or die(mysql_error());
$myrow= mysql_fetch_array($res);
do
{
$port[]=$myrow['od_ports'];
}
while ($myrow = mysql_fetch_array($res));
if($max > 0)
{
for($i = 1; $i <= $max; $i++)
{
$port_od[]=$i;
}
}

$c = array_diff($port_od, $port);
print_r($c);

Дальше нужно написать select с <option> -значениями массива.

Спустя 2 часа, 43 минуты, 25 секунд (26.04.2011 - 14:01) Зодчий написал(а):
Кто-нибудь подскажет как это сделать?

Спустя 32 минуты, 2 секунды (26.04.2011 - 14:33) Зодчий написал(а):
Сделал как то так

echo "<select name=\"od_ports\">";
$res= mysql_query("SELECT `od_ports` FROM `ud_klient` WHERE `summ_id`='$summ_id' ORDER BY `od_ports`") or die(mysql_error());
$myrow= mysql_fetch_array($res);
do
{
$port[]=$myrow['od_ports'];
}
while ($myrow = mysql_fetch_array($res));
if($max > 0)
{
for($i = 1; $i <= $max; $i++)
{
$port_od[]=$i;
}
}

$c = array_diff($port_od, $port);
foreach ( $c as $c )
{
echo "<option value=\"$c\">$c</option>";
}
echo "</select>";

Спустя 3 часа, 48 минут, 33 секунды (26.04.2011 - 18:21) walerus написал(а):

foreach ( $c as $c )
{
echo "<option value=\"$c\">$c</option>";
}


И как ? работает ?, ничего что переменная одна и та же ?, хотя бы так писал ...


foreach ( $c as $c_value )
{
echo "<option value=\"".$c_value."\">".$c_value."</option>";
}


B)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.