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 :: Помогите с запросом

 PHP.SU

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


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

> Без описания
xaser
Отправлено: 20 Февраля, 2012 - 02:06:50
Post Id



Новичок


Покинул форум
Сообщений всего: 53
Дата рег-ции: Янв. 2012  


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




Помогите выявить и исправить ошибку...

Есть таблица "OSTATKI"...
в ней поля:
- Kod
- Actual
- Tip
- Filial

1) мне нужно получить все значения полей "Kod" и "Actual", когда "Filial" = "1"
и
2) мне нужно получить все значения полей "Kod" и "Actual", когда "Filial" = "1" и "Actual" = 1

я чиркнул такое:
1):
CODE (htmlphp):
скопировать код в буфер обмена
  1. $z="SELECT Kod,Actual FROM ostatki ORDER BY `OSTATKI`.`Tip` ASC WHERE Filial=1 GROUP BY Kod";

и
2):
CODE (htmlphp):
скопировать код в буфер обмена
  1. $z="SELECT Kod,Actual FROM ostatki ORDER BY `OSTATKI`.`Tip` ASC WHERE Filial=1 AND Actual=1 GROUP BY Kod";


потом:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $result=array();
  3. $result=mysql_query($z);
  4. $result=array_unique($result);
  5.  


в итоге, в последней строке:
array_unique() expects parameter 1 to be array, boolean given
 
 Top
DelphinPRO
Отправлено: 20 Февраля, 2012 - 02:20:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


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




array_unique() expects parameter 1 to be array, boolean given это как бы намекает, что в функцию передается булевое значение.
Проверять надо
PHP:
скопировать код в буфер обмена
  1. $result=array();
  2. $result=mysql_query($z);
  3. if ($result !== false) {
  4.     $result=array_unique($result);
  5. }
  6. else {
  7.     echo 'Облом';
  8. }

А булево значение передается, потому что запрос возвращает FALSE, значит он вероятно неверен.
Верно будет так
PHP:
скопировать код в буфер обмена
  1. $z="
  2. SELECT Kod, Actual
  3. FROM ostatki
  4. WHERE Filial=1
  5. ORDER BY `OSTATKI`, `Tip` ASC
  6. GROUP BY Kod
  7. ";
т.е. в операторе ORDER BY поля перечисляются через запятую.
(Добавление)
не, так тоже неправильно.

$result имеет тип RESOURSE и его нельзя передавать в array_unique()

PHP:
скопировать код в буфер обмена
  1. $rows = array();
  2. while ($rows[] = mysql_fetch_assoc($result)){}
  3. $res = array_unique($rows);


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
snikers987
Отправлено: 20 Февраля, 2012 - 08:33:33
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


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




DelphinPRO вообще-то mysql_query() ни как не может возвращать массив.
ТС смотрите в сторону

А если Вам нужны уникальные строки, то лучше вообще возложить эту задачу на бд:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT DISTINCT * FROM `table`

(Отредактировано автором: 20 Февраля, 2012 - 08:41:49)



-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
DelphinPRO
Отправлено: 20 Февраля, 2012 - 08:38:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


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




snikers987, вообще-то я поправился чуть ниже
DelphinPRO пишет:
не, так тоже неправильно.
$result имеет тип RESOURSE и его нельзя передавать в array_unique()


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
xaser
Отправлено: 20 Февраля, 2012 - 20:50:07
Post Id



Новичок


Покинул форум
Сообщений всего: 53
Дата рег-ции: Янв. 2012  


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




snikers987 пишет:
DelphinPRO А если Вам нужны уникальные строки, то лучше вообще возложить эту задачу на бд:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT DISTINCT * FROM `table`


а как мне прилепить в мой случай?! Если мне нужны в результате значения двух колонок (KOD и Actual)
... Actual может принимать значения 0 и 1...
 
 Top
xaser
Отправлено: 21 Февраля, 2012 - 01:13:13
Post Id



Новичок


Покинул форум
Сообщений всего: 53
Дата рег-ции: Янв. 2012  


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




Написал следующее:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?
  3. $result=array();
  4.  
  5. $kolatpage=20; //Кол-во миниатюр на странице
  6. $kolonok=5;
  7.  
  8. $res=mysql_query("SELECT DISTINCT KodKataloga, Actual FROM ostatki WHERE Tip='Напитки' AND stripos(Rubrika,'Сладкие')>0 AND Filial='1' GROUP BY KodKataloga ORDER BY Tip ASC");
  9.  
  10.         while( $row = mysql_fetch_array($res) ){
  11.                 $result[] = $row;
  12.         }
  13.  
  14.         mysql_close($FreeCon);
  15.         $result=rsort($result); //Удалили повторы и отсортировали обратно для удаления
  16.  
  17. //$p - это страница, которую показывать!
  18.    if(!empty($_GET['p'])){
  19.         $p=intval($_GET['p']);
  20.         if ($p<1) {$p=1;}
  21.         }else{
  22.             $p=1;
  23.    }
  24.  
  25.    if ( sizeof($result)<($p*$kolatpage) ){
  26.         $p=1;
  27.    }
  28.    $e=$kolatpage*$p-1;
  29.    if ($e>sizeof($result)-1){$e=sizeof($result)-1;}
  30.  
  31.    echo '<table width="100%" height="400" border="0" align="center" class="Table_ThinLine"><tr>';
  32.  
  33. //тут пытаюсь вывести на экран, $e - это номер в массиве последней миниатюры
  34.    $tr=0; $td=0;
  35.         for ($x=(($p-1)*$kolatpage); $x++<$e;) {
  36.                 $td++;
  37.                 if ($td=$kolonok+1){
  38.                         echo '</tr><tr>';
  39.                         $td=1;
  40.                 }
  41.                 if (file_exists("images/katalog/thumbs/".strtolower($result[$x][0]).".jpeg")){
  42.                         echo '<td align="center" valign="middle"><img src="images/katalog/thumbs/'.strtolower($result[$x][0]).'.jpeg" /></td>';
  43.                 }else{
  44.                         echo '<td align="center" valign="middle"><img src="images/katalog/none_sm.jpeg" /></td>';
  45.                 }
  46.         }
  47. ?>
  48.  


Почему-то все $result[$x] (и $result[$x][0], и $result[$x][1]) пустые...
Где ошибся?

(Отредактировано автором: 21 Февраля, 2012 - 01:17:16)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB