Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Синтаксис оператора SELECT

Сообщения:  [1-10]    [11-20]   [21-30]  [31-40] 

 
 автор: Valick   (10.06.2011 в 14:14)   письмо автору
5.7 Кб
 
   для: inkrize   (10.06.2011 в 00:36)
 

а вот вариант, когда одна новость может принадлежать разным категориям
не забудьте обновить базу, там некоторые изменения добавлена связующая таблица и убрано поле id_cat из таблицы news

<?php 
include('conect.php');
// проверка переменных (упрощенно)
if(isset($_GET['page'])) $page=intval($_GET['page']); else $page=1;
if(isset(
$_GET['cat'])){
    
$cat=intval($_GET['cat']);
    
$where="WHERE catnews.id_cat=$cat";
    }else{
    
$where="";
}
$offset=($page-1)*5
// вывод категорий
echo " <b>новости</b> <a href='news_bloc.php'>без категорий</a> ";
$query="SELECT * FROM cat";
$res=mysql_query($query); 
if(
mysql_num_rows($res)>0){  
    while(
$s=mysql_fetch_assoc($res)){
        echo 
"| <a href='news_bloc.php?cat=".$s[id]."'>$s[name]</a> ";
    }  
}else { 
echo(
"Отсутствуют категории...");
}
echo 
"<hr />";
// вывод новостей
$query="SELECT
            DISTINCT
            SQL_CALC_FOUND_ROWS news.* 
            FROM news 
            LEFT JOIN catnews
                ON catnews.id_news=news.id
            
$where 
            ORDER BY id DESC 
            LIMIT 
$offset,5";
$res=mysql_query($query); 
if(
mysql_num_rows($res)>0){  
    while(
$s=mysql_fetch_assoc($res)){
        echo 
$s[date]." <b>$s[title]</b><br />";
        echo 
$s[s_text]."<br /> <a href=''>читать далее</a>...<br />";
        echo 
"<hr />";
    }  
}else { 
echo(
"Новостей нет...");

     
// Вывод панели перехода со страницы на страницу 
echo("<center>");
$query="SELECT FOUND_ROWS()";
$res=mysql_query($query); 
$num=mysql_result($res,0); 
$page_num=ceil($num/5);
for(
$ps=0$ps<$page_num$ps++){ 
    
$ps2=$ps+1;
    if(
$cat) echo("<a href='news_bloc.php?page=$ps2&cat=$cat'>$ps2</a> ");
    else
    echo(
"<a href='news_bloc.php?page=$ps2'>$ps2</a> ");

echo(
"</center>"); 
?> 

как видно из кода изменен только лишь запрос к базе и добавлена таблица, а функциональность сильно повысилась.

  Ответить  
 
 автор: Valick   (10.06.2011 в 12:41)   письмо автору
5.5 Кб
 
   для: inkrize   (10.06.2011 в 00:36)
 


<?php 
include('conect.php');
// проверка переменных (упрощенно)
if(isset($_GET['page'])) $page=intval($_GET['page']); else $page=1;
if(isset(
$_GET['cat'])){
    
$cat=intval($_GET['cat']);
    
$where="WHERE id_cat=$cat";
    }else{
    
$where="";
}
$offset=($page-1)*5
// вывод категорий
echo " <a href='news_bloc.php'>новости без категорий</a> ";
$query="SELECT * FROM cat";
$res=mysql_query($query); 
if(
mysql_num_rows($res)>0){  
    while(
$s=mysql_fetch_assoc($res)){
        echo 
"| <a href='news_bloc.php?cat=".$s[id]."'>$s[name]</a> ";
    }  
}else { 
echo(
"Отсутствуют категории...");
}
echo 
"<hr />";
// вывод новостей
$query="SELECT
            SQL_CALC_FOUND_ROWS * 
            FROM news 
$where 
            ORDER BY id DESC 
            LIMIT 
$offset,5";
$res=mysql_query($query); 
if(
mysql_num_rows($res)>0){  
    while(
$s=mysql_fetch_assoc($res)){
        echo 
$s[date]." <b>$s[title]</b><br />";
        echo 
$s[s_text]."<br /> <a href=''>читать далее</a>...<br />";
        echo 
"<hr />";
    }  
}else { 
echo(
"Новостей нет...");

     
// Вывод панели перехода со страницы на страницу 
echo("<center>");
$query="SELECT FOUND_ROWS()";
$res=mysql_query($query); 
$num=mysql_result($res,0); 
$page_num=ceil($num/5);
for(
$ps=0$ps<$page_num$ps++){ 
    
$ps2=$ps+1;
    if(
$cat) echo("<a href='news_bloc.php?page=$ps2&cat=$cat'>$ps2</a> ");
    else
    echo(
"<a href='news_bloc.php?page=$ps2'>$ps2</a> ");

echo(
"</center>"); 
?> 

пробуйте + в аттаче база и конфиг

  Ответить  
 
 автор: Valick   (10.06.2011 в 11:12)   письмо автору
 
   для: inkrize   (10.06.2011 в 00:36)
 

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

  Ответить  
 
 автор: Valick   (10.06.2011 в 00:38)   письмо автору
 
   для: inkrize   (10.06.2011 в 00:36)
 

ну Апачь с МайЭСКЮЭЛЕМ запущу как положено и проверю код :)

  Ответить  
 
 автор: inkrize   (10.06.2011 в 00:36)   письмо автору
 
   для: Valick   (10.06.2011 в 00:35)
 

>завтра на работе запульну сервер


Непонял? =)

  Ответить  
 
 автор: Valick   (10.06.2011 в 00:35)   письмо автору
 
   для: inkrize   (10.06.2011 в 00:24)
 

завтра на работе запульну сервер и будем посмотреть, на пальцах сложно докопаться до истины :)

  Ответить  
 
 автор: inkrize   (10.06.2011 в 00:24)   письмо автору
 
   для: Valick   (10.06.2011 в 00:20)
 

а что там с постраничным выводом и категориями?

  Ответить  
 
 автор: inkrize   (10.06.2011 в 00:23)   письмо автору
 
   для: Valick   (10.06.2011 в 00:20)
 

while($s=mysql_fetch_assoc($query))

В оригинале все правильно, это я в сообщении опечатался(

  Ответить  
 
 автор: Valick   (10.06.2011 в 00:20)   письмо автору
 
   для: inkrize   (10.06.2011 в 00:13)
 

если изменяете код нужно быть внимательнее :)
while($s=mysql_fetch_assoc($res)) -> while($s=mysql_fetch_assoc($query))

но это не есть гуд, так Вы будете путаться в переменных
$query - это запрос как бы, а
$res - это ресурс
___
послушайте совет, привыкайте к грамотному написанию кода.. это сэкономит потом и время и нервы)

  Ответить  
 
 автор: inkrize   (10.06.2011 в 00:13)   письмо автору
 
   для: Valick   (10.06.2011 в 00:03)
 


<?php
    
include("db.php");
    
$page=$_GET["page"];
    
$offset=($page-1)*5;
    
$cat=1;

    
    
$query=mysql_query("SELECT * FROM news ORDER BY id DESC LIMIT $offset,5");
    
              if(
mysql_num_rows($query)>0){ 
                   while(
$s=mysql_fetch_assoc($res)){ 
                         echo $[
id];
                        
// Дальше идет вывод всех полей с оформлением и две пустые строки для                   разделения новостей
                  

             }
            else
            {
                  echo(
"Новостей нет...");
             }
    
// Вывод панели перехода со страницы на страницу
    
echo("<center>");
    
$q2=mysql_query("SELECT * FROM news");
    
$all_stats=mysql_num_rows($q2);
    
$page_num=ceil($all_stats/5);
    for(
$ps=0$ps<$page_num$ps++)
    {
        
$ps2=$ps+1;
        echo(
"<a href='blog.php?page=$ps2'>$ps2</a> ");
    }
    echo(
"</center>");
?>

  Ответить  

Сообщения:  [1-10]    [11-20]   [21-30]  [31-40] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования