Рейтинг темы:
  • 1 Голос(ов) - 5 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Уважаемые программисты!
#11
$Q1 = mysql_query("SELECT * FROM tnews WHERE date_up <='".date('Y-m-d H:iConfused')."' ORDER BY date_up DESC LIMIT 5 ");

сделай запрос напрямую в базу и посмотри - сколько вернет записей.

вначале все верно было.
Ответ
#12
DreamCast Написал:$Q1 = mysql_query("SELECT * FROM tnews WHERE date_up <='".date('Y-m-d H:iConfused')."' ORDER BY date_up DESC LIMIT 5 ");

сделай запрос напрямую в базу и посмотри - сколько вернет записей.

вначале все верно было.

Возвращает 2 записи, кокраз те которие есть в базе, но когда смотрю на сайт * ( *- тоисть через переменную SMARTY кидаю на шаблон ) виводиться только 1 запись ( 1-вая по ID )
Ответ
#13
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:iConfused')."' 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)
for(;Forum.getPostCount() < Integer.MAX_VALUE; Forum.writeNewPost()); | TERA Video | GamezTERA Emu
Ответ
#14
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);
И не верите, все вишло)
Ответ
#15
Cool_prime Написал:Ах да, не заметил, поставил LIMIT 0, 10
Smile Да я же не о том, тут хоть 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}
Ответ
#16
PROGRAMMATOR Написал:Smile Да я же не о том, тут хоть 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

Поетому я, сделал так ( код я изменил.) вивод данних почти как ти навел пример=) Но работает! Главное что сейчас не могу разобраться с Пейджером, может поможеш в етой статейке?)
Ответ
#17
Пейджером - это есть пагинатор?
Ответ
#18
PROGRAMMATOR Написал:Пейджером - это есть пагинатор?
Да, ето я так его називаю...

Но все равно сути ето не меняет ( почти )...
Ответ
#19
Ну и чего не выходит? Что было сделано для того, чтобы вышло?
Ответ
#20
PROGRAMMATOR Написал:Ну и чего не выходит? Что было сделано для того, чтобы вышло?

Сначало... В самом начале, било перерито все поисковикиSmile

но я серйезно, в инете не нашел подходящего.

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');

}

Посмотрите, ето пока тестовий код, вместе с текущим пейджером.
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 2 Гость(ей)