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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Wrong datatype for second argument
 
 автор: Helga   (22.04.2005 в 12:09)
 
 

Привет. Помогите плиз. Что это за ошибка такая?

   
 
 автор: cheops   (22.04.2005 в 12:17)   письмо автору
 
   для: 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 совершеннейший чайник, но дали задание - надо разбираться :)

   
 
 автор: cheops   (22.04.2005 в 12:56)   письмо автору
 
   для: 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($catidFilefilesize("catid.txt")));
fclose($catidFile);

$catidFile fopen("catid.txt",'r');
$catidArray explode(",",fread($catidFilefilesize("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;?>


Идея такая: я сделала страницу со списком категорий, а теперь мне велели сделать фильтр, чтобы часть категорий отображалась на стр, а часть нет...

   
 
 автор: cheops   (22.04.2005 в 15:51)   письмо автору
 
   для: 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.........(итп)

   
 
 автор: cheops   (22.04.2005 в 16:17)   письмо автору
 
   для: 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 я вставила.
Теперь вместо списка категорий на странице вылезает следующее:

" () "

И всё!! С этих скобок еще ведёт ссылка на ОБЩИЙ (те неотфильтрованный) список категорий, причём подробный... А страница, на которой должен быть (и до вставки фильтра был) краткий список, чиста и занята токо скобками...
Короче, код не работает или работает, но абсолютно криво :(

   
 
 автор: cheops   (25.04.2005 в 21:33)   письмо автору
 
   для: Helga   (25.04.2005 в 15:01)
 

А не могли бы вы приложить то, что сейчас есть в аттаче, может ещё чего свежим взглядом можно найти...

   
 
 автор: Helga   (26.04.2005 в 12:57)   письмо автору
 
   для: cheops   (25.04.2005 в 21:33)
 

В смысле, в аттаче, в файле catid?

   
 
 автор: cheops   (26.04.2005 в 13:45)   письмо автору
 
   для: Helga   (26.04.2005 в 12:57)
 

Т.е. при добавлении к сообщению файл загрузить при помощи поля "Прикрепить", просто большие по объёму файлы засоряют тему, их удобнее прикреплять к сообщению - кому нужно посмотрят, а остальные не будут траить траффик на выгрузку длительных листингов.

   
 
 автор: Helga   (26.04.2005 в 17:57)   письмо автору
 
   для: cheops   (26.04.2005 в 13:45)
 

Ох...Оказывается я скобок фигурных не там налепила :))) Кое-что получилось. Парюсь дальше. Возможно это не конец истории ;)

   
 
 автор: Helga   (28.04.2005 в 12:17)   письмо автору
 
   для: 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>&nbsp;
          <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>" 
        }
      }  
    }
  }  
?>

   
 
 автор: cheops   (28.04.2005 в 13:12)   письмо автору
 
   для: Helga   (28.04.2005 в 12:17)
 

А в чём выражается не работа, т.е. что ожидается от кода и как он ведёт себя на самом деле?

   
 
 автор: Helga   (28.04.2005 в 13:22)   письмо автору
 
   для: cheops   (28.04.2005 в 13:12)
 

Меню должно фильтровать имеющиеся в базе категории, те часть выводить, часть - нет. А оно выводит всё подряд

   
 
 автор: cheops   (28.04.2005 в 13:49)   письмо автору
 
   для: Helga   (28.04.2005 в 13:22)
 

Попрубуйте вывести значения фильтров $ChildCategories[$j]->Code и не следует ли поставить перед каким-нибудь in_array отрицание ! - такое ощущение, что действительно должно выводится всё.

   
 
 автор: Helga   (29.04.2005 в 13:08)   письмо автору
 
   для: cheops   (28.04.2005 в 13:49)
 

Эх! Я уже с наши программером поругалась, тк он тоже ошибу найти не может :)).
А что значит вывести значение и зачем ставится отрицание?

   
 
 автор: cheops   (29.04.2005 в 22:54)   письмо автору
 
   для: 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>";
?>

   
Rambler's Top100
вверх

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