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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: условие выбора
diodida
Отправлено: 29 Мая, 2011 - 12:39:05
Post Id


Новичок


Покинул форум
Сообщений всего: 35
Дата рег-ции: Май 2011  


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




есть выборка параметров и условия сортировки. сортировка должна быть по нескольким параметрам...вначале 1 потом второй, все через ORDER BY. пытаюсь написать цикл а он отказывается работать, не могу понять в чем ошибка

if (is_null($param)) {
$sqlquery='select * from avtomobil as av
INNER JOIN outlay ON av.ID_rasxod=outlay.ID_rasxod
INNER JOIN power ON av.ID_moschnost=power.ID_moschno st
INNER JOIN volume_motor ON av.ID_obem=volume_motor.ID_obem
INNER JOIN transference ON av.ID_peredach=transference.ID_p eredach
INNER JOIN baggage ON av.ID_bag=baggage.ID_bag
INNER JOIN year_output ON av.ID_god=year_output.ID_god
INNER JOIN road ON av.ID_road=road.ID_road
INNER JOIN wheel_base ON av.ID_base=wheel_base.ID_base
INNER JOIN width ON av.ID_width=width.ID_width
INNER JOIN hight ON av.ID_hight=hight.ID_hight
INNER JOIN length ON av.ID_length=length.ID_length
INNER JOIN body ON av.ID_kyzov=body.ID_kyzov ';
include ("elements_not_null.php"); } // если пришло из списка
else { if ($p == 0) {$sqlquery=$param." ORDER BY ".$two;} // если проводим сортировку, эта строка работает, а вот следующие 2 никак, все равно ORDER by добавляет
$p++
if ($p != 0) {$sqlquery=" , ".$two;}; };

