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

Форум MySQL

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

 

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

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

тема: Постраничный вывод из mysql

Сообщения:  [1-8] 

 
 автор: cheops   (30.08.2005 в 13:55)   письмо автору
 
   для: sidPR   (29.08.2005 в 22:20)
 

>и самое главно возможно ли зделать помимо постраничной
>навигации алфавитную ... а тоесть по первой букве какого
>либо слова таблице SQL в нашем случае $auto = $arr['auto'];
Вообще формирование ссылок осуществляют при помощи следующиго запроса
SELECT MID(auto,1,1) AS first_char FROM gtat
GROUP BY first_char ORDER BY first_char

Правда в вашем случае не совсем удобно получится - так как у вас некоторые автомобили начинаются с года и вместо названия идёт первая цифра года. Затем когда список букв получен переходя по ссылке извлекают все автомобили, чьё название начинается с выбранной буквы
SELECT * FROM gtat WHERE MID(auto,1,1) = 'K'

PS Под новые вопросы лучше заводить новую тему - иначе потом очень трудно ссылаться.

   
 
 автор: cheops   (30.08.2005 в 13:47)   письмо автору
 
   для: sidPR   (29.08.2005 в 22:20)
 

Тогда постраничную навигацию можно испрвить следующим образом
<?php
  // Устанавливаем соединение с базой данных
  include "config.php";
  $table = 'gtat';

  // Число блоков на странице
  $pnumber = 2;
  // Число страниц справа и слева от текущей страницы < << 2 3 [4] 5 6 >> >
  $linknumber = 2;
  // Элемент постраничной навигации
  $page = $_GET['page'];
  if($page < 1) $page = 1;
  if(empty($page)) $page = 1;
  $begin = ($page - 1)*$pnumber;

  // Формируем и выполняем SQL-запрос
  $select_sql = "SELECT *  FROM $table 
                 ORDER BY id DESC
                 LIMIT $begin, $pnumber";
  $result = MYSQL_QUERY($select_sql); 
  if(!$result) exit(mysql_error());

  // Постраничная навигация
  $query = "SELECT COUNT(*) FROM $table ";
  $ctg = mysql_query($query);
  if(!$ctg) puterror("Ошибка при обращении к таблице");
  $total = mysql_result($ctg,0);

  IF ($total == 0) { 
    PRINT "<CENTER><P>Автомобилей в наличии нет !времено</CENTER>"; 
  }
  ELSEIF ($total > 0)
  { 
    PRINT "<CENTER><P>Автомобилей в наличии: $total<BR><BR>"; 

    WHILE ($arr = mysql_fetch_array($result))
    { 
      $id = $arr['id'];
      $auto = $arr['auto'];
      $date = $arr['date'];
      $scrin = $arr['scrin'];
      $scrinsmall = $arr['scrinsmall'];
      $file = $arr['file'];
      $ops = $arr['ops'];
      echo $auto."<br>";
      $i++;
    }
  }
  $number = (int)($total/$pnumber);
  if((float)($total/$pnumber) - $number != 0) $number++;
  // Вычисляем начальную позицию
  if($page - $linknumber < 1) $str_begin = 1;
  else $str_begin = $page - $linknumber;
  // Вычисляем конечную позицию
  if($page + $linknumber > $number) $str_end = $number;
  else $str_end = $page + $linknumber;
  // Выводим ссылки на другие страницы
  echo "Страницы: ";
  echo "&nbsp;<a title='Первая страница' class=menuinfo href=index.php?page=1>&lt;&lt;</a>&nbsp;";
  if($page > 1) echo "&nbsp;<a title='Первая страница' class=menuinfo href=index.php?page=".($page - 1).">&lt;</a>&nbsp;";
  for($i = $str_begin; $i<=$str_end; $i++)
  {
    if($page == $i)
      echo "&nbsp;$i&nbsp;";
    else
      echo "&nbsp;<a title='Открыть страницу' class=menuinfo href=index.php?page=".$i.">$i</a>&nbsp;";
  }
  if($page < $number) echo "&nbsp;<a title='Первая страница' class=menuinfo href=index.php?page=".($page + 1).">&gt;</a>&nbsp;";
  echo "&nbsp;<a title='Первая страница' class=menuinfo href=index.php?page=$number>&gt;&gt;</a>&nbsp;";
?>

   
 
 автор: sidPR   (29.08.2005 в 22:20)   письмо автору
 
   для: cheops   (29.08.2005 в 20:47)
 

Отличный код советую всем ! спасибо уважаемуму cheops'у !
вопрос а как к выше поставленому коду прекрутить <самая первая <<предпоследняя ну и также в другую сторону и чтобы все время выводилось не вся постраничная а только 5 чисел примеру :
< << 1 2 3 4 5 >> >
а при переключении к примеру на 5 (появлелось другая 5 только ужэ соответственно такого вида :
< << 6 7 8 9 10 >> >
______________________________________

и самое главно возможно ли зделать помимо постраничной навигации алфавитную ... а тоесть по первой букве какого либо слова таблице SQL в нашем случае $auto = $arr['auto'];
если это реально то покажите наглядно уж очень интересно как это делаеться*

-------- Заранее всем благадарен за помащь!!!

   
 
 автор: cheops   (29.08.2005 в 20:47)   письмо автору
 
   для: sidPR   (29.08.2005 в 13:01)
 

Давайте немного упростим скрипт и перейдём от mysql_result к более эффективному mysql_fetch_array
<?php
  // Устанавливаем соединение с базой данных
  include "config.php";
  $table = 'gtat';

  // Число блоков на странице
  $pnumber = 2;
  // Элемент постраничной навигации
  $page = $_GET['page'];
  if(empty($page)) $page = 1;
  $begin = ($page - 1)*$pnumber;

  // Формируем и выполняем SQL-запрос
  $select_sql = "SELECT *  FROM $table 
                 ORDER BY id DESC
                 LIMIT $begin, $pnumber";
  $result = MYSQL_QUERY($select_sql); 
  if(!$result) exit(mysql_error());

  // Постраничная навигация
  $query = "SELECT COUNT(*) FROM $table ";
  $ctg = mysql_query($query);
  if(!$ctg) puterror("Ошибка при обращении к таблице");
  $total = mysql_result($ctg,0);

  IF ($total == 0) { 
    PRINT "<CENTER><P>Автомобилей в наличии нет !времено</CENTER>"; 
  }
  ELSEIF ($total > 0)
  { 
    PRINT "<CENTER><P>Автомобилей в наличии: $total<BR><BR>"; 

    WHILE ($arr = mysql_fetch_array($result))
    { 
      $id = $arr['id'];
      $auto = $arr['auto'];
      $date = $arr['date'];
      $scrin = $arr['scrin'];
      $scrinsmall = $arr['scrinsmall'];
      $file = $arr['file'];
      $ops = $arr['ops'];
      echo $auto."<br>";
      $i++;
    }
  }
  $number = (int)($total/$pnumber);
  if((float)($total/$pnumber) - $number != 0) $number++;
  echo "Страницы: ";
  for($i = 1; $i<=$number; $i++)
  {
    if($page == $i)
      echo "&nbsp;$i&nbsp;";
    else
      echo "&nbsp;<a title='Открыть страницу' class=menuinfo href=index.php?id_group=".$_GET['id_group']."&page=".$i.">$i</a>&nbsp;";
  }

?>

   
 
 автор: sidPR   (29.08.2005 в 13:01)   письмо автору
 
   для: Евгений Петров   (29.08.2005 в 12:58)
 

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

Заранее всем спасибо

   
 
 автор: Евгений Петров   (29.08.2005 в 12:58)   письмо автору
 
   для: sidPR   (29.08.2005 в 12:24)
 

Почитай тут если останутся вопросы пиши http://www.softtime.ru/info/articlephp.php?id_article=33

   
 
 автор: sidPR   (29.08.2005 в 12:28)   письмо автору
 
   для: sidPR   (29.08.2005 в 12:24)
 

постарничный вывыод
1 - выглядить должен так << < 1 2 3 > >>
2 - если база пуста вывода нету.

вывод я произвожу так >>

$select_sql = "SELECT *  FROM '$table' ORDER BY 'id' DESC";
$result = MYSQL_QUERY($select_sql);
$number = MYSQL_NUMROWS($result);
$i = 0;

IF ($number == 0) {
PRINT "<CENTER><P>Автомобилей в наличии нет !времено</CENTER>";
} ELSEIF ($number > 0) {
PRINT "<CENTER><P>Автомобилей в наличии: $number<BR><BR>";

WHILE ($i < $number){
    
$id = mysql_result($result,$i,"id");
$auto = mysql_result($result,$i,"Auto");
$date = mysql_result($result,$i,"date");
$scrin = mysql_result($result,$i,"scrin");
$scrinsmall = mysql_result($result,$i,"scrinsmall");
$file = mysql_result($result,$i,"file");
$ops = mysql_result($result,$i,"ops");

$width = '800';
$height = '600';
?>
<script language='JavaScript1.1' type='text/javascript'> 
<!-- 
function show_img(img,width,height) 
{ 
   var a; 
   var b; 
   var features; 
   vidWindowWidth=width + 1; 
   vidWindowHeight=height + 1; 
   a = 0; 
   b = 0; 
   features = "top=" + a + ",left=" + b + ",width=" + vidWindowWidth + ",height=" + vidWindowHeight + ", toolbar=0, menubar=0, status=0, location=0, directories=0, scrollbars=0, resizable=0, marginwidth=0, marginheight=0, bottommargin=0, topmargin=0, leftmargin=0, rightmargin=0"; 
   window.open(img,'',features,true); 
   return false; 
} 
//--> 
</script> 
<?


print  " <br>
 <center>
  <table border='0' cellpadding='0' cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' width='400' height='1'>
    <tr>
      <td width='216' height='1' rowspan='4'><center><a title='Увеличить изображение 800x600' href=# OnClick=\"javascript:show_img('$scrin',$width, $height); return false;\">
      <img border='0' src='$scrinsmall' align='left'></a></center>
</td>
      <td width='498' height='1'>Марка: <b>$auto</b></td>
    </tr>
    <tr>
      <td width='498' height='1'>Год выпуска: <b>$date</b></td>
      </tr>
    <tr>
      <td width='162' height='1' valign='top'>
      <p align='left'>Описание: <b>$ops</b></td>
    </tr>
    <tr>
      <td width='494' height='34' valign='top'>
      

 <b><p>Скачать: <a title='Закачать тачку' href='$file'>
<img border='0' src='img/dd.gif' align='center'></a></p></b></td>
    </tr>
    </table>
  </center>";

   
 
 автор: sidPR   (29.08.2005 в 12:24)   письмо автору
 
 

Вот дамп нужно зделать постраничный вывод.
см. вложение

   

Сообщения:  [1-8] 

Форум разработан IT-студией SoftTime