|
автор: Helga (22.04.2005 в 12:09) |
|
| Привет. Помогите плиз. Что это за ошибка такая? | |
|
|
|
|
|
|
|
для: Helga
(22.04.2005 в 12:09)
| | Скорее всего в качестве второго аргумента функции передаётся массив, а нужен скаляр, или наоборот передаётся скаляр, а нужен массив. Без кода тут наверняка сложно сказать. Приведите пожалуйста ту строчку кода, которая вызывает ошибку. | |
|
|
|
|
автор: Helga (22.04.2005 в 12:50) |
|
|
для: cheops
(22.04.2005 в 12:17)
| | Вот строчка: <?if (in_array($ChildCategories[$j]->Code, $catidArray)) { }?>
(Извините, я в php совершеннейший чайник, но дали задание - надо разбираться :) | |
|
|
|
|
|
|
|
для: Helga
(22.04.2005 в 12:50)
| | Попробуйте вывести дамп массива $catidArray
<?php
print_r($catidArray);
?>
|
до вызова функции in_array() - что он выводит? Массив не пустой? Это тоже может приводить к такой ошибке. | |
|
|
|
|
автор: Helga (22.04.2005 в 13:22) |
|
|
для: cheops
(22.04.2005 в 12:56)
| | Привожу весь код:
<?if (count($CategoryPath) == 1413) {
$catidFile = fopen("catid.txt",'r');
$catidArray = explode(",",fread($catidFile, filesize("catid.txt")));
fclose($catidFile);
$catidFile = fopen("catid.txt",'r');
$catidArray = explode(",",fread($catidFile, filesize("catid.txt")));
fclose($catidFile); }
if (in_array($ChildCategories[$j]->Code, $catidArray)) { }
for ($j=0; $j<count($ChildCategories); $j++)
{
if (in_array($ChildCategories[$j]->Code, $catidArray)) { }
}
print $CategoryPath[sizeof($CategoryPath)-1]->Name;?>
|
Идея такая: я сделала страницу со списком категорий, а теперь мне велели сделать фильтр, чтобы часть категорий отображалась на стр, а часть нет... | |
|
|
|
|
|
|
|
для: Helga
(22.04.2005 в 13:22)
| | А что находится в catid.txt? Можете привести его фрагмент? | |
|
|
|
|
автор: Helga (22.04.2005 в 16:06) |
|
|
для: cheops
(22.04.2005 в 15:51)
| | Там список id категорий и больше ничего :)
1413, 1422, 1447, 1391, 1421, 1455, 1436, 1395, 1389, 1418, 1444.........(итп) | |
|
|
|
|
|
|
|
для: Helga
(22.04.2005 в 13:22)
| | А я кажется понял, если количество записей в массиве $CategoryPath не равно 1413, то у вас не выполняется чтение файла catid.txt, массив $catidArray остаётся пустой и функция in_array даёт сбой.
Для того, чтобы этого не происходило, следует поместить два последний блока if внутрь первого блока if или поставить проверку на то, является массив $catidArray пустым или нет
<?php
if(empty($catidArray)) exit("Массив \$catidArray пустой, так как число элементов массива \$CategoryPath не равно 1413");
?>
|
| |
|
|
|
|
автор: Helga (25.04.2005 в 15:01) |
|
|
для: cheops
(22.04.2005 в 16:17)
| | Привет, большое спасибо за оперативные и обстоятельные ответы в пятницу.
Но у меня опять ничего не выходит :( Ошибки, правда, теперь не выдаются, но и результата нема. Функцию empty я вставила.
Теперь вместо списка категорий на странице вылезает следующее:
" () "
И всё!! С этих скобок еще ведёт ссылка на ОБЩИЙ (те неотфильтрованный) список категорий, причём подробный... А страница, на которой должен быть (и до вставки фильтра был) краткий список, чиста и занята токо скобками...
Короче, код не работает или работает, но абсолютно криво :( | |
|
|
|
|
|
|
|
для: Helga
(25.04.2005 в 15:01)
| | А не могли бы вы приложить то, что сейчас есть в аттаче, может ещё чего свежим взглядом можно найти... | |
|
|
|
|
|
|
|
для: cheops
(25.04.2005 в 21:33)
| | В смысле, в аттаче, в файле catid? | |
|
|
|
|
|
|
|
для: Helga
(26.04.2005 в 12:57)
| | Т.е. при добавлении к сообщению файл загрузить при помощи поля "Прикрепить", просто большие по объёму файлы засоряют тему, их удобнее прикреплять к сообщению - кому нужно посмотрят, а остальные не будут траить траффик на выгрузку длительных листингов. | |
|
|
|
|
|
|
|
для: cheops
(26.04.2005 в 13:45)
| | Ох...Оказывается я скобок фигурных не там налепила :))) Кое-что получилось. Парюсь дальше. Возможно это не конец истории ;) | |
|
|
|
|
|
|
|
для: Helga
(26.04.2005 в 17:57)
| | Привет. У меня наконец-то почти всё заработало :)), кроме гнусного рубрикатора (те бокового меню). Я приведу кусок кода с фильтром, посмотрите, пожалуйста!
<?for ($j=0; $j<count($ChildCategories); $j++)
{
if (in_array($ChildCategories[$j]->Code, $catidArray)) {
for ($n=0; $n<count($ChildCategories[$j]->Categories); $n++)
{
if (in_array($ChildCategories[$j]->Categories[$n]->Code, $catidArray)) {
print "<tr><td bgcolor=#F4F4F4><span class=\"text\" font-weight : bold;>
<img src=\"IMG/arrn.gif\" border=0>
<a class=\"text\" href=\"default_list1.php?categoryid="
.$ChildCategories[$j]->Categories[$n]->Code."&order=asc&sortby=name&count=20\">"
.$ChildCategories[$j]->Categories[$n]->Name." (".$ChildCategories[$j]->Categories[$n]->ProdCount.") </a></td></tr>" ;
}
}
}
}
?>
|
| |
|
|
|
|
|
|
|
для: Helga
(28.04.2005 в 12:17)
| | А в чём выражается не работа, т.е. что ожидается от кода и как он ведёт себя на самом деле? | |
|
|
|
|
|
|
|
для: cheops
(28.04.2005 в 13:12)
| | Меню должно фильтровать имеющиеся в базе категории, те часть выводить, часть - нет. А оно выводит всё подряд | |
|
|
|
|
|
|
|
для: Helga
(28.04.2005 в 13:22)
| | Попрубуйте вывести значения фильтров $ChildCategories[$j]->Code и не следует ли поставить перед каким-нибудь in_array отрицание ! - такое ощущение, что действительно должно выводится всё. | |
|
|
|
|
|
|
|
для: cheops
(28.04.2005 в 13:49)
| | Эх! Я уже с наши программером поругалась, тк он тоже ошибу найти не может :)).
А что значит вывести значение и зачем ставится отрицание? | |
|
|
|
|
|
|
|
для: Helga
(29.04.2005 в 13:08)
| | Ну т.е. вывести значения $ChildCategories[$j]->Code при помощи echo или print
<?php
print $ChildCategories[$j]->Code."<br>";
?>
|
и
<?php
print $ChildCategories[$j]->Categories[$n]->Code."<br>";
?>
|
| |
|
|
|