Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2012, 10:26   #1
Nikirinka
Пользователь
 
Аватар для Nikirinka
 
Регистрация: 21.09.2010
Сообщений: 70
По умолчанию не могу дописать программу на PHP

Всем доброго времени суток.
У меня возникла одна проблема, которую я своими силами никак решить не могу, надеюсь вы поможете...

Я дорабатываю форму расширенного поиска моего сайта (сайт на joomla 1.5), а компонент поиска (поиск по характеристика товара) работает из для каталога vertuemart.

Ссылка на форму поиска: http://svetocenter.ru/index.php?page...mid=7&Itemid=7

По умолчанию форма поиска состоит из раскрывающихся списков (в них выходят различные параметры товаров), они заключены в тег <selection></selection>, а мне нужно, чтобы они были в теге <input type="checkbox>".

Поясню конкретнее.
В файле administrator/components/com_vertuemart/html/shop.parameter_search_form.php есть кусок кода стр. 293

Код:
if (!empty($parameter_values)) { // List of values
                    $fields=explode(";",$parameter_values);
                    echo "<td width=\"55%\" height=\"2\" valign=\"top\">\n";
                    echo "<select class=\"inputbox\" name=\"$item_name";
                    if ($db->f("parameter_multiselect")=="Y") {
                        $size = min(count($fields),6);
                        echo "[]\" multiple size=\"$size\">\n";
                        $selected_value = array();
                        $get_item_value = vmGet($_REQUEST, $item_name, array());
                        foreach($get_item_value as $value) {
                            $selected_value[$value] = 1;
                        }
                        foreach($fields as $field) {
                            echo "<option value=\"$field\"".(($selected_value[$field]==1)? " selected>" : ">"). $field."</option>\n";
                        }
                    }
                    else {
                        echo "\">\n";
                        echo "<option value=\"\">".$VM_LANG->_('PHPSHOP_SELECT')."</option>\n";
                        foreach($fields as $field) {
                            echo "<option value=\"$field\"".(($get_item_value==$field)? " selected>" : ">"). $field."</option>\n";
                        }
                    }
                    echo "</select>";
как можно переделать этот код, чтобы вместо тега

Код:
<select>
   <option>
   <option>
      ...
</select>
выполнялся тег


Код:
<input type="checkbox" name=" " value=" ">

Я сделала во так:


Код:
echo "<input type=\"checkbox\" class=\"inputbox\" name=\"$item_name";
                    if ($db->f("parameter_multiselect")=="Y") {
                        $size = min(count($fields),6);
                        echo "00" ;
                        $selected_value = array();
                        $get_item_value = vmGet($_REQUEST, $item_name, array());
                        foreach($get_item_value as $value) {
                            $selected_value[$value] = 1;
                        }
                        foreach($fields as $field) {
                            echo "value=\"$field\"".(($selected_value[$field]==1)? " selected>" : ">  "). $field."\n";
                        }
                    }
                    else {
                        echo "\">\n";
                        echo "<value=\"\">".$VM_LANG->_('PHPSHOP_SELECT')."\n";
                        foreach($fields as $field) {
                            echo "<value=\"$field\"".(($get_item_value==$field)? " selected>" : ">"). $field."\n";
                        }
                    }
                    echo "00";

Но проблема у меня в том, что select создается 1 раз, а <option> - столько раз, сколько значений в базе данных. А тег <input> должен тоже создаваться столько же раз сколько и <option>. А я не знаю как это прописать... В PHP я очень плохо понимаю...
Помогите, пожалуйста, очень надо!
Nikirinka вне форума Ответить с цитированием
Старый 20.09.2012, 10:45   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Nikirinka Посмотреть сообщение
Но проблема у меня в том, что select создается 1 раз, а <option> - столько раз, сколько значений в базе данных. А тег <input> должен тоже создаваться столько же раз сколько и <option>. А я не знаю как это прописать...В PHP я очень плохо понимаю...
Просто убери <select></select> в начале/конце, а вместо <option></option> прописывай <input/>:
PHP код:
foreach($fields as $field) {
    echo 
'<input type="checkbox" name="some_name[]" value="' $field 
    
'" ' . (($selected_value[$field]==1) ? 'checked' '') . ' />';

Andkorol вне форума Ответить с цитированием
Старый 20.09.2012, 10:49   #3
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

как то так:

Код:
if (!empty($parameter_values)) { // List of values
                    $fields=explode(";",$parameter_values);
                    echo "<td width=\"55%\" height=\"2\" valign=\"top\">\n";                    
                    if ($db->f("parameter_multiselect")=="Y") {
                        $size = min(count($fields),6);                
                        $selected_value = array();
                        $get_item_value = vmGet($_REQUEST, $item_name, array());
                        foreach($get_item_value as $value) {
                            $selected_value[$value] = 1;
                        }
                        foreach($fields as $field) {
                            echo "<input type='checkbox' name='name[]' value=\"$field\"".(($selected_value[$field]==1)? " checked>" : ">")\n";
                        }
                    }
ADSoft вне форума Ответить с цитированием
Старый 21.09.2012, 18:04   #4
Nikirinka
Пользователь
 
Аватар для Nikirinka
 
Регистрация: 21.09.2010
Сообщений: 70
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Просто убери <select></select> в начале/конце, а вместо <option></option> прописывай <input/>:
PHP код:
foreach($fields as $field) {
    echo 
'<input type="checkbox" name="some_name[]" value="' $field 
    
'" ' . (($selected_value[$field]==1) ? 'checked' '') . ' />';

Спасибо большое, сейчас применю...
Nikirinka вне форума Ответить с цитированием
Старый 24.09.2012, 12:03   #5
Nikirinka
Пользователь
 
Аватар для Nikirinka
 
Регистрация: 21.09.2010
Сообщений: 70
По умолчанию

Что-то не так ((
Поиск перестал работать... при выборе одного или нескольких чекбоксов и нажатии на конопку поиск, выходит список всех товаров...
Nikirinka вне форума Ответить с цитированием
Старый 24.09.2012, 12:36   #6
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Nikirinka Посмотреть сообщение
Что-то не так ((
Поиск перестал работать... при выборе одного или нескольких чекбоксов и нажатии на конопку поиск, выходит список всех товаров...
Нужен код – телепатов нет.
Обработчик формы тоже нужно было изменить, чтоб он обрабатывал новые элементы.
Andkorol вне форума Ответить с цитированием
Старый 24.09.2012, 14:58   #7
Nikirinka
Пользователь
 
Аватар для Nikirinka
 
Регистрация: 21.09.2010
Сообщений: 70
По умолчанию

Вот файл с кодом
Вложения
Тип файла: zip shop.parameter_search_form.php.zip (4.0 Кб, 6 просмотров)
Nikirinka вне форума Ответить с цитированием
Старый 24.09.2012, 15:00   #8
Nikirinka
Пользователь
 
Аватар для Nikirinka
 
Регистрация: 21.09.2010
Сообщений: 70
По умолчанию

Не знаю, просто, какую часть кода предоставить. Строка, которую меняла: 293 - 315
Nikirinka вне форума Ответить с цитированием
Старый 24.09.2012, 15:01   #9
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Nikirinka Посмотреть сообщение
Вот файл с кодом
Зачем весь файл?
Нужен только код формы и код обработчика.

Поиск ошибок и отладка
Andkorol вне форума Ответить с цитированием
Старый 24.09.2012, 17:03   #10
Nikirinka
Пользователь
 
Аватар для Nikirinka
 
Регистрация: 21.09.2010
Сообщений: 70
По умолчанию

PHP код:
<form action="<?php echo URL ?>index.php" method="post" name="attr_search">
<input type="hidden" name="option" value="com_virtuemart" />
<input type="hidden" name="page" value="shop.browse" />
<input type="hidden" name="product_type_id" value="<?php echo $product_type_id ?>" />
<input type="hidden" name="Itemid" value="<?php echo $sess->getShopItemid() ?>" />
<br />

<?php 
    $q  
"SELECT * FROM #__{vm}_product_type_parameter ";
    
$q .= "WHERE product_type_id=$product_type_id ";
    
$q .= "ORDER BY parameter_list_order";
    
$db->query($q);
    
    
?>
    <table width="100%" border="0" cellpadding="2" cellspacing="0">
    <?php
if (!empty($browsepage)) { // show browsepage
        /** 
        *   Read the template file into a String variable.
        *
        * function read_file( $file, $defaultfile='') ***/
        
$template read_filePAGEPATH."templates/".$browsepage.".php");
        
//$template = str_replace( "{product_type_id}", $product_type_id, $template );    // If you need this, use it...
        
while ($db->next_record()) {
            
$item_name "product_type_$product_type_id"."_".$db->f("parameter_name");
            
$parameter_values=$db->f("parameter_values");
            
$get_item_value vmGet($_REQUEST$item_name"");
            
$get_item_value_comp vmGet($_REQUEST$item_name."_comp""");
            
$parameter_type $db->f("parameter_type");
            
            
// Replace parameter value
            
$template str_replace"{".$item_name."_value}"$get_item_value$template );
                
...

else { 
// show default list of parameters
        
echo "\n\n<!-- Default list of parameters - BEGIN -->\n";
        
        while (
$db->next_record()) {
            
$parameter_type $db->f("parameter_type");
            if (
$parameter_type!="B") {
                echo 
"<tr>\n  <td width=\"35%\" height=\"2\" valign=\"top\"><div align=\"right\"><strong>";
                echo 
$db->f("parameter_label");
            
                if (
$db->f("parameter_description")) {
                    echo 
"&nbsp;";
                    echo 
mm_ToolTip($db->f("parameter_description"),$VM_LANG->_('PHPSHOP_PRODUCT_TYPE_PARAMETER_FORM_DESCRIPTION'));
                }
                echo 
"&nbsp;:</strong></div>\n  </td>\n";
                
                
$parameter_values=$db->f("parameter_values");
                
$item_name "product_type_$product_type_id"."_".$db->f("parameter_name");
                
$get_item_value vmGet($_REQUEST$item_name"");
                
$get_item_value_comp vmGet($_REQUEST$item_name."_comp""");
            
                ....
Эту форму и обработчик вы имели в виду? Не очень хорошо понимаю PHP
Nikirinka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу дописать программу(Visual C++ 2008) Alex_Dep Помощь студентам 2 18.01.2012 20:35
не могу дописать программу emgoi Visual C++ 2 21.09.2011 20:11
Не могу дописать программу IROKEZ Общие вопросы C/C++ 1 19.04.2010 19:41
С++ не могу дописать kolashik Помощь студентам 1 31.10.2009 17:40
Помогите дописать программу на Delphi 7 не могу понять что здесь не так matrix8325 Помощь студентам 1 30.04.2009 23:34