|
|
|
| Есть рабочий код, подправленный частично под мои нужды, но он работает только с простыми переменными, а не из массива:
<table>
<?
$Items = array(350);
for ($i = 0; $i < count($arItems); $i++)
{
echo $Items[$i];?> <?
?>
<tr>
<td width="600">
<form name=forma>
<input type="text" name="name1" onKeyup=copyfun() size="4"> x <? echo intval($Items[$i])?> = <input type="text" name="name2" size="4"><br>
<input type="hidden" name="name3" value="<? echo intval($Items[$i])?>"><br>
</form>
<script language="javascript">
function copyfun()
{
document.forma.name2.value=document.forma.name1.value*document.forma.name3.value;
}
</script>
</td>
</tr>
<?
}?>
</table>
|
т.е. здесь вначале задан массив, но при количестве элементов массива более 2, код не работает. Я так предполагаю (хотя могу и ошибаться, поскольку и в JScript и в РНР слабак), что виной всему document.forma.nameX.value - имя INPUT тэга. Вне ЯВА-кода его я могу менять без проблем, а вот в самом ЯВА-коде не получается. Т.е. в идеале строчки в ЯВА коде document.forma.name2.value должны бы содержать РНР-переменную из массива которая определяет и INPUT -> name="QUANTITY_<? echo $arItems[$i]["ID"]?>".
Так вот, как мне запихнуть переменную массива <? echo $arItems[$i]["ID"]?> в строчку document.forma.nameX.value в ЯВА скрипте.
P.S. просмотрел форум и не один, а ответ пока на свой вопрос не нашел...
Подскажите пожалуйста!!! | |
|
|
|
|
|
|
|
для: lobarev
(02.02.2006 в 16:16)
| | Что содержится в массиве $arItems? И вообще, что должен делать этот скрипт? | |
|
|
|
|
|
|
|
для: WebTech
(02.02.2006 в 17:06)
| | Изначально это корзина для заказа товара, т.е. когда покупатель прошелся по каталогу и набрал товара, он попадает в корзину для дальнейших действий -> исправление (удаление, изменение кол-ва и т.д.), продолжение оформления.
Данная строчка, которую нужно модифицировать, указывает количество заказанного товара.
Исходный рабочий код поштучного заказа:
<?
for ($i = 0; $i<count($arItems); $i++)
{
?>
<tr>
<td class="tablebody">
..... дополнительные параметры корзины .....
</td>
<td class="tablebody">
<font class="tablebodytext"><input type="text" class="inputtext" name="QUANTITY_<? echo $arItems[$i]["ID"] ?>" value="<? echo $arItems[$i]["QUANTITY"]?>" size="3"> шт.</font>
</td>
<td class="tablebody">
..... дополнительные параметры корзины .....
</td>
</tr><?
}?>
|
где $arItems - массив характеристик покупаемого товара в корзине (его ID, цена, кол-во и т.д.). В частности $arItems[$i]["QUANTITY"] и есть количество заказываемого товара. Но есть одна проблема, в силу особенности нашего товара и специфики нашей фирмы (оптовая) некоторые позиции продаются только коробками (батарейки), все остальное можно покупать поштучно. Сразу забить в базу продажу чего то поштучно, а чего то коробками не представляется возможным в силу особенностей движка (БИТРИКС), а потому и приходится изголяться. Вот эти изменения и должны посредством ЯВА перед обновлением страницы (т.е. перед отсылкой формы) изменять кол-во батареек кратно их количеству в коробках, которое задается свойством товара определенном в ячейке массива $props["QUANTITY_SALE"]["VALUE"]. Да только не удается мне запихнуть переменные РНР в ЯВУ, в чем и прошу помощи. Предыдущий пример (сверху) работал только при единичной строке заказа. При увеличении массива тут же выдавал ошибку.
Предполагаемый код заказа по коробкам:
<?
for ($i = 0; $i<count($arItems); $i++)
{
?>
<tr>
<td class="tablebody">
..... дополнительные параметры корзины .....
</td>
..... непосредственная ячейка в которой и необходимо произвести изменения
<td class="tablebody"><?
// определение массива свойств элемента для определение кратности продаваемого товара
$dbEl = CIBlockElement::GetList(Array(), Array("ID"=> $arItems[$i]["PRODUCT_ID"]));
$obEl = $dbEl->GetNextElement();
$props = $obEl->GetProperties()
// строка для определения конечного числа в зависимости от кратности продаж?>
<input type="text" name="<? echo $i?>" onKeyup=copyfun() size="4" value="1"> x <? echo $props["QUANTITY_SALE"]["VALUE"]?> = <input type="text" name="QUANTITY_<? echo $arItems[$i]["ID"] ?>" value="<? echo $arItems[$i]["QUANTITY"]?>">
<script language="javascript">
function copyfun()
{
document.forma.QUANTITY_<? echo $arItems[$i]["ID"]?>.value = document.forma.<? echo $i?>.value * <? echo $props["QUANTITY_SALE"]["VALUE"]?>
}
</script>
</td>
<td class="tablebody">
..... дополнительные параметры корзины .....
</td>
</tr><?
}?>
|
Строчка выделенная жирным шрифтом отвечает за передачу конечного количества товара.
Может быть слишком коряво написано, прошу прощения за ранее, как я писал, ну не силен я в ЯВА и РНР, копаюсь в них потехоньку.
Прошу помощи. | |
|
|
|
|
|
|
|
для: lobarev
(03.02.2006 в 09:25)
| | Ага! Сейчас придумаю что-нить, если подождешь... | |
|
|
|
|
|
|
|
для: WebTech
(04.02.2006 в 09:14)
| | Извини, что так затянул с ответом, на работе завал :-)
Попробуй вынести функцию из тела цикла. Затем надо каждой форме задать уникальное имя, например так
<form name="form<?php echo $i; ?>">
|
в функцию надо передавать имя формы и имя полей
onKeyup=copyfun("form<?php echo $i; ?>", "QUANTITY_<? echo $arItems[$i]["ID"]; ?>", "<?php echo $i; ?>")
|
Соответственно функция будет выглядеть так
<script language="javascript">
function copyfun(forma, field1, field2)
{
document.forma.field1.value = document.forma.field2.value * <? echo $props["QUANTITY_SALE"]["VALUE"]?>
}
</script>
|
Попробуй так. Если не будет получаться - спроси на форуме в разделе HTML+CSS+JavaScript, здесь php в общем то ни при чем. А в JavaScript я сам не очень то :-( | |
|
|
|