За последние 24 часа нас посетили 40980 программистов и 1812 роботов. Сейчас ищут 847 программистов ...

Помогите с передачей значения поля формы в новое окно

Тема в разделе "PHP для новичков", создана пользователем Al2008, 18 фев 2008.

  1. Al2008

    Al2008 Активный пользователь

    С нами с:
    13 фев 2008
    Сообщения:
    18
    Симпатии:
    0
    По Порядку:
    есть список товаров, по запросу пользователю выводятся некоторые товары, в $a[1] содержится ID конкретного товара
    формирую список товаров в переменной $goodlist, после вывожу на страницу:

    $goodlist.="<form method=POST name=toCart
    action=javascript:eek:pen_window('modules/cart.php?add=".$a[1]."&cnt=".$cnt."',600,400) width=100%>";
    $goodlist.="<input type=text name=cnt[".$a[1]."] value=0 >";
    $goodlist.="<input type=submit value=Заказать></form>\n";

    скрипт, открывающий новое окно содержащее корзину:

    <script> //java-скрипт, открывающий новое окно со спсиком товаров в корзине
    function open_window(link,w,h) {
    var win = "width="+w+",height="+h+",menubar=no,location=no,resizable=yes,scrollbars=yes";
    newWin = window.open(link,'newWin',win);
    }
    </script>

    Проблема: параметр $Add передается без проблем, а вот $cnt ни в какую...
    как я понимаю, если в цикле формировать поля ввода <input type=text name=cnt[".$a[1]."] value=0 > и давать в качестве имен что-то типа cnt[$a[1]], где $a[1] текущий выбранный элемент массива с ID товаров, то $cnt автоматически станет массивом?

    где я туплю, подскажите?
     
  2. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    хмм... открываешь свой итоговый хтмл и смотришь, чему равны атрибуты name у твоих инпутов. Удивляешься - никаких cnt[что-то-там] там нет. Вот эти имена и приходят post-ом с формы.
     
  3. Al2008

    Al2008 Активный пользователь

    С нами с:
    13 фев 2008
    Сообщения:
    18
    Симпатии:
    0
    вот что в хтмл коде получается <input type=text name=cnt[65] value=0 >
     
  4. Al2008

    Al2008 Активный пользователь

    С нами с:
    13 фев 2008
    Сообщения:
    18
    Симпатии:
    0
    в том и фигня, что name корректно вроде заполняется... сейчас попробовал передать javascript:eek:pen_window('modules/cart.php?add=".$a[1]."&cnt[".$a[1]."]',600,400) width=100%>
    вот что получил в принимающем скрипте по phpinfo(32):

    _REQUEST["add"] 65
    _REQUEST["cnt"]

    Array
    (
    [65] =>
    )

    _REQUEST["PHPSESSID"] e906130a5499a01f8ab977a83e37fb7f
    _GET["add"] 65
    _GET["cnt"]

    Array
    (
    [65] =>
    )
     
  5. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    Может, в этом дело?
     
  6. Al2008

    Al2008 Активный пользователь

    С нами с:
    13 фев 2008
    Сообщения:
    18
    Симпатии:
    0
    почему же тогда $add проходит нормально?
     
  7. Al2008

    Al2008 Активный пользователь

    С нами с:
    13 фев 2008
    Сообщения:
    18
    Симпатии:
    0
    сделал так: $goodlist.="<form method=Post name=toCart action=test.php?add=".$a[1]."&cnt=".$cnt." width=100%>";
    $goodlist.="<input type=text name=cnt[".$a[1]."] value=0 >";
    $goodlist.="<input type=submit value=Заказать></form>";

    Test.php:

    <?php

    Echo "Add= ".$add;
    echo "<br>";
    Echo "Cnt= ".$cnt[$add];

    ?>

    все работает.... прихожу к выводу, что в скрипте проблема... помогите скрипт разобрать...
     
  8. Al2008

    Al2008 Активный пользователь

    С нами с:
    13 фев 2008
    Сообщения:
    18
    Симпатии:
    0
    сейчас через скрипт открывал test.php - массив $cnt пропал....
     
  9. Professor

    Professor Активный пользователь

    С нами с:
    2 янв 2008
    Сообщения:
    121
    Симпатии:
    0
    Адрес:
    г. Одесса, Украина
    Что за извращенческий способ передавать через форму данные ?
    сделай
    PHP:
    1.  
    2. $goodlist.="<form method=Post name=toCart action=test.php width=100%>";
    3. $goodlist.="<input type=hidden name=add value=".$a[1].">";
    4. $goodlist.="<input type=text name=cnt value=".$cnt.">";
    5. $goodlist.="<input type=submit value=Заказать></form>";
    6.  

    ... и зачем форме передавать параметр width ?
     
  10. Al2008

    Al2008 Активный пользователь

    С нами с:
    13 фев 2008
    Сообщения:
    18
    Симпатии:
    0
    по поводу Width, знаю что каверканье чужих программ дело не благодарное, не доглядел )...
    дело в том, что товаров на форме может быть много и у каждого своя форма, и с этой страницы уходить не желательно, посему я думаю был сделан вызов нового окна через скрипт. так вот, скрипт не получает массив $cnt, в этом и загвоздка....
     
  11. Professor

    Professor Активный пользователь

    С нами с:
    2 янв 2008
    Сообщения:
    121
    Симпатии:
    0
    Адрес:
    г. Одесса, Украина
    Думаю, массив тебе передать не удастся. Как вариант, если массив - это все товары в корзине - делай как люди делают - храни каждый товар в отдельной переменной в куке. А если этот массив статичный - храни его на сервере в файле или БД.
     
  12. Al2008

    Al2008 Активный пользователь

    С нами с:
    13 фев 2008
    Сообщения:
    18
    Симпатии:
    0
    массив динамический, что если я реализую покупательскую корзину в БД, записывая session ID? очищая записи от текущей сессии после оформления покупки.....?
     
  13. RomanBush

    RomanBush Активный пользователь

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    Примерно тоже самое, что гланды через ж.. удалять. Тогда уж проще сразу в БД хранить товары.
     
  14. Al2008

    Al2008 Активный пользователь

    С нами с:
    13 фев 2008
    Сообщения:
    18
    Симпатии:
    0
    У меня весь магазин на MySQL! кроме корзины. Просто смысла не было упоминать, с загрузкой прайса из 1С 7.7 ТиС)) впрос бул в том как переделать корзину, т.е. оставить в таком виде как я описал, добавив необходимые переменные или тоже в БД запихать)
    В общем спасибо за наведение на умные мысли. буду переделывать под MySQL корзинку)