а как узнать выполнился ли запрос?

Safary

Новичок
а как узнать выполнился ли запрос?

пример:

$q=mysql_query('SELECT * FROM aples');

как узнать выполнился ли запрос?
Я конечно могу проверить не является ли кол-во полей нулю, но эта функция медленнее будет выполняться, у меня цикл в цикле, и перед каждым вызовом цикла, который в цикле проверяется остались ли ещё ряды...
Есть специальная функция? похоже нету, искал час её по инету, ниче не нашел.
Или придется кол-во полей проверять всётаки?

-~{}~ 11.03.09 21:09:

ну типа если запрос выполнился и нашлись ряды - то возвращает 1. Если больше рядов нет, то возвращает 0

Мне нужно это для выхода из цикла...
 

Safary

Новичок
$q=mysql_query('SELECT * FROM aples');

вот такая функция не работает:

if(!$q) break;

или такая

if(empty($q)) break;

или такая:
if($q==0) break;

понимаете о чем я?

-~{}~ 11.03.09 21:18:

HraKK, а такой, чтоб если есть ячейки - то 1 возвращала, а если их нету - то 0 нету?

у меня mysql_result вот такую ошибку выдает ((
Unable to jump to row 1 on MySQL result index 9
 

Фанат

oncle terrible
Команда форума
он хотел сказать mysql_query
это отвечает на твой вопрос
 

Safary

Новичок
но ведь mysql_query возращает FALSE если не верно запрос сделан, а мне нужно чтоб функция возвращала FALSE, если ничего не нашлось.

-~{}~ 11.03.09 21:30:

Ааа. Всё работает, я просто напутал кое-что...

че-то такая странная конструкция получается, что сам не знаю даже что делать )))

$q='SELECT * FROM structure WHERE link REGEXP "^'.$_SERVER['REQUEST_URI'].'[a-z0-9_-]+/$" LIMIT '.$w.','.$wnum;

if(mysql_query($q)){break;}
mysql_query();
while($ar=mysql_fetch_array($q)){

тупая конструкция получается, потому что mysql_query() сначала выполняет в Ифе, а потом если он в ифе TRUE возвратил - то выполняется ещё раз... потеря скорости ведь выходит
 

Фанат

oncle terrible
Команда форума
а мне нужно чтоб функция возвращала FALSE, если ничего не нашлось.
вот так и НАДО писать. а не "выполнился ли запрос".
на вопрос "найдено ли что-нибудь" отвечает num_rows
 

Beavis

Banned
Safary
Чё-то ты фигню какую то написал..
для получения количества выбранных строк - используй [m]mysql_num_rows[/m]
 

dimagolov

Новичок
Safary, ты бредишь. читай ман как по mysql_query так и по mysql_fetch_array.

кроме того, чтобы узнать, что запрос ничего не отбирает не надо делать SELECT *, надо SELECT COUNT(*), но это если сами данные не нужны при этом
 

Safary

Новичок
Ну да, эту функцию я знаю, но ведь она считает сколько найдено, а это потеря скорости небольшая получается. у меня цикл просто в цикле, вот =)

ну как бы мне нужно знать нашлось че-нить или не нашлось, а сколько нашлось мне пофиг =)
Лучше если бы просто возвращала 1 если нашлось, 0 - если не нашлось.

или может если так написать if(mysql_num_rows($q)==0)
Она будет считать сколько равно num_rows?
Или сразу увидит что не равно 0 и дальше считать не будет и проскочит?

-~{}~ 11.03.09 21:40:

Кстати, странно ПХП реагирует...

$q='SELECT * FROM structure WHERE link REGEXP "^'.$_SERVER['REQUEST_URI'].'[a-z0-9_-]+/$" LIMIT '.$w.','.$wnum;

if($q=mysql_query($q)){echo '=)';}
while($ar=mysql_fetch_array($q)){

вот если так писать, то fetch_array не ругается, а если в if писать вместо = два == как и надо - то ругается... вот че заметил ) Но если 1 = писать то не проверяется mysql_query...
 

dimagolov

Новичок
Safary, ты мануал читать отказываешь принципиально и изучать что значат операторы видимо тоже.

какой смысл отвечать на твои вопросы? это все равно что младенцу теорию относительности излагать.
 

Safary

Новичок
dimagolov, почему принципиально отказываюсь, я читаю, просто не пойму многих вещей... Да и чтоб в мануале найти то что нужно надо всё перечитать
 

x-yuri

Новичок
Да и чтоб в мануале найти то что нужно надо всё перечитать
все не нужно

"^'.$_SERVER['REQUEST_URI'].'[a-z0-9_-]+/$"
почему бы не заменить [a-z0-9_-]+ -> [^/]+

тупая конструкция получается
угу

Ну да, эту функцию я знаю, но ведь она считает сколько найдено, а это потеря скорости небольшая получается. у меня цикл просто в цикле, вот =)
так расскажи, что ты в этих двух циклах сделать пытаешься
 

Safary

Новичок
запрос к примеру. сайт.ру/programs/

и выводятся категории программ, при щелчке на категорию - выводятся программы, кароче древовидные структуры =))
Но я уже всё сделал, уже помощь не нужна, для интереса рассказываю.

категории в таблице как бы выводятся, чтобы можно было задать сколько по вертикали и сколько по горизонтали выводить.
если к примеру задано горизонталь - 5, а вертикаль - 9, а в базе нет стока категорий, то если ниче не находит то цикл останавливается, таблица закрывается...

кароче создается начало таблицы - <table>
начинается первый цикл, который ставит <tr>, потом вызывает второй цикл, который уже категории грузит в <td></td>
второй цикл заканчивается...
мы всё ещё в первом цикле находимся и ставим тут </tr>
первый цикл закрывается.
заканчивается таблица - </table>

это функция... если задать по горизонтали кол-во ячеек 2, а по вертикали 3 - то выведется вот такое:

______________________
архиваторы | редакторы |
___________|__________|
вьюверы...... | система..... |
___________|__________|
графика...... | браузеры... |
___________|__________|


кстати как сама идея то? =)
П.С. Кстати поздравьте меня, у мя юбилей - 100 сообщений ровно! =) случайно заметил кстати
 

dimagolov

Новичок
Safary, да ты крут немерянно. ты в качестве ключа для поиска в БД используешь url страницы да еще и с регуляркой. и у тебя по этому ключу дерево построено. это явно уникальная идея...

даже не знаю что тебе посоветовать... вернее в каких словах это будет понятно тебе.

-~{}~ 11.03.09 17:59:

Safary, почитай если не мануал то FAQ хотя-бы http://phpfaq.ru/formtable
 

Safary

Новичок
а как тут без регулярки обойтись?
И не пойму как не по url страницы искать...
Если в адресной строке - всеравно такой путь - /programs/
Всёравно ID урла /programs/ придется искать, а потом уже по ид выбирать, это ещё тупее вариант.
Подскажи пожалуйста как ты такие вещи делаешь...
Тоесть как ты организовываешь дерево и набирая адресс в браузере выбираешь в дерево то что нужно?
А то я чую что мой код фигня блин =(

-~{}~ 12.03.09 01:09:

Фак читаю ща, может найду какой-нить ответ на вопрос... Но всеравно ответь плиз, как нормально такая фигня делается
 

Активист

Активист
Команда форума
PHP:
$query = 'SELECT * FROM structure WHERE link REGEXP "^'.$_SERVER['REQUEST_URI'].'[a-z0-9_-]+/$" LIMIT '.$w.','.$wnum;

$resource = mysql_query($query);
if ($resource === false) {
   exit("Error in SQL: ".mysql_error());
}

if (mysql_num_rows($resource) < 1) {
  echo "Not found";
}

while($array=mysql_fetch_array($resource)){
   // some code hear
}
 

dimagolov

Новичок
сделай себе отдельную таблицу категорий:
CatID, CatName, по которой ты один раз найдешь CatID своей programs, причем programs ты вытянешь из URI в PHP и передашь прослешенной строкой в запрос. А потом, вторым запросом запросишь из таблицы:
CatID, ParentID
всех детей текущей категории.
Если вычитаешь и поймешь, что такое JOIN, то сможешь тем же запросом вытянуть и названия тех детей.
 

Safary

Новичок
Прочитал Фак, но мыслей он мне не подкинул, там ведь по ID выбирается из базы.. всмысле страница такая:
www.tratata.ru/index.php?id=8

А я то так хочу сделать:
www.tratata.ru/programs/graphics/editors/photoshop/
Вот как в таком случае делают все нормальные программисты?
От регулярных выражений можно избавиться конечно, но поиск всеравно будет типо того: 'SELECT FROM tratata WHERE link='.$_GET['level1'];

Подскажи, друг... Мне это очень надо!
 

dimagolov

Новичок
Активист, шел бы ты жевать свой орбит и не встрявал бы сюда с вредными советами.
 
Сверху