$query = mysql_query($sqlquery, $mydate);
echo "<table WIDTH=100% border=0>";
echo $sqlquery;
// наличие значений в выборке
$array = mysql_fetch_assoc($query);
if($array) { $fields=21;
// сортировка по параметрам
echo "<tr><div align ='left'><b> СОРТИРОВКА ПО ПАРАМЕТРАМ: </b></div></tr>";
echo "<form name='number' form action = 'ssilka.php' target='left' >";
echo "<input type='hidden' name='param' value='$sqlquery','$p=0' />";

echo "<button name='two' value=' year_output.god_vipuska ASC'/>Самостоятельное ТО</button>";

echo "<button name='two' value=' volume_motor.obem_dvig DESC,power.moschnost_dvig DESC,width.width DESC,hight.hight DESC,length.length DESC, wheel_base.base DESC'/>Представительское авто</button>";

echo "<button name='two' value=' outlay.ras_gor ASC'/>Авто для города</button>";
 
 Top
OrmaJever Модератор
Отправлено: 29 Мая, 2011 - 12:45:18
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




diodida пишет:
а он отказывается работать

это не аргумент
diodida пишет:
не могу понять в чем ошибка

http://phpfaq[dot]ru/debug

(Отредактировано автором: 29 Мая, 2011 - 13:02:59)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
diodida
Отправлено: 29 Мая, 2011 - 12:52:43
Post Id


Новичок


Покинул форум
Сообщений всего: 35
Дата рег-ции: Май 2011  


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




OrmaJever пишет:
это не аргумент


не работает в смысле всегда ORDER by или второе условие, и не понятно как считает $p вот в чем проблема.
оно вот что пишет
select * from avtomobil as av INNER JOIN outlay ON av.ID_rasxod=outlay.ID_rasxod INNER JOIN power ON av.ID_moschnost=power.ID_moschno st INNER JOIN volume_motor ON av.ID_obem=volume_motor.ID_obem INNER JOIN transference ON av.ID_peredach=transference.ID_p eredach INNER JOIN baggage ON av.ID_bag=baggage.ID_bag INNER JOIN year_output ON av.ID_god=year_output.ID_god INNER JOIN road ON av.ID_road=road.ID_road INNER JOIN wheel_base ON av.ID_base=wheel_base.ID_base INNER JOIN width ON av.ID_width=width.ID_width INNER JOIN hight ON av.ID_hight=hight.ID_hight INNER JOIN length ON av.ID_length=length.ID_length INNER JOIN body ON av.ID_kyzov=body.ID_kyzov ORDER BY outlay.ras_za_gor ASC ORDER BY outlay.ras_za_gor ASC
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in E:\Server\Apache2\htdocs\ssilka.php on line 31
(Добавление)
diodida пишет:
это не аргумент

или вторй вариант
, year_output.god_vipuska ASC
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in E:\Server\Apache2\htdocs\ssilka.php on line 31
 
 Top
OrmaJever Модератор
Отправлено: 29 Мая, 2011 - 13:01:46
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




я понимаю лень было почитать по сылке http://phpfaq[dot]ru/debug
Преведу сюда 2 пункт
Цитата:
Цитата:
2. При проблемах с MySQL (supplied argument is not a valid MySQL result resource) под строкой, где произошла ошибка, обязательно надо вывести на экран mysql_error() и сам запрос - для визуального контроля и копирования на форум. повторяю - вывести надо ЗАПРОС! А не PHP-код, который его формирует.

(Отредактировано автором: 29 Мая, 2011 - 14:42:56)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
EuGen Администратор
Отправлено: 29 Мая, 2011 - 13:04:14
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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






-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
diodida
Отправлено: 29 Мая, 2011 - 13:05:14
Post Id


Новичок


Покинул форум
Сообщений всего: 35
Дата рег-ции: Май 2011  


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




OrmaJever пишет:
я понимаю лень было почитать по сылке http://phpfaq[dot]ru/debug
Преведу сюда 2 пункт


написала я echo mysql_error() после и выдало ту ошибку которую я и так вижу... я не понимаю почему параметр не считает! Даже если так написать, выдает
else { if ($p == 0) {$sqlquery=$param." ORDER BY ".$two;};
if ($p != 0) {$sqlquery=" , ".$two;};
$p++; echo $p;};// показывает равный 1
а потом при втором нажатии он опять его 0 делает, я не понимаю куда вписывать его надо, не вижу и все(((
 
 Top
OrmaJever Модератор
Отправлено: 29 Мая, 2011 - 13:08:01
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




diodida пишет:
и выдало ту ошибку которую я и так вижу

эх нам бы её увидеть Растерялся


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
diodida
Отправлено: 29 Мая, 2011 - 13:13:45
Post Id


Новичок


Покинул форум
Сообщений всего: 35
Дата рег-ции: Май 2011  


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




OrmaJever пишет:
эх нам бы её увидеть

просто я не понимаю где переменную объявить чтобы ее правильно считало((
 
 Top
OrmaJever Модератор
Отправлено: 29 Мая, 2011 - 13:17:44
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




Вы можите просто показать ошибку которую вернула mysql_error() ?
И код нужно обромлять в bb теги

(Отредактировано автором: 29 Мая, 2011 - 13:18:14)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
diodida
Отправлено: 29 Мая, 2011 - 13:20:47
Post Id


Новичок


Покинул форум
Сообщений всего: 35
Дата рег-ции: Май 2011  


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




OrmaJever пишет:
Вы можите просто показать ошибку которую вернула mysql_error() ?

1
select * from avtomobil as av INNER JOIN outlay ON av.ID_rasxod=outlay.ID_rasxod INNER JOIN power ON av.ID_moschnost=power.ID_moschno st INNER JOIN volume_motor ON av.ID_obem=volume_motor.ID_obem INNER JOIN transference ON av.ID_peredach=transference.ID_p eredach INNER JOIN baggage ON av.ID_bag=baggage.ID_bag INNER JOIN year_output ON av.ID_god=year_output.ID_god INNER JOIN road ON av.ID_road=road.ID_road INNER JOIN wheel_base ON av.ID_base=wheel_base.ID_base INNER JOIN width ON av.ID_width=width.ID_width INNER JOIN hight ON av.ID_hight=hight.ID_hight INNER JOIN length ON av.ID_length=length.ID_length INNER JOIN body ON av.ID_kyzov=body.ID_kyzov ORDER BY year_output.god_vipuska ASC ORDER BY outlay.ras_gor ASC
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in E:\Server\Apache2\htdocs\ssilka.php on line 30
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY outlay.ras_gor ASC' at line 13
 
 Top
SAD
Отправлено: 29 Мая, 2011 - 13:27:49
Post Id



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


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


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




круто, order by должен писаться только один раз!)))
например
CODE (SQL):
скопировать код в буфер обмена
  1. ORDER BY year_output.god_vipuska ASC, outlay.ras_gor ASC
 
 Top
diodida
Отправлено: 29 Мая, 2011 - 13:34:03
Post Id


Новичок


Покинул форум
Сообщений всего: 35
Дата рег-ции: Май 2011  


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




SAD пишет:
круто, order by должен писаться только один раз!)))


я это знаю... проблема в том что оно не выполняет условие но почему понять не могу, где параметр $p ставить!!!
(Добавление)
diodida пишет:
условие но почему понять не могу, где параметр $p ставить!!!

