Сообщений: 321
Тем: 16
Зарегистрирован: May 2010
Репутация:
428
$Q1 = mysql_query("SELECT * FROM tnews WHERE date_up <='".date('Y-m-d H:i ')."' ORDER BY date_up DESC LIMIT 5 ");
сделай запрос напрямую в базу и посмотри - сколько вернет записей.
вначале все верно было.
Сообщений: 191
Тем: 12
Зарегистрирован: Aug 2009
Репутация:
48
DreamCast Написал:$Q1 = mysql_query("SELECT * FROM tnews WHERE date_up <='".date('Y-m-d H:i')."' ORDER BY date_up DESC LIMIT 5 ");
сделай запрос напрямую в базу и посмотри - сколько вернет записей.
вначале все верно было.
Возвращает 2 записи, кокраз те которие есть в базе, но когда смотрю на сайт * ( *- тоисть через переменную SMARTY кидаю на шаблон ) виводиться только 1 запись ( 1-вая по ID )
Сообщений: 509
Тем: 7
Зарегистрирован: Apr 2008
Репутация:
1,660
Cool_prime Написал:Ах да, не заметил, поставил LIMIT 0, 10. Но все равно не работает, убрал вообще все И WHERE и ORDER, все равно, виводит токо 1 запись, решил етот вопрос другим способом вивода, а именно напрямую через result_query() в переменную, а в шаблоне описал Foreach...(и т.д. as $row) и вивод такой примерно:
PHP код: <?=$row->title?><br />
<?=$row->body?>
краткие теги - зло. проверено на опыте.
DreamCast Написал:$Q1 = mysql_query("SELECT * FROM tnews WHERE date_up <='".date('Y-m-d H:i')."' ORDER BY date_up DESC LIMIT 5 ");
сделай запрос напрямую в базу и посмотри - сколько вернет записей.
вначале все верно было. зачем такой запрос? он полюбому выведет все последние записи и без указания даты. date() без второго аргумента отформатирует текущую дату и запрос эквивалентен
Код: SELECT * FROM tnews WHERE date_up <= NOW() ORDER BY date_up DESC LIMIT 5
какой в этом толк? все записи итак будут меньше NOW()
Код: SELECT tnews.* FROM tnews ORDER BY date_up DESC LIMIT 5
Совет топикстартеру - используй ORM вместо generic sql, сократит время на разработку и нервы на отдладку.
Твои запросы с встраиванием переменных непосредственно в запрос могут быть критическими точками без подходящей проверки вводимых данных. Либо используй prepared statements (mysql_prepare/mysqli_prepare)
Сообщений: 191
Тем: 12
Зарегистрирован: Aug 2009
Репутация:
48
Aquanox Написал:краткие теги - зло. проверено на опыте. Наверно что да, но для верстальщика ето будет проще чем вписивать в файл шаблона переменние( или их функции ).
Aquanox Написал:какой в этом толк? все записи итак будут меньше NOW() Дело не в запросе, я его изменял, даже чистим вивел, решил вопрос вот так:
PHP код: <?php
$result = array();
$q = mysql_query("SELECT productID FROM ".SPECIAL_OFFERS_TABLE." order by sort_order") or die (mysql_error());
while ($row = mysql_fetch_row($q))
{
$q1 = mysql_query("SELECT productID, name, picture, Price FROM ".PRODUCTS_TABLE." where productID=$row[0]") or die (mysql_error());
if ($row1 = mysql_fetch_row($q1))
{
$row1[3] = show_price_new($row1[3]);
$result[] = $row1;
}
}
$smarty->assign("special_offers",$result);
И не верите, все вишло)
Сообщений: 6,450
Тем: 262
Зарегистрирован: Nov 2007
Репутация:
44,165
Cool_prime Написал:Ах да, не заметил, поставил LIMIT 0, 10 Да я же не о том, тут хоть 1000 в лимит прописать эффект не изменится. Здесь максимум какое условие в WHERE может быть, это типа approve, чтобы проверить, опубликована ли новость, все остальное сортировать по date.
Cool_prime Написал:решил вопрос вот так: Честно, очень плохо решили.
PHP код: <?php
$row = mysql_query('SELECT table1.* FROM table1, table2 WHERE table1.productId = table2.productId');
Cool_prime Написал:<?=$row->title?> Это для этого Smarty устанавливали? Чем не устроил:
PHP код: <?php
{foreach from="$row" item="news"}
<h1>{$news.title}</h1>
<p>{$news.body}</p>
{/foreach}
Сообщений: 191
Тем: 12
Зарегистрирован: Aug 2009
Репутация:
48
PROGRAMMATOR Написал: Да я же не о том, тут хоть 1000 в лимит прописать эффект не изменится. Здесь максимум какое условие в WHERE может быть, это типа approve, чтобы проверить, опубликована ли новость, все остальное сортировать по date.
Честно, очень плохо решили.
PHP код: <?php
$row = mysql_query('SELECT table1.* FROM table1, table2 WHERE table1.productId = table2.productId');
Это для этого Smarty устанавливали? Чем не устроил:
PHP код: <?php
{foreach from="$row" item="news"}
<h1>{$news.title}</h1>
<p>{$news.body}</p>
{/foreach}
Если честно то даXD
Поетому я, сделал так ( код я изменил.) вивод данних почти как ти навел пример=) Но работает! Главное что сейчас не могу разобраться с Пейджером, может поможеш в етой статейке?)
Сообщений: 6,450
Тем: 262
Зарегистрирован: Nov 2007
Репутация:
44,165
Пейджером - это есть пагинатор?
Сообщений: 191
Тем: 12
Зарегистрирован: Aug 2009
Репутация:
48
PROGRAMMATOR Написал:Пейджером - это есть пагинатор? Да, ето я так его називаю...
Но все равно сути ето не меняет ( почти )...
Сообщений: 6,450
Тем: 262
Зарегистрирован: Nov 2007
Репутация:
44,165
Ну и чего не выходит? Что было сделано для того, чтобы вышло?
Сообщений: 191
Тем: 12
Зарегистрирован: Aug 2009
Репутация:
48
PROGRAMMATOR Написал:Ну и чего не выходит? Что было сделано для того, чтобы вышло?
Сначало... В самом начале, било перерито все поисковики
но я серйезно, в инете не нашел подходящего.
PHP код: <?php
if($_GET['id']=='') {
$cont = 'shortstory';
define('CATEGORIES_TABLE', 'SE_categories');
define('PRODUCTS_TABLE', 'tnews');
define('SPECIAL_OFFERS_TABLE', 'SE_special_offers');
$result = array();
$q = mysql_query("SELECT newsID FROM SE_news WHERE date_up <='".date('Y-m-d H:i:s')."' order by date_up ") or die (mysql_error());
while ($row = mysql_fetch_row($q))
{
$q1 = mysql_query("SELECT * FROM SE_news WHERE newsID=$row[0]") or die (mysql_error());
if ($row1 = mysql_fetch_row($q1))
{
$row1[3] = substr($row1[3],0,100);
$result[] = $row1;
}
$result1[] = $row;
$smarty->assign("cat",$result1);
$smarty->assign("data",$result);
$news_tpl = $smarty->fetch("shortstory.tpl");
}
$limit = 7; // кол-во записей на страницу
//выясняем общее кол-во элементов
$Query = "SELECT COUNT(*) as counts FROM SE_news";
$arr = mysql_query($Query); //это функция обработки запросов
$total_records = $arr[counts];
$sql_start=0;
$navigator_string ="";
if ($total_records>$limit) {
if ($_GET['st']<>"") {$sql_start=$_GET['st']-1;}
$request_str = $_SERVER["REQUEST_URI"];
$pattern = "/&st=\d{1,4}/i";
$tmp= ceil($total_records/$limit);
$navigator_string ="<span style='font-size:12px'>страницы: ";
for ($i=1;$i<=$tmp;$i++) {
$replacement = "&st=".(($i-1)*$limit+1);
$url = preg_replace($pattern, $replacement, $request_str);
if (!strpos($url,"&st=")) {$url .= $replacement;}
if ($sql_start==($i-1)*$limit) {
$tmp_str = "<b>$i </b>";
} else {
$tmp_str = "<a href='$url' style='font-size:12px'>$i </a>";
}
$navigator_string .= $tmp_str;
}
$navigator_string .= "</span>";
}
//собственно запрос
$Query1 = "SELECT * FROM SE_news WHERE newsID=$row[0] LIMIT $sql_start,$limit";
$arr = mysql_query($Query1);
echo $navigator_string; // странички
}
else {
include('engine/scripts/fullstory.php');
}
Посмотрите, ето пока тестовий код, вместе с текущим пейджером.
|