2013-08-05 3 views
0

Это код именования, что у меня есть:Вызов динамически с именем ввода текста PHP

<?php 
    for ($i=1; $i<=$housingcount; $i++){ 
     echo '<input onchange="myFunction(value)" size="',11,'" type="text" name="cavqty',$i,'" id="hous',$i,'"/>';} 
    ?> 

Где $housingcount просто количество строк, запрашиваемых из базы данных ($housingcount=mysql_num_rows($result)).

И туРипсЫоп не очень важно для контекста этого вопроса, потому что это всего лишь простая функция суммирующий, но в любом случае это выглядит следующим образом:

<script> 
    function myFunction(tBox) 
    { 
    var sum=0; 
    var elts = document.getElementsByTagName('input'); 
    for (var i=0; i<elts.length; i++) { 
     var elt=elts[i]; 
     if (elt.id && elt.id.indexOf('hous')===0 sum += Number(elt.value); 
    document.getElementById('sum').innerText=sum; 
    } 
    </script> 

Так на основе кода PHP число текстовых полей изменения в зависимости от количества корпусов в этом случае. Поэтому текстовые поля называются динамически (cavqty1, cavqty2, cavqty3, ...), в результате чего итерация включена. Теперь этот метод именования вызвал у меня много проблем, потому что я понятия не имею, как вызывать имена текстовых полей, чтобы использовать их для другой функции.

После исследования я подумал, что мне придется вынудить их в массив и просмотреть каждую отдельную строку по одному с помощью инструкции foreach, но это не сработало. Увы, я очень сильно потрясен этой динамичной игрой.

Мой вопрос для вас: как я могу назвать динамически названные текстовые поля, поэтому я могу использовать их в других функциях?

+0

Ваш оператор 'if' неверно закрыт. Если не опечатка – swapnesh

+0

Знаете ли вы, что существует синтаксическая ошибка HTML в свойстве' name'? – Flosculus

+0

в порядке javascript часть этого кода работает отлично, возможно, просто опечатки на этом, потому что меня это действительно не беспокоило из-за того, что здесь это не очень важно. Это было больше введено только для людей, спрашивающих, что такое myFunction: – user2618927

ответ

0

Try:

<?php 
for ($i=1; $i<=$housingcount; $i++){ 
    echo '<input onchange="myFunction(value)" size="',11,'" type="text" name="cavqty[]" id="hous',$i,'"/>'; 
} 
?> 

Затем с другой стороны, вы можете использовать:

if(isset($_POST["cavqty"])){ 
    foreach($_POST["cavqty"] as $cavqty){ 
     echo $cavqty; 
    } 
} 

Или просто: $_POST["cavqty"][0] для конкретных значений.

+0

, он говорит undefined index и warning: недопустимый аргумент, предоставленный foreach() – user2618927

+0

Я не хочу, чтобы определенные значения мне нужно быть в состоянии вытащить все значения с этим префиксом имени – user2618927

+0

Я его отредактировал, попробуйте сейчас. Также вам действительно нужно увеличить id? Почему бы просто не использовать класс. –

Смежные вопросы