Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Управление массивом посредством массива checkbox

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
gurvinek
Отправлено: 02 Мая, 2015 - 11:56:09
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Апр. 2014  


Помог: 0 раз(а)




Есть массив $items такого вида:

CODE (htmlphp):
скопировать код в буфер обмена
  1. Array
  2. (
  3.     [0] => stdClass Object
  4.         (
  5.             [id] => 9
  6.             [type] => 1
  7.             [rent_type] => 0
  8.             [cid] => 1
  9.             [locid] => 1
  10.             [stid] => 1
  11.             [cnid] => 0
  12.             [soleAgency] => 0
  13.             [bldg_name] => 2 ИП в Московском мкр-не
  14.             [unit_num] =>
  15.             [lot_num] =>
  16.             [street_num] => д.13
  17.             [address2] => Московский мкр-н
  18.             [postcode] =>
  19.             [county] =>
  20.             [locality] =>
  21.             [state] =>
  22.             [country] =>
  23.             [viewad] => 1
  24.             [owncoords] => 0
  25.             [price] => 2000000.00
  26.             [offpeak] => 0.00
  27.             [showprice] => 1
  28.             [freq] => 0
  29.             [bond] => 0.00
  30.             [closeprice] => 0.00
  31.             [priceview] =>
  32.             [year] =>
  33.             [yearRemodeled] =>
  34.             [houseStyle] =>
  35.             [houseConstruction] =>
  36.             [exteriorFinish] =>
  37.             [roof] =>
  38.             [flooring] =>
  39.             [porchPatio] =>
  40.             [landtype] =>
  41.             [frontage] =>
  42.             [depth] =>
  43.             [subdivision] =>
  44.             [LandAreaSqFt] =>
  45.             [AcresTotal] =>
  46.             [LotDimensions] =>
  47.             [bedrooms] => 0
  48.             [sleeps] => 0
  49.             [totalrooms] =>
  50.             [otherrooms] =>
  51.             [livingarea] =>
  52.             [bathrooms] => 0.00
  53.             [fullBaths] => 0
  54.             [thqtrBaths] => 0
  55.             [halfBaths] => 0
  56.             [qtrBaths] => 0
  57.             [ensuite] => 0
  58.             [parking] =>
  59.             [garageDescription] =>
  60.             [parkingGarage] =>
  61.             [parkingCarport] =>
  62.             [stories] => 0
  63.             [declat] => 56.968351
  64.             [declong] => 40.989102
  65.             [adline] => 2 ИП в Московском мкр-не
  66.             [alias] => 2-ip-v-moskovskom-mkr-ne
  67.             [propdesc] => <p>Продаётся 2х комн. квартира в Московском мкр. дом 13 (уже сдан). 65/32/13 кв.м. Квартира не угловая. 2 лоджии. Окна на разные стороны. Сделан хороший ремонт (не ДСК), ванна в плитке, встроенная кухня (остаётся). Ч/продажа. &nbsp;Продаётся срочно, поэтому цена ниже рыночной!!!</p>
  68.             [smalldesc] => Продаётся 2х комн. квартира в Московском мкр. дом 13 (уже сдан). 65/32/13 кв.м. Квартира не угловая. 2 лоджии. Окна на разные стороны. Сделан хороший ремонт (не ДСК), ванна в плитке, встроенная кухня (остаётся). Ч/продажа.  Продаётся срочно, поэтому цена
  69.             [panorama] =>
  70.             [mediaUrl] =>
  71.             [mediaType] => 0
  72.             [pdfinfo1] =>
  73.             [pdfinfo2] =>
  74.             [epc1] =>
  75.             [epc2] =>
  76.             [flpl1] =>
  77.             [flpl2] =>
  78.             [ctown] =>
  79.             [ctport] =>
  80.             [schooldist] =>
  81.             [preschool] =>
  82.             [primaryschool] =>
  83.             [highschool] =>
  84.             [university] =>
  85.             [hofees] =>
  86.             [AnnualInsurance] => 0.00
  87.             [TaxAnnual] => 0.00
  88.             [TaxYear] =>
  89.             [Utlities] =>
  90.             [ElectricService] =>
  91.             [AverageUtilElec] => 0.00
  92.             [AverageUtilHeat] => 0.00
  93.             [BasementAndFoundation] =>
  94.             [BasementSize] =>
  95.             [BasementPctFinished] =>
  96.             [appliances] =>
  97.             [indoorfeatures] =>
  98.             [outdoorfeatures] =>
  99.             [buildingfeatures] =>
  100.             [communityfeatures] =>
  101.             [otherfeatures] =>
  102.             [CovenantsYN] => 0
  103.             [PhoneAvailableYN] => 0
  104.             [GarbageDisposalYN] => 0
  105.             [RefrigeratorYN] => 0
  106.             [OvenYN] => 0
  107.             [FamilyRoomPresent] => 0
  108.             [LaundryRoomPresent] => 0
  109.             [KitchenPresent] => 0
  110.             [LivingRoomPresent] => 0
  111.             [ParkingSpaceYN] => 0
  112.             [custom1] => 5
  113.             [custom2] => 60
  114.             [custom3] =>
  115.             [custom4] =>
  116.             [custom5] => кирпич
  117.             [custom6] => отличное, встроенная кухня, нат.потолки
  118.             [custom7] =>
  119.             [custom8] =>
  120.             [takings] =>
  121.             [returns] =>
  122.             [netprofit] =>
  123.             [bustype] =>
  124.             [bussubtype] =>
  125.             [stock] =>
  126.             [fixtures] =>
  127.             [fittings] =>
  128.             [squarefeet] =>
  129.             [SqFtLower] =>
  130.             [SqFtMainLevel] =>
  131.             [SqFtUpper] =>
  132.             [percentoffice] =>
  133.             [percentwarehouse] =>
  134.             [loadingfac] =>
  135.             [fencing] =>
  136.             [rainfall] =>
  137.             [soiltype] =>
  138.             [grazing] =>
  139.             [cropping] =>
  140.             [irrigation] =>
  141.             [waterresources] =>
  142.             [carryingcap] =>
  143.             [storage] =>
  144.             [services] =>
  145.             [currency_position] => 0
  146.             [currency] =>
  147.             [currency_format] => 0
  148.             [schoolprof] => 0
  149.             [hoodprof] => 0
  150.             [openhouse] => 0
  151.             [ohouse_desc] =>
  152.             [ohdate] => 0000-00-00
  153.             [ohstarttime] => 00:00:00
  154.             [ohendtime] => 00:00:00
  155.             [ohdate2] => 0000-00-00
  156.             [ohstarttime2] => 00:00:00
  157.             [ohendtime2] => 00:00:00
  158.             [viewbooking] => 0
  159.             [availdate] => 0000-00-00
  160.             [aucdate] => 0000-00-00
  161.             [auctime] => 00:00:00
  162.             [aucdet] =>
  163.             [private] =>
  164.             [office_id] =>
  165.             [mls_id] =>
  166.             [mls_agent] =>
  167.             [agentInfo] =>
  168.             [rets_source] =>
  169.             [mls_disclaimer] =>
  170.             [mls_image] =>
  171.             [oh_id] =>
  172.             [closedate] =>
  173.             [contractdate] =>
  174.             [sold] => 1
  175.             [featured] => 0
  176.             [camtype] => 0
  177.             [owner] => 873
  178.             [assoc_agent] => 0
  179.             [email_status] => 0
  180.             [skipimp] => 0
  181.             [listdate] => 2015-03-06
  182.             [lastupdate] => 1430127193
  183.             [expdate] => 1425600000
  184.             [metadesc] =>
  185.             [metakey] =>
  186.             [hits] => 97
  187.             [published] => 1
  188.             [language] => *
  189.             [checked_out] => 127
  190.             [checked_out_time] => 2015-04-27 09:33:13
  191.             [ordering] =>
  192.             [category] => Квартиры
  193.             [proploc] => г. Иваново
  194.             [statename] => Ивановская обл.
  195.             [cnname] =>
  196.             [slug] => 9:2-ip-v-moskovskom-mkr-ne
  197.             [catslug] => 1:kvartiry
  198.         )
  199.  
  200.     [1] => stdClass Object
  201.         (
  202.             [id] => 8
  203.             [type] => 1
  204.             [rent_type] => 0
  205.             [cid] => 6
  206.             [locid] => 1
  207.             [stid] => 1
  208.             [cnid] => 0
  209.             [soleAgency] => 0
  210.             [bldg_name] => 3 ИП с хорошим ремонтом
  211.             [unit_num] =>
  212.             [lot_num] =>
  213.             [street_num] => д.59
  214.             [address2] => ул.Стефенсона
  215.             [postcode] =>
  216.             [county] =>
  217.             [locality] =>
  218.             [state] =>
  219.             [country] =>
  220.             [viewad] => 1
  221.             [owncoords] => 0
  222.             [price] => 1500000.00
  223.             [offpeak] => 0.00
  224.             [showprice] => 1
  225.             [freq] => 0
  226.             [bond] => 0.00
  227.             [closeprice] => 0.00
  228.             [priceview] =>
  229.             [year] =>
  230.             [yearRemodeled] =>
  231.             [houseStyle] =>
  232.             [houseConstruction] =>
  233.             [exteriorFinish] =>
  234.             [roof] =>
  235.             [flooring] =>
  236.             [porchPatio] =>
  237.             [landtype] =>
  238.             [frontage] =>
  239.             [depth] =>
  240.             [subdivision] =>
  241.             [LandAreaSqFt] =>
  242.             [AcresTotal] =>
  243.             [LotDimensions] =>
  244.             [bedrooms] => 0
  245.             [sleeps] => 0
  246.             [totalrooms] =>
  247.             [otherrooms] =>
  248.             [livingarea] =>
  249.             [bathrooms] => 0.00
  250.             [fullBaths] => 0
  251.             [thqtrBaths] => 0
  252.             [halfBaths] => 0
  253.             [qtrBaths] => 0
  254.             [ensuite] => 0
  255.             [parking] =>
  256.             [garageDescription] =>
  257.             [parkingGarage] =>
  258.             [parkingCarport] =>
  259.             [stories] => 0
  260.             [declat] => 57.023372
  261.             [declong] => 41.018118
  262.             [adline] => 3 ИП с хорошим ремонтом
  263.             [alias] => 3-ip-s-khoroshim-remontom
  264.             [propdesc] => <p>Продам 3 ИП. Новый дом, закрытая территория, огороженная детская площадка, рядом парк 1905 года. Индивидуальное г/о, витражное окно, вся встроенная мебель и техника остается. 2 санузла. Очень удачная планировка, хорошие соседи.</p>
  265.             [smalldesc] => Продам 3 ИП. Новый дом, закрытая территория, огороженная детская площадка, рядом парк 1905 года. Индивидуальное г/о, витражное окно, вся встроенная мебель и техника остается. 2 санузла. Очень удачная планировка, хорошие соседи.
  266.             [panorama] =>
  267.             [mediaUrl] =>
  268.             [mediaType] => 0
  269.             [pdfinfo1] =>
  270.             [pdfinfo2] =>
  271.             [epc1] =>
  272.             [epc2] =>
  273.             [flpl1] =>
  274.             [flpl2] =>
  275.             [ctown] =>
  276.             [ctport] =>
  277.             [schooldist] =>
  278.             [preschool] =>
  279.             [primaryschool] =>
  280.             [highschool] =>
  281.             [university] =>
  282.             [hofees] =>
  283.             [AnnualInsurance] => 0.00
  284.             [TaxAnnual] => 0.00
  285.             [TaxYear] =>
  286.             [Utlities] =>
  287.             [ElectricService] =>
  288.             [AverageUtilElec] => 0.00
  289.             [AverageUtilHeat] => 0.00
  290.             [BasementAndFoundation] =>
  291.             [BasementSize] =>
  292.             [BasementPctFinished] =>
  293.             [appliances] =>
  294.             [indoorfeatures] =>
  295.             [outdoorfeatures] =>
  296.             [buildingfeatures] =>
  297.             [communityfeatures] =>
  298.             [otherfeatures] =>
  299.             [CovenantsYN] => 0
  300.             [PhoneAvailableYN] => 0
  301.             [GarbageDisposalYN] => 0
  302.             [RefrigeratorYN] => 0
  303.             [OvenYN] => 0
  304.             [FamilyRoomPresent] => 0
  305.             [LaundryRoomPresent] => 0
  306.             [KitchenPresent] => 0
  307.             [LivingRoomPresent] => 0
  308.             [ParkingSpaceYN] => 0
  309.             [custom1] => средний
  310.             [custom2] => 75
  311.             [custom3] =>
  312.             [custom4] => Продам 3 ИП. Новый дом, закрытая территория, огороженная детская площадка, рядом парк 1905 года. Индивидуальное г/о, витражное окно, вся встроенная мебель и техника остается. 2 санузла. Очень удачная планировка, хорошие соседи.
  313.             [custom5] => кирпич
  314.             [custom6] => отделка "под ключ", встроенная мебель
  315.             [custom7] =>
  316.             [custom8] =>
  317.             [takings] =>
  318.             [returns] =>
  319.             [netprofit] =>
  320.             [bustype] =>
  321.             [bussubtype] =>
  322.             [stock] =>
  323.             [fixtures] =>
  324.             [fittings] =>
  325.             [squarefeet] =>
  326.             [SqFtLower] =>
  327.             [SqFtMainLevel] =>
  328.             [SqFtUpper] =>
  329.             [percentoffice] =>
  330.             [percentwarehouse] =>
  331.             [loadingfac] =>
  332.             [fencing] =>
  333.             [rainfall] =>
  334.             [soiltype] =>
  335.             [grazing] =>
  336.             [cropping] =>
  337.             [irrigation] =>
  338.             [waterresources] =>
  339.             [carryingcap] =>
  340.             [storage] =>
  341.             [services] =>
  342.             [currency_position] => 0
  343.             [currency] =>
  344.             [currency_format] => 0
  345.             [schoolprof] => 0
  346.             [hoodprof] => 0
  347.             [openhouse] => 0
  348.             [ohouse_desc] =>
  349.             [ohdate] => 0000-00-00
  350.             [ohstarttime] => 00:00:00
  351.             [ohendtime] => 00:00:00
  352.             [ohdate2] => 0000-00-00
  353.             [ohstarttime2] => 00:00:00
  354.             [ohendtime2] => 00:00:00
  355.             [viewbooking] => 0
  356.             [availdate] => 0000-00-00
  357.             [aucdate] => 0000-00-00
  358.             [auctime] => 00:00:00
  359.             [aucdet] =>
  360.             [private] =>
  361.             [office_id] =>
  362.             [mls_id] =>
  363.             [mls_agent] =>
  364.             [agentInfo] =>
  365.             [rets_source] =>
  366.             [mls_disclaimer] =>
  367.             [mls_image] =>
  368.             [oh_id] =>
  369.             [closedate] =>
  370.             [contractdate] =>
  371.             [sold] => 1
  372.             [featured] => 0
  373.             [camtype] => 0
  374.             [owner] => 873
  375.             [assoc_agent] => 0
  376.             [email_status] => 0
  377.             [skipimp] => 0
  378.             [listdate] => 2015-03-06
  379.             [lastupdate] => 1430496909
  380.             [expdate] => 1425600000
  381.             [metadesc] =>
  382.             [metakey] =>
  383.             [hits] => 40
  384.             [published] => 1
  385.             [language] => *
  386.             [checked_out] => 0
  387.             [checked_out_time] => 0000-00-00 00:00:00
  388.             [ordering] =>
  389.             [category] => Эксклюзивная недвижимость
  390.             [proploc] => г. Иваново
  391.             [statename] => Ивановская обл.
  392.             [cnname] =>
  393.             [slug] => 8:3-ip-s-khoroshim-remontom
  394.             [catslug] => 6:eksklyuzivnaya-nedvizhimost
  395.         )
  396.  


нужно, что бы при выборе чекбокса в этом массиве оставались только данные, соответствующие value этого чекбокса.
Например: при выборе чекбокса "Квариты" в массиве оставались соответственно только квартиры.
В массиве присутствует поле [catslug], к нему и хочу привязаться.
Удалять данные из массива хочу командой unset($items[$k])
Код вот такой:

CODE (htmlphp):
скопировать код в буфер обмена
  1.         <form method="POST">
  2.                         <input type="checkbox" name="chb[]" value="1:kvartiry" /><span>Квартиры</span>
  3.                         <input type="checkbox" name="chb[]" value="2:kottedzhi" /><span>Коттеджи</span>
  4.                         <input type="checkbox" name="chb[]" value="3:zemelnye-uchastki" /><span>Земельные участки</span>
  5.                         <input type="checkbox" name="chb[]" value="4:kommercheskaya-nedvizhimost" /><span>Коммерч. недвижимость</span>
  6.                         <input type="checkbox" name="chb[]" value="5:arenda-nedvizhimosti" /><span>Аренда</span>
  7.                         <input type="checkbox" name="chb[]" value="6:eksklyuzivnaya-nedvizhimost" /><span>Эксклюзивная недвиж.</span>
  8.                         <input type="submit" value="Отправить" name="">
  9.         </form>
  10. <?php
  11. if (isset($_POST['chb']))
  12. foreach($_POST['chb'] as $key=>$value)
  13. //echo $value.'<br />';
  14.                                
  15.                          foreach($items as $k=>$zn) {
  16.                                  $zn = $items->$k['catslug'];
  17.                                  if ($value == $zn) {
  18.                                          unset($items[$k]);
  19.                                
  20.                                  }
  21.                                
  22.                           }
  23.  
  24.  
  25. ?>

знаю, что во втором foreach ошибка, но что там прописать - никак не разберусь.
Прошу помощи.
 
 Top
gurvinek
Отправлено: 03 Мая, 2015 - 13:43:20
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Апр. 2014  


Помог: 0 раз(а)




сделал так:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. foreach($items as $key => $item) {
  4.                        
  5.                 if ($value == $item->catslug) {
  6.                 unset($items[$key]);
  7.                                
  8.                                 }
  9.                         }      
  10. ?>


теперь удаляется выбранное, а надо, чтобы удалялись все $key, кроме выбранного

если ставишь $value != $item->catslug, то по одному чекбоксу оставляет нормально, но при выборе двух или более удаляет все $key

(Отредактировано автором: 03 Мая, 2015 - 15:01:20)

 
 Top
Ts.Saltan
Отправлено: 03 Мая, 2015 - 16:08:32
Post Id



Посетитель


Покинул форум
Сообщений всего: 384
Дата рег-ции: Дек. 2013  
Откуда: Belarus


Помог: 22 раз(а)




Первый цикл не нужен
PHP:
скопировать код в буфер обмена
  1.  
  2. foreach($items as $key => $item) {
  3.                        
  4.                 if (in_array( $item->catslug, $_POST['chb'])) {
  5.                 unset($items[$key]);
  6.                                
  7.                                 }
  8.                         }    
  9.  
 
 Top
gurvinek
Отправлено: 05 Мая, 2015 - 10:45:44
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Апр. 2014  


Помог: 0 раз(а)




да, согласен, так тоже работает, но все равно скрипт делает то, что мне нужно ровно наоборот. Он удаляет выбранное, а надо, чтобы оставлял только выбранное.
 
 Top
Panoptik
Отправлено: 05 Мая, 2015 - 11:48:52
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




инвертируйте условие в if'е при помощи оператора отрицания "!"

PHP:
скопировать код в буфер обмена
  1. foreach($items as $key => $item) {
  2.         if (!in_array( $item->catslug, $_POST['chb'])) {
  3.                 unset($items[$key]);
  4.         }
  5. }


-----
Just do it
 
 Top
gurvinek
Отправлено: 05 Мая, 2015 - 11:52:30
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Апр. 2014  


Помог: 0 раз(а)




все получилось, спасибо

еще один момент: при загрузке страницы теперь, т.к. ничего не выбрано, массив не отображается совсем. Соответственно при выборе чего то выбранное отображается.
А как сделать так, чтобы изначально (при загрузке страницы) массив отображался полностью?

Разобрался:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. foreach($items as $key => $item) {
  3.                         if (isset($_POST['chb'])){
  4.                                 if (!in_array( $item->catslug, $_POST['chb'])) {
  5.                                         unset($items[$key]);
  6.                         }
  7.                     }    
  8.                 }
  9.  



еще один вопрос: как сохранить состояние чекбокса после перезагрузки страницы?

(Отредактировано автором: 05 Мая, 2015 - 20:22:08)

 
 Top
gurvinek
Отправлено: 06 Мая, 2015 - 17:50:02
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Апр. 2014  


Помог: 0 раз(а)




Сделал так:

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2.  
  3.    function checked( $value )
  4.    {
  5.        $checkboxes = $_POST['chb'];
  6.        
  7.        if( in_array( $value, (array)$checkboxes ) )
  8.        {
  9.            return "checked";
  10.        }
  11.        else
  12.        {
  13.            return false;
  14.        }
  15.    }
  16. ?>


и к каждому <input> добавил <?=checked?>
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB