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]   

> Без описания
goga5
Отправлено: 21 Августа, 2012 - 15:26:03
Post Id


Новичок


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


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




Имеем 10 записей в бд, хочу вывести одну ту запись, которая включена.

имеем запрос типа: $result = mysql_query("SELECT * FROM baza WHERE vkl != '0' ");
срабатывает как и нужно но мне нужно вывести эту запись не при помощи того, что в запросе (WHERE vkl != '0'), а при помощи php, например:

if ($result[vkl] != '0')

только этот мой метод не срабатывает, помогите пожалуйста вывести эту запись.
 
 Top
caballero
Отправлено: 21 Августа, 2012 - 15:50:25
Post Id


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


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


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




mysql_fetch_array()


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
goga5
Отправлено: 21 Августа, 2012 - 18:09:52
Post Id


Новичок


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


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




caballero пишет:
mysql_fetch_array()

Про это забыл написать Вам, это у нас есть но не получается вытащить запись так как хочу, вернее всё получилось и всё работает но у нас несколько условии в запросе и их нужно выполнять отдельно и из за этого получается 3 запроса а я хотел изменить код на один запрос.

Все запросы наши.

1) показываем фотку с обратным отсчетом "ostalos" и сортируем по CTR
$result = @mysql_query("SELECT * FROM foto WHERE vkl != '0' and ostalos > '0' ORDER BY klikov / pokazov DESC");

2) продолжаем показ когда счетчик "ostalos" уже на 0 и сортируем дальше по CTR
$result = @mysql_query("SELECT * FROM foto WHERE vkl != '0' ORDER BY klikov / pokazov DESC");

3) выше коды показываем уникам, ниже хитам и при этом не показываем фото который он смотрел
$result = @mysql_query("SELECT * FROM foto WHERE vkl != '0' and (id not in ($foxit)) ORDER BY klikov / pokazov DESC");
 
 Top
Klinch
Отправлено: 21 Августа, 2012 - 19:32:48
Post Id


Частый гость


Покинул форум
Сообщений всего: 214
Дата рег-ции: Июль 2012  


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




Ну например так пойдет?


PHP:
скопировать код в буфер обмена
  1. $result = mysql_query("SELECT * FROM baza");
  2. $row = mysql_fetch_array($result);
  3.  
  4. if($row['vkl'] != 0)
  5. {
  6. echo"vkl включен!";
  7. }
  8. if($row['vkl'] == 0)
  9. {
  10. echo"vkl выключен!";
  11. }
  12.  


Или я вас недопонял?

(Отредактировано автором: 21 Августа, 2012 - 19:33:54)

 
 Top
goga5
Отправлено: 21 Августа, 2012 - 20:21:12
Post Id


Новичок


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


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




Klinch пишет:
Или я вас недопонял?

Наверное я не так как нужно объясняю, привожу полный код


if (!@in_array($ip,$ipba)) { //если ip нету (уник)

$result = @mysql_query("SELECT * FROM foto WHERE vkl != '0' and ostalos > '0' ORDER BY urlunik / funik DESC"); // пока показываем то что в "осталось"
$row = @mysql_fetch_assoc($result);
if ($row[foto]) { // если осталось в счетчике показов не 0
$vixod = "<a href=\"/engine/go.php?id=$row[id]\" target=\"_blank\"><img src=\"$row[foto]\" alt=\"$row[title]\" width=\"$row[width]\" height=\"$row[height]\" border=\"0\" /></a>";
} else {
$selected = @mysql_query("SELECT * FROM foto WHERE vkl != '0' ORDER BY urlunik / funik DESC"); // показываем если "осталось" уже 0
$row = @mysql_fetch_assoc($selected);
$vixod = "<a href=\"/engine/go.php?id=$row[id]\" target=\"_blank\"><img src=\"$row[foto]\" alt=\"$row[title]\" width=\"$row[width]\" height=\"$row[height]\" border=\"0\" /></a>";
}

if ($row[ostalos] > 0) {
$ostalos = 'ostalos=ostalos-1,';
}
@mysql_query("UPDATE foto SET $ostalos funik=$row[funik]+1 WHERE id = '$row[id]'");
@mysql_query("INSERT INTO ip VALUES('', '{$ip}', '$row[id]', CURDATE())");
} else {
$selected = @mysql_query("SELECT * FROM foto WHERE vkl != '0' And (id not in ($foxit)) ORDER BY urlunik / funik DESC"); // показываем без счетчика осталось
$row = @mysql_fetch_assoc($selected);
$vixod = "<a href=\"/engine/go.php?id=$row[id]\" target=\"_blank\"><img src=\"$row[foto]\" alt=\"$row[title]\" width=\"$row[width]\" height=\"$row[height]\" border=\"0\" /></a>";

@mysql_query("UPDATE foto SET fhits=$row[fhits]+1 WHERE id = '$row[id]'"); // закидываем хита фотки в статистику

// закидываем в базу хита
if (!@in_array($row[id],$zzz) && $row[id]) {
@mysql_query("INSERT INTO ip VALUES('', '{$ip}', '{$row[id]}', CURDATE())");
}
// конец для закидываем хита
}

Этот код отлично работает, даже очень так как клики по фоткам на много увеличились а вот запросов в этом коде много, можно ли оставить эту же функцию но запросы уменьшить ?
По поводу функции: выводиться на показ всего одна фотка а в базе имеем их примерно 14, для каждой фотки установлено осталось показов, например по 100 показов и все они начинают по очереди показывать по 100 раз и только уникам, после этих показов показываем фотку который имеет больше кликов, тоесть по CTR так, как клики делим на показы.
 
 Top
goga5
Отправлено: 21 Августа, 2012 - 22:51:24
Post Id


Новичок


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


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




ок, тогда подскажите пожалуйста как это сделать, вот мы имеем запрос

mysql_query("SELECT * FROM foto WHERE vkl != '0' and ostalos > '0' or ostalos = '0' ORDER BY urlunik / funik DESC");

у нас есть (ostalos > '0' or ostalos = '0'), как бы я не менял их местами, всегда срабатывает (ostalos = '0') а мне нужно чтобы работало в первую очередь ostalos > '0' а потом уже когда ostalos > '0' будет всё по 0 то работало бы это условие ostalos = '0', можно ли написать такое условие ?

(Отредактировано автором: 21 Августа, 2012 - 22:54:25)

 
 Top
Klinch
Отправлено: 22 Августа, 2012 - 07:46:36
Post Id


Частый гость


Покинул форум
Сообщений всего: 214
Дата рег-ции: Июль 2012  


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




goga5 пишет:
ок, тогда подскажите пожалуйста как это сделать, вот мы имеем запрос

mysql_query("SELECT * FROM foto WHERE vkl != '0' and ostalos > '0' or ostalos = '0' ORDER BY urlunik / funik DESC");

у нас есть (ostalos > '0' or ostalos = '0'), как бы я не менял их местами, всегда срабатывает (ostalos = '0') а мне нужно чтобы работало в первую очередь ostalos > '0' а потом уже когда ostalos > '0' будет всё по 0 то работало бы это условие ostalos = '0', можно ли написать такое условие ?


ostalos >= '0'
(Добавление)
Цитата:
PHP:
скопировать код в буфер обмена
  1. if (!@in_array($ip,$ipba)) { //если ip нету (уник)
  2.  
  3. $result = @mysql_query("SELECT * FROM foto WHERE vkl != '0' and ostalos > '0' ORDER BY urlunik / funik DESC"); // пока показываем то что в "осталось"
  4. $row = @mysql_fetch_assoc($result);    
  5. if ($row[foto]) { // если осталось в счетчике показов не 0
  6. $vixod = "<a href=\"/engine/go.php?id=$row[id]\" target=\"_blank\"><img src=\"$row[foto]\" alt=\"$row[title]\" width=\"$row[width]\" height=\"$row[height]\" border=\"0\" /></a>";
  7. } else {
  8. $selected = @mysql_query("SELECT * FROM foto WHERE vkl != '0' ORDER BY urlunik / funik DESC"); // показываем если "осталось" уже 0
  9. $row = @mysql_fetch_assoc($selected);
  10. $vixod = "<a href=\"/engine/go.php?id=$row[id]\" target=\"_blank\"><img src=\"$row[foto]\" alt=\"$row[title]\" width=\"$row[width]\" height=\"$row[height]\" border=\"0\" /></a>";
  11. }
  12.  
  13. if ($row[ostalos] > 0) {
  14. $ostalos = 'ostalos=ostalos-1,';
  15. }
  16. @mysql_query("UPDATE foto SET $ostalos funik=$row[funik]+1 WHERE id = '$row[id]'");
  17. @mysql_query("INSERT INTO ip VALUES('', '{$ip}', '$row[id]', CURDATE())");     
  18. } else {
  19. $selected = @mysql_query("SELECT * FROM foto WHERE vkl != '0' And (id not in ($foxit)) ORDER BY urlunik / funik DESC"); // показываем без счетчика осталось
  20. $row = @mysql_fetch_assoc($selected);
  21. $vixod = "<a href=\"/engine/go.php?id=$row[id]\" target=\"_blank\"><img src=\"$row[foto]\" alt=\"$row[title]\" width=\"$row[width]\" height=\"$row[height]\" border=\"0\" /></a>";
  22.  
  23. @mysql_query("UPDATE foto SET fhits=$row[fhits]+1 WHERE id = '$row[id]'"); // закидываем хита фотки в статистику
  24.  
  25. // закидываем в базу хита
  26. if (!@in_array($row[id],$zzz) && $row[id]) {
  27. @mysql_query("INSERT INTO ip VALUES('', '{$ip}', '{$row[id]}', CURDATE())");
  28. }
  29. // конец для закидываем хита
  30. }


Cкорее всего количество запросов тут не умешьшить
 
 Top
Green
Отправлено: 22 Августа, 2012 - 11:46:48
Post Id



Частый гость


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


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




Вопрос можно? Зачем каждой функции подавлять вывод ошибок?
Это еще не пол беды. Запись вида $row[id] приведет к Notice, так как PHP попробует обратиться к id как к константе. Обрамите в кавычки, то есть - $row['id']...
 
 Top
goga5
Отправлено: 22 Августа, 2012 - 13:15:24
Post Id


Новичок


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


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




Green пишет:
Вопрос можно? Зачем каждой функции подавлять вывод ошибок?

Растерялся , это моя первая полная сборка и которая работает Радость
Green пишет:
Запись вида $row[id] приведет к Notice

спасибо огромное, исправим...

Klinch пишет:
Cкорее всего количество запросов тут не умешьшить

я немного переписал код и вроде бы чтото получается, вот только по поводу ostalos > '0' or ostalos = '0' проблема, это поменять на ostalos >= '0' ? и сработает в первую очередь то что > а потом = ?

вот переделанный код, тут на 2 запросов меньше получается но выше описанная функция не дает покоя:

PHP:
скопировать код в буфер обмена
  1. if (!@in_array($ip,$ipba)) {    //если ip нету (уник)
  2. $vivod = 'and (ostalos > 0) or (ostalos = 0)'; вот то про что я писал, в первую очередь нужно вывести там где >, потом уже где =, как это сделать ?
  3. $zapis = 1;
  4. } else {
  5. $vivod = 'And (id not in ($foxit))';
  6. }      
  7.  
  8. $result = @mysql_query("SELECT * FROM foto WHERE vkl != '0' $vivod ORDER BY urlunik / funik DESC LIMIT 1");
  9. $row = @mysql_fetch_assoc($result);            
  10. $vixod = "<a href=\"/engine/go.php?id=$row[id]\" target=\"_blank\"><img src=\"$row[foto]\" alt=\"$row[title]\" width=\"$row[width]\" height=\"$row[height]\" border=\"0\" /></a>";
  11.  
  12.  
  13. if ($zapis == 1) {
  14. if ($row[ostalos] > 0) $ostalos = 'ostalos=ostalos-1,';
  15. @mysql_query("UPDATE foto SET $ostalos funik=$row[funik]+1 WHERE id = '$row[id]'");
  16. //@mysql_query("INSERT INTO ip VALUES('', '{$ip}', '$row[id]', CURDATE())");           
  17. } else {
  18.  
  19. @mysql_query("UPDATE foto SET fhits=$row[fhits]+1 WHERE id = '$row[id]'");
  20.                
  21. if (!@in_array($row[id],$zzz) && $row[id]) {
  22. @mysql_query("INSERT INTO ip VALUES('', '{$ip}', '{$row[id]}', CURDATE())");
  23. }
  24.  
  25. }


оставил комментарии в коде, посмотрите пожалуйста.
 
 Top
Klinch
Отправлено: 22 Августа, 2012 - 14:07:01
Post Id


Частый гость


Покинул форум
Сообщений всего: 214
Дата рег-ции: Июль 2012  


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




Данный код
в переводе на русский означает 'ostalos больше или равно нулю'

Работать должно правильно.
 
 Top
goga5
Отправлено: 22 Августа, 2012 - 14:27:04
Post Id


Новичок


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


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




Klinch пишет:
Работать должно правильно.

Увы, но не работает так как нужно, срабатывает равно, а нужно пока больше а потом равно, счетчик в базе там где "ostalos" уменьшается до 0 и вот когда на всех фотках этот показатель будет на 0, вот тогда и нужен равно...
 
 Top
Klinch
Отправлено: 22 Августа, 2012 - 14:40:12
Post Id


Частый гость


Покинул форум
Сообщений всего: 214
Дата рег-ции: Июль 2012  


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




тоесть, вам требуется, чтобы было так:

Если ostalos > 0 то одно действие
Если ostalos = 0 то совсем иное действие

???
 
 Top
goga5
Отправлено: 22 Августа, 2012 - 14:51:01
Post Id


Новичок


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


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




Klinch пишет:
тоесть, вам требуется, чтобы было так:

Вот смотрите как у нас получается, на всех фотках у нас в таблице там где "ostalos" имеем цифры, например по 100, показываем на сайте всего 1 фотку, когда у нас условие "ostalos > 0" то показы идут пока тех фоток у которых там где "ostalos" не 0, у кого 0 то те фотки не показываем, когда на всех фотках "ostalos" будет 0 вот тогда нам нужно подключить "ostalos = 0", тоесть, если у нас в базе 5 фоток то показываем одну фотку и счетчик "ostalos" минусуем на 1, когда там где "ostalos" стало 0 то это фотка отключается и включается другая фотка и.т.д., когда все счетчики "ostalos" стали на 0, то тогда нам нужен равно...

(Отредактировано автором: 22 Августа, 2012 - 14:57:33)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB