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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Как передать переменные массива из PHP -> JScript ->PHP в форме

Сообщения:  [1-5] 

 
 автор: WebTech   (05.02.2006 в 18:36)   письмо автору
 
   для: 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 я сам не очень то :-(

   
 
 автор: WebTech   (04.02.2006 в 09:14)   письмо автору
 
   для: lobarev   (03.02.2006 в 09:25)
 

Ага! Сейчас придумаю что-нить, если подождешь...

   
 
 автор: lobarev   (03.02.2006 в 09:25)   письмо автору
 
   для: 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><?
}?>


Строчка выделенная жирным шрифтом отвечает за передачу конечного количества товара.
Может быть слишком коряво написано, прошу прощения за ранее, как я писал, ну не силен я в ЯВА и РНР, копаюсь в них потехоньку.
Прошу помощи.

   
 
 автор: WebTech   (02.02.2006 в 17:06)   письмо автору
 
   для: lobarev   (02.02.2006 в 16:16)
 

Что содержится в массиве $arItems? И вообще, что должен делать этот скрипт?

   
 
 автор: lobarev   (02.02.2006 в 16:16)   письмо автору
 
 

Есть рабочий код, подправленный частично под мои нужды, но он работает только с простыми переменными, а не из массива:


<table>
<?
$Items 
= array(350);

for (
$i 0$i count($arItems); $i++)
  {
  echo 
$Items[$i];?>&nbsp;<?
?>
<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. просмотрел форум и не один, а ответ пока на свой вопрос не нашел...
Подскажите пожалуйста!!!

   

Сообщения:  [1-5] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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