ВОТ САМ КОД
if (is_null($param)) {
$sqlquery='select * from avtomobil as av
INNER JOIN outlay ON av.ID_rasxod=outlay.ID_rasxod
INNER JOIN power ON av.ID_moschnost=power.ID_moschno st
INNER JOIN volume_motor ON av.ID_obem=volume_motor.ID_obem
INNER JOIN transference ON av.ID_peredach=transference.ID_p eredach
INNER JOIN baggage ON av.ID_bag=baggage.ID_bag
INNER JOIN year_output ON av.ID_god=year_output.ID_god
INNER JOIN road ON av.ID_road=road.ID_road
INNER JOIN wheel_base ON av.ID_base=wheel_base.ID_base
INNER JOIN width ON av.ID_width=width.ID_width
INNER JOIN hight ON av.ID_hight=hight.ID_hight
INNER JOIN length ON av.ID_length=length.ID_length
INNER JOIN body ON av.ID_kyzov=body.ID_kyzov ';
include ("elements_not_null.php"); }
else { if ($p == 0) {$sqlquery=$param." ORDER BY ".$two;};
if ($p != 0) {$sqlquery=" , ".$two;};
$p++;
//echo $p;
};

$query = mysql_query($sqlquery, $mydate);
echo "<table WIDTH=100% border=0>";
//echo $sqlquery;
// наличие значений в выборке
$array = mysql_fetch_assoc($query);
echo mysql_error();
if($array) { $fields=21;
// сортировка по параметрам
echo "<tr><div align ='left'><b> СОРТИРОВКА ПО ПАРАМЕТРАМ: </b></div></tr>";
echo "<form name='number' form action = 'ssilka.php' target='left' >";
echo "<input type='hidden' name='param' value='$sqlquery','$p=0' />";
//год с and и без параметров и с ними
echo "<button name='two' value=' year_output.god_vipuska ASC'/>Самостоятельное ТО</button>";
//авто
echo "<button name='two' value=' volume_motor.obem_dvig DESC,power.moschnost_dvig DESC,width.width DESC,hight.hight DESC,length.length DESC, wheel_base.base DESC'/>Представительское авто</button>";
 
 Top
OrmaJever Модератор
Отправлено: 29 Мая, 2011 - 13:54:16
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




выведите перед mysql_query сам запрос
PHP:
скопировать код в буфер обмена
  1. ...
  2. var_dump($sqlquery);
  3. $query = mysql_query($sqlquery, $mydate);
  4. ...

чуствую там что попало написано Растерялся


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
diodida
Отправлено: 29 Мая, 2011 - 14:02:55
Post Id


Новичок


Покинул форум
Сообщений всего: 35
Дата рег-ции: Май 2011  


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




OrmaJever пишет:
чуствую там что попало написано


у нас приходит из списка параметры выбранные пользователем и ссылки выводятся с параметрами по которым модем сортировать, можно так выбрать , а можно сортировать выборку, и там проверка если сортируем то ORDER by добавляем и параметр, $p на 1 увеличивается но второе условие при повторной сортировке не работает...
(Добавление)
OrmaJever пишет:
выведите перед mysql_query сам запрос


var_dump показывает сам запрос
после сортировки тоже самое! просто не видет условие
 
 Top
OrmaJever Модератор
Отправлено: 29 Мая, 2011 - 14:11:35
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




diodida я же вас прошу зделать несложные вещи, а вы пишите что-то не то.
У вас ошибка синтаксиса в запросе
diodida пишет:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY outlay.ras_gor ASC' at line 13

mysql не может понять что такое order by, скорее всего он стоит не в том месте и я подозреваю что до order by вобще нету select
Вот если обернуть код в bb теги можно увидеть логику условий
PHP:
скопировать код в буфер обмена
  1. if (is_null($param)) {
  2.  $sqlquery='select * from avtomobil as av
  3. INNER JOIN outlay ON av.ID_rasxod=outlay.ID_rasxod
  4. INNER JOIN power ON av.ID_moschnost=power.ID_moschno st
  5. INNER JOIN volume_motor ON av.ID_obem=volume_motor.ID_obem
  6. INNER JOIN transference ON av.ID_peredach=transference.ID_p eredach
  7. INNER JOIN baggage ON av.ID_bag=baggage.ID_bag
  8. INNER JOIN year_output ON av.ID_god=year_output.ID_god
  9. INNER JOIN road ON av.ID_road=road.ID_road
  10. INNER JOIN wheel_base ON av.ID_base=wheel_base.ID_base
  11. INNER JOIN width ON av.ID_width=width.ID_width
  12. INNER JOIN hight ON av.ID_hight=hight.ID_hight
  13. INNER JOIN length ON av.ID_length=length.ID_length
  14. INNER JOIN body ON av.ID_kyzov=body.ID_kyzov ';
  15.  include ("elements_not_null.php");
  16. } else {
  17.   if ($p == 0) {$sqlquery=$param." ORDER BY ".$two;
  18. };

поскольку в запросе из блока if я не увидел order by (на которую ругается mysql) значит
в запрос попадает та часть которая в else
PHP:
скопировать код в буфер обмена
  1. $sqlquery=$param." ORDER BY ".$two;

Но если выполняется else то не выполнился if и значит запроса нету, в переменой $param лежит запрос? Однако

(Отредактировано автором: 29 Мая, 2011 - 14:12:10)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Если скрипт не работает »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB