Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.09.2007, 23:41   #1
mjc66
Новичок
Джуниор
 
Регистрация: 02.09.2007
Сообщений: 1
Злость Постраничный вывод из БД на PHP

Здесь http://softtime.ru/info/articlephp.php?id_article=33 взял скрипт постраничного вывода из БД заточил под свои нужды, выглядит он теперь так:
[CODE]<?php
// Устанавливаем соединение с базой данных
include "config_mysql.php";
//переменная
$group_production = (isset($_GET['group_production']))?$_GET['group_production']:'ГСО(Государственные Стандартные Образцы)';
?>
<style>
.cell_1{background:99FFCC}
.cell_2{background:FFFFCC}
</style>

<table border='1' cellspacing='1' cellpadding='1' class='3'>
<tr>
<td class='3' align='center'>
<b>Наименование товара</b>
</td>
</tr>
<?php
// Переменная хранит число товарных позиций выводимых на странице
$num = 30;
// Извлекаем из URL текущую страницу
$page = (isset($_GET['page']));
// Определяем общее число товарных позиций в базе данных
$result = mysql_query("SELECT COUNT(*) FROM tovary");
$result = mysql_fetch_row($result);
// Находим общее число страниц
$total = intval(($result[0] - 1) / $num) + 1;
// Определяем начало товарных позиций для текущей страницы
$page = intval($page);
// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
// Вычисляем начиная к какого номера
// следует выводить товарные позиции
$start = $page * $num - $num;
// Выбираем $num сообщений начиная с номера $start
$result = mysql_query("SELECT * FROM tovary WHERE group_production = 'ГСО(Государственные Стандартные Образцы)' LIMIT $start,$num");
// В цикле переносим результаты запроса в массив
$i = 0;
while ($arResult = mysql_fetch_array($result)):
$i++;
?>
<tr class='cell_<?=($i%2)+1;?>'>
<td>
<?=$arResult['name'];?>
</td>
</tr>
<?endwhile;?>
</table>
<?php
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href="

Последний раз редактировалось mjc66; 02.09.2007 в 23:50.
mjc66 вне форума Ответить с цитированием
Старый 03.09.2007, 04:36   #2
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

ну а вопрос-то в чем?
SkyM@n вне форума Ответить с цитированием
Старый 01.08.2009, 17:33   #3
Андрей79
Пользователь
 
Регистрация: 15.02.2009
Сообщений: 63
По умолчанию

Подскажите, как в моем коде сделать постраничный вывод, 5 столбцов и 4 строки? Вот код, который выводит данные из БД (выводятся в 1 столбец друг под другом)
Код:
<?php 
$query ="SELECT id, title, unix_timestamp(date) AS date FROM images WHERE 1 ORDER BY id"; 
$res = mysql_query( $query ); 
while( $img = mysql_fetch_array( $res ) ) { 
echo '<table>';
	        echo '<tr>';
		
 
 // Выводим заголовок 
  echo '<h3>'.$img['title'].'</h3>';
echo date('Y-m-d',$img["date"]);



  // Выводим изображение 
  $title = str_replace( '"', '', $img['title'] ); 
  echo '<div><a href="image.php?size=big&id='.$img['id'].'" target="_blank">'; 
  echo '<img src="image.php?size=small&id='.$img['id'].'" alt="'.$title.'" border="0" /></a></div>&nbsp;&nbsp;&nbsp;';  

echo '</tr>';
echo '</table>';
 
}
Андрей79 вне форума Ответить с цитированием
Старый 01.08.2009, 18:11   #4
Андрей79
Пользователь
 
Регистрация: 15.02.2009
Сообщений: 63
По умолчанию

пробовал так
Код:
<html> 
<head> 
<title>Загрузка изображений</title> 
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> 
</head> 
<body> 
<h1>Загруженные изображения</h1> 
<?php  

