Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите пожалуйста с кодом!
 
 автор: 4eSTAR   (17.12.2007 в 03:47)   письмо автору
 
 


$det='5';

<script language="javascript">
function Display(which) {
<? for($r=1;$r<=$det;$r++) { ?> 
b<?echo $r;?>=document.getElementById('<?echo $r;?>');
<?}
for(
$r=1;$r<=$det;$r++) { ?> 
if (which=="<?echo $r;?>") b<?echo $r;?>.style.display="block";
    else b<?echo $r;?>.style.display="none";
<?}?>
}
</script>


<select name="klchil">
<option value="0" onClick="javascript:Display('0');">кол-во</option>
<? for($i=1;$i<=$det;$i++) {?>
<option value="<?echo $i;?>" onClick="javascript:Display('<?echo $i;?>');"><?echo $i;?></option>
<?}?>
</select>

<? for($f=1;$f<=$det;$f++) {?>
<div ID="<?echo $f;?>" style="display:none;">
<? for($d=1;$d<=$f;$d++) {?>
<select name="cpol_<?echo $d;?>">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<?}?>
</div>
<?}?>


скрипт правельно отсылает пост переменные
$_POST['cpol_1'] $_POST['cpol_2']$_POST['cpol_3']$_POST['cpol_4']$_POST['cpol_5']
только в случаи когда (div) ID=5
в остальных случаях присваивает переменным значение = 0
почему?

   
 
 автор: sim5   (17.12.2007 в 06:02)   письмо автору
 
   для: 4eSTAR   (17.12.2007 в 03:47)
 

А HTML-код, который у вас в результате получается, не смотрели? В нем ответ.

<script language="javascript"> 
function shDisplay(which) { 
if (which) { 
 var ob = document.getElementById(which).style;
 if (ob.display=="none") 
  ob.display="block";
   else ob.display="none";
 }

</script> 

<?
$det
=5
?>

<select name="klchil" ONCHANGE="shDisplay(this.value)"> 
<option value="">кол-во</option>
<? for($i=1;$i<=$det;$i++) {?> 
<option value="<?=$i;?>"><?=$i;?></option> 
<?}?> 
</select> 

<? for($f=1;$f<=$det;$f++) {?> 
<div ID="<?=$f;?>" style="display:none;"> 
<select name="cpol_<?=$f;?>"> 
<option value="0">0</option> 
<option value="1">1</option> 
<option value="2">2</option> 
</select> 
</div> 
<?}?>

   
 
 автор: 4eSTAR   (17.12.2007 в 13:02)   письмо автору
 
   для: sim5   (17.12.2007 в 06:02)
 

ваш скрипт выполняет неверное действие, при выборе klchil=5 должны открыца
cpol_1 cpol_2 cpol_3 cpol_4 cpol_5

а открывается только cpol_1

   
 
 автор: sim5   (17.12.2007 в 13:33)   письмо автору
 
   для: 4eSTAR   (17.12.2007 в 13:02)
 

Мой скрипт выполянет все как надо (согласно сценария), и написан затем, чтобы вы поняли проблему своего кода - у вас элементов SELECT с одинаковым именем по несколько штук получается. Как вы думаете, что вы получите в массиве на сервере при отправке формы? Вы не верно выбрали принцип формирования этих эелементов, а JS-сценарий совсем не нуждается в поименном перечислении элементов, которыми нужно управлять, потому РНР цикл в нем излишен. Собственно можно изменить приведенный мной JS-сценарий так, чтобы он выводил элементы SELECT так как вам нужно.

   
 
 автор: 4eSTAR   (17.12.2007 в 13:40)   письмо автору
 
   для: sim5   (17.12.2007 в 13:33)
 

Подскажите пожалуйсто как, просто я не изучал ява скриптинг а работающий скрипт нужно здать в конце рабочего дня :(
пожалейте меня, подскажите пожалуйсто ;)

   
 
 автор: sim5   (17.12.2007 в 14:16)   письмо автору
 
   для: 4eSTAR   (17.12.2007 в 13:40)
 


<script language="javascript">
function shDisplay(which) {  
 if (which) {  
   for (i=1; i<<?=$det;?>+1; i++) {
      if (i <= which) document.getElementById(i).style.display="block"; 
      else document.getElementById(i).style.display="none";
   }       
 } 
}  
</script>

Ксати, чтобы скрыть/показать SELEST, совсем не обязательно его заключать в DIV, можно аналогичо управлять стилями самих селектов непосредственно.

   
 
 автор: 4eSTAR   (17.12.2007 в 14:41)   письмо автору
 
   для: sim5   (17.12.2007 в 14:16)
 

ОГРОМНОЕ ВАМ СПАСИБО!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования