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 :: Вывести нужную запись из бд
Покинул форум
Сообщений всего: 63
Дата рег-ции: Июнь 2011
Помог: 0 раз(а)
Имеем 10 записей в бд, хочу вывести одну ту запись, которая включена.
имеем запрос типа: $result = mysql_query("SELECT * FROM baza WHERE vkl != '0' ");
срабатывает как и нужно но мне нужно вывести эту запись не при помощи того, что в запросе (WHERE vkl != '0'), а при помощи php, например:
if ($result[vkl] != '0')
только этот мой метод не срабатывает, помогите пожалуйста вывести эту запись.
caballero
Отправлено: 21 Августа, 2012 - 15:50:25
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Покинул форум
Сообщений всего: 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");
Klinch
Отправлено: 21 Августа, 2012 - 19:32:48
Частый гость
Покинул форум
Сообщений всего: 214
Дата рег-ции: Июль 2012
Покинул форум
Сообщений всего: 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 так, как клики делим на показы.
goga5
Отправлено: 21 Августа, 2012 - 22:51:24
Новичок
Покинул форум
Сообщений всего: 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', можно ли написать такое условие ?
Покинул форум
Сообщений всего: 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', можно ли написать такое условие ?
@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");// показываем без счетчика осталось
@mysql_query("INSERT INTO ip VALUES('', '{$ip}', '{$row[id]}', CURDATE())");
}
// конец для закидываем хита
}
Cкорее всего количество запросов тут не умешьшить
Green
Отправлено: 22 Августа, 2012 - 11:46:48
Частый гость
Покинул форум
Сообщений всего: 214
Дата рег-ции: Апр. 2012 Откуда: Кисловодск
Помог: 9 раз(а)
Вопрос можно? Зачем каждой функции подавлять вывод ошибок?
Это еще не пол беды. Запись вида $row[id] приведет к Notice, так как PHP попробует обратиться к id как к константе. Обрамите в кавычки, то есть - $row['id']...
goga5
Отправлено: 22 Августа, 2012 - 13:15:24
Новичок
Покинул форум
Сообщений всего: 63
Дата рег-ции: Июнь 2011
Помог: 0 раз(а)
Green пишет:
Вопрос можно? Зачем каждой функции подавлять вывод ошибок?
, это моя первая полная сборка и которая работает
Green пишет:
Запись вида $row[id] приведет к Notice
спасибо огромное, исправим...
Klinch пишет:
Cкорее всего количество запросов тут не умешьшить
я немного переписал код и вроде бы чтото получается, вот только по поводу ostalos > '0' or ostalos = '0' проблема, это поменять на ostalos >= '0' ? и сработает в первую очередь то что > а потом = ?
вот переделанный код, тут на 2 запросов меньше получается но выше описанная функция не дает покоя:
в переводе на русский означает 'ostalos больше или равно нулю'
Работать должно правильно.
goga5
Отправлено: 22 Августа, 2012 - 14:27:04
Новичок
Покинул форум
Сообщений всего: 63
Дата рег-ции: Июнь 2011
Помог: 0 раз(а)
Klinch пишет:
Работать должно правильно.
Увы, но не работает так как нужно, срабатывает равно, а нужно пока больше а потом равно, счетчик в базе там где "ostalos" уменьшается до 0 и вот когда на всех фотках этот показатель будет на 0, вот тогда и нужен равно...
Klinch
Отправлено: 22 Августа, 2012 - 14:40:12
Частый гость
Покинул форум
Сообщений всего: 214
Дата рег-ции: Июль 2012
Помог: 0 раз(а)
тоесть, вам требуется, чтобы было так:
Если ostalos > 0 то одно действие
Если ostalos = 0 то совсем иное действие
???
goga5
Отправлено: 22 Августа, 2012 - 14:51:01
Новичок
Покинул форум
Сообщений всего: 63
Дата рег-ции: Июнь 2011
Помог: 0 раз(а)
Klinch пишет:
тоесть, вам требуется, чтобы было так:
Вот смотрите как у нас получается, на всех фотках у нас в таблице там где "ostalos" имеем цифры, например по 100, показываем на сайте всего 1 фотку, когда у нас условие "ostalos > 0" то показы идут пока тех фоток у которых там где "ostalos" не 0, у кого 0 то те фотки не показываем, когда на всех фотках "ostalos" будет 0 вот тогда нам нужно подключить "ostalos = 0", тоесть, если у нас в базе 5 фоток то показываем одну фотку и счетчик "ostalos" минусуем на 1, когда там где "ostalos" стало 0 то это фотка отключается и включается другая фотка и.т.д., когда все счетчики "ostalos" стали на 0, то тогда нам нужен равно...
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.