// Переменная хранит число сообщений выводимых на станице  
$num = 5;  
// Извлекаем из URL текущую страницу  
$page = $_GET['page'];  
// Определяем общее число сообщений в базе данных  
$res = mysql_query("SELECT COUNT(*) FROM images");  
$posts = mysql_fetch_row($res);  
// Находим общее число страниц  
$total = intval(($posts - 1) / $num) + 1;  
// Определяем начало сообщений для текущей страницы  
$page = intval($page);  
// Если значение $page меньше единицы или отрицательно  
// переходим на первую страницу  
// А если слишком большое, то переходим на последнюю  
if(empty($page) or $page < 0) $page = 1;  
  if($page > $total) $page = $total;  
// Вычисляем начиная к какого номера  
// следует выводить сообщения  
$start = $page * $num - $num;  
// Выбираем $num сообщений начиная с номера $start  
$res = mysql_query("SELECT * FROM images LIMIT $start, $num");  
// В цикле переносим результаты запроса в массив $postrow  
while ( $postrow[] = mysql_fetch_array($res))  
?> 


<?php  
echo "<table>";  
for($i = 0; $i < $num; $i++)  
{  
 echo "<tr> 
         <td>".$postrow[$i]['title']."</td> 
         <td>".$postrow[$i]['date']."</td></tr> 
       <tr><td colspan=\"2\">".$postrow[$i]['<img src="image.php?size=small&id='.$img['id'].'" alt="'.$title.'" border="0" />']."</td></tr>";  
}  
echo "</table>";  
?> 
<?php  
// Проверяем нужны ли стрелки назад  
if ($page != 1) $pervpage = '<a href= ./page?page=1><<</a>  
                               <a href= ./page?page='. ($page - 1) .'><</a> ';  
// Проверяем нужны ли стрелки вперед  
if ($page != $total) $nextpage = ' <a href= ./page?page='. ($page + 1) .'>></a>  
                                   <a href= ./page?page=' .$total. '>>></a>';  

// Находим две ближайшие станицы с обоих краев, если они есть  
if($page - 2 > 0) $page2left = ' <a href= ./page?page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';  
if($page - 1 > 0) $page1left = '<a href= ./page?page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';  
if($page + 2 <= $total) $page2right = ' | <a href= ./page?page='. ($page + 2) .'>'. ($page + 2) .'</a>';  
if($page + 1 <= $total) $page1right = ' | <a href= ./page?page='. ($page + 1) .'>'. ($page + 1) .'</a>'; 

// Вывод меню  
echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage;  

?>
выдает
Цитата:
Fatal error: Unsupported operand types in /home/www/ххххх/htdocs/akanya/index.php on line 119
вот она, строка эта $total = intval(($posts - 1) / $num) + 1;

Что тут не так?
Андрей79 вне форума Ответить с цитированием
Старый 01.08.2009, 18:48   #5
Metandrostenalon
Форумчанин
 
Регистрация: 03.04.2009
Сообщений: 108
По умолчанию

mysql_fetch_row -- Орабатывает ряд результата запроса и возвращает неассоциативный массив.

массив - 1, очень оригинально
php,javascript
Metandrostenalon вне форума Ответить с цитированием
Старый 01.08.2009, 18:51   #6
spein
Программист
Форумчанин
 
Аватар для spein
 
Регистрация: 27.02.2009
Сообщений: 505
По умолчанию

Ты у массива $posts отнимаешь 1. Бред

Sorry; не пока читал ответили)
there are no limits when you're software engineer
spein вне форума Ответить с цитированием
Старый 01.08.2009, 20:32   #7
TDrive
Пользователь
 
Регистрация: 22.07.2009
Сообщений: 95
По умолчанию

Цитата:
Сообщение от Андрей79 Посмотреть сообщение
Код:
while ( $postrow[] = mysql_fetch_array($res))
лучше написать:
while($i=mysql_fetch_array($res)) $postrow[]=$i;

потому что в твоём варианте сначала прибавляется значение массиву $postrow а потом проверяется существует оно или нет. по этому в конце массива всегда будет:
$postrow[x]=null
может вызвать ошибку которую трудно найти)
сам недавно споткнулся на этом.
TDrive вне форума Ответить с цитированием
Старый 01.08.2009, 22:35   #8
Андрей79
Пользователь
 
Регистрация: 15.02.2009
Сообщений: 63
По умолчанию

Вот, пытаюсь сделать постраничный вывод, выводит 5 значений, но фото не выводится. что не так пишу?
Код:
<html> 
<head> 
<title>Загрузка изображений</title> 
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> 
</head> 
<body> 
<h1>Загруженные изображения</h1> 
<?php 

// Переменная хранит число сообщений выводимых на станице 
$num = 5; 
// Извлекаем из URL текущую страницу 
$page = $_GET['page']; 
// Определяем общее число сообщений в базе данных 
$res = mysql_query("SELECT COUNT(*) FROM images"); 
$posts = mysql_fetch_row($res); 
// Находим общее число страниц 
$total = intval(($posts=1) / $num) + 1; 
// Определяем начало сообщений для текущей страницы 
$page = intval($page); 
// Если значение $page меньше единицы или отрицательно 
// переходим на первую страницу 
// А если слишком большое, то переходим на последнюю 
if(empty($page) or $page < 0) $page = 1; 
if($page > $total) $page = $total; 
// Вычисляем начиная к какого номера 
// следует выводить сообщения 
$start = $page * $num - $num; 
// Выбираем $num сообщений начиная с номера $start 
$res = mysql_query("SELECT * FROM images LIMIT $start, $num"); 
// В цикле переносим результаты запроса в массив $postrow 
while($i=mysql_fetch_array($res)) $postrow[]=$i; 
?> 


<?php 
echo "<table>"; 
for($i = 0; $i < $num; $i++) 
{ 
echo "<tr> 
<td>".$postrow[$i]['title']."</td> 
<td>".$postrow[$i]['date']."</td></tr> 
<tr><td colspan=\"2\">".$postrow[$i]['<img src="image.php?size=small&id='.$img['id'].'" alt="'.$title.'" border="0" />']."</td></tr>"; 
} 
echo "</table>"; 
?> 
<?php 
// Проверяем нужны ли стрелки назад 
if ($page != 1) $pervpage = '<a href= ./page?page=1><<</a> 
<a href= ./page?page='. ($page - 1) .'><</a> '; 
// Проверяем нужны ли стрелки вперед 
if ($page != $total) $nextpage = ' <a href= ./page?page='. ($page + 1) .'>></a> 
<a href= ./page?page=' .$total. '>>></a>'; 

// Находим две ближайшие станицы с обоих краев, если они есть 
if($page - 2 > 0) $page2left = ' <a href= ./page?page='. ($page - 2) .'>'. ($page - 2) .'</a> | '; 
if($page - 1 > 0) $page1left = '<a href= ./page?page='. ($page - 1) .'>'. ($page - 1) .'</a> | '; 
if($page + 2 <= $total) $page2right = ' | <a href= ./page?page='. ($page + 2) .'>'. ($page + 2) .'</a>'; 
if($page + 1 <= $total) $page1right = ' | <a href= ./page?page='. ($page + 1) .'>'. ($page + 1) .'</a>'; 

// Вывод меню 
echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage; 

?>
Блин, и еще - ставишь 5 записей показывать, показывает 5, а ссылки на вторую страницу нет.... Помогите разобраться, плиз, и как правильно фото вывести в моем случае???

Код image.php (выводит фото из БД)
Код:
<?php 
include ('config.php');

$size = 'big'; 
if ( isset( $_GET['size'] ) and $_GET['size'] == 'small' ) $size = 'small'; 

if ( isset( $_GET['id'] ) ) { 
  // Здесь $id номер изображения 
  $id = (int)$_GET['id']; 
  if ( $id > 0 ) { 
    $query = "SELECT `img_".$size."`, `mimetype` FROM `images` WHERE `id`=".$id; 
    // Выполняем запрос и получаем файл 
    $res = mysql_query($query); 
    if ( mysql_num_rows( $res ) == 1 ) { 
      $image = mysql_fetch_array($res); 
      // Отсылаем браузеру заголовок, сообщающий о том, что сейчас будет передаваться файл изображения 
      if ( $size == 'big' ) 
        header('Content-type: '.$image['mimetype']); 
      else 
        header('Content-type: image/jpeg');      
      // И  передаем сам файл 
      echo $image['img_'.$size]; 
    } 
  } 
} 
?>
Андрей79 вне форума Ответить с цитированием
Старый 02.08.2009, 14:54   #9
spein
Программист
Форумчанин
 
Аватар для spein
 
Регистрация: 27.02.2009
Сообщений: 505
По умолчанию

<img src="image.php?size=small&id='.$img['id'].'" alt="'.$title.'" border="0" />

Если я не ошибаюсь, такая конструкция не возможна.
there are no limits when you're software engineer
spein вне форума Ответить с цитированием
Старый 02.08.2009, 15:58   #10
TDrive
Пользователь
 
Регистрация: 22.07.2009
Сообщений: 95
По умолчанию

Цитата:
Сообщение от Андрей79 Посмотреть сообщение
Код image.php (выводит фото из БД)
Код:
<?php 
include ('config.php');

$size = 'big'; 
if ( isset( $_GET['size'] ) and $_GET['size'] == 'small' ) $size = 'small'; 

if ( isset( $_GET['id'] ) ) { 
  // Здесь $id номер изображения 
  $id = (int)$_GET['id']; 
  if ( $id > 0 ) { 
    $query = "SELECT `img_".$size."`, `mimetype` FROM `images` WHERE `id`=".$id; 
    // Выполняем запрос и получаем файл 
    $res = mysql_query($query); 
    if ( mysql_num_rows( $res ) == 1 ) { 
      $image = mysql_fetch_array($res); 
      // Отсылаем браузеру заголовок, сообщающий о том, что сейчас будет передаваться файл изображения 
      if ( $size == 'big' ) 
        header('Content-type: '.$image['mimetype']); 
      else 
        header('Content-type: image/jpeg');      
      // И  передаем сам файл 
      echo $image['img_'.$size]; 
    } 
  } 
} 
?>
чё то я понять не могу.
ты из базы данных получаеш изображение в каком виде? по байтам?)
если только ссылку на изображение то отправлять в браузер надо как html код. а если по байтам то отправлять как изображение.
как то у тебя всё запутано
лучше перепиши это всё в 1 скрипт и в строке
<tr><td colspan=\"2\">".$postrow[$i]['<img src="image.php?size=small&id='.$img['id'].'" alt="'.$title.'" border="0" />']."</td></tr>";

вместо src="image.php?size=small&id='.$img['id'].'"
возьми из БД адрес картинки и вставь сразу адрес на картинку


о_О
$postrow[$i]['<img src="image.php?size=small&id='.$img['id'].'" alt="'.$title.'" border="0" />']
а что у массива $postrow такой странный 2 параметр?
$postrow ты берёш из БД у тебя в БД в таблице такие: '<img src="image.php?size=small&id='.$img['id'].'" alt="'.$title.'" border="0" />' названия столбцов?

Последний раз редактировалось TDrive; 02.08.2009 в 16:05.
TDrive вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод формул Влажимир Общие вопросы Delphi 7 10.03.2008 16:21
Вывод на печать -=<[Evklidd]>=- Общие вопросы Delphi 6 22.02.2008 19:56
Delphi, вывод jpg north Помощь студентам 10 27.12.2007 05:45
Вывод видео Altsy Мультимедиа в Delphi 2 22.12.2007 18:24
Вывод подкаталогов! werser Помощь студентам 1 18.06.2007 20:23