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

Форум MySQL

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Постраничный вывод
 
 автор: Oligarx   (30.04.2005 в 17:41)   письмо автору
 
 


<?
$dbname    
'guestbook';
$host      'localhost';
$user      'root';
$pass      '';
$tbname    'gb';
$link      mysql_connect($host,$user,$pass);
$num       5;
@
$page      $_POST['page'];

@
$nik   = ($_POST['nik']);
@
$email = ($_POST['email']);
@
$msg   = ($_POST['msg']);

$query="INSERT into gb values('0','$nik','$email','$msg')";
mysql_connect($host,$user,$pass);
if (!@
mysql_select_db($dbname,$link))
  {
    echo 
"<p>К сожалению, не доступна база данных</p>";
    exit();
  }
if (
mysql_db_query($dbname,$query,$link)) 


$query    =  "SELECT * FROM $tbname";
$result   mysql_db_query ($dbname,$query,$link);
if(!
$result) exit(mysql_error());

print (
"<table border=1 width=\"75%\" cellspacing=2 cellspadding=2 align=center>\n");
print (
"<tr align=center valign=top>\n");
print (
"<td align=center valign=top>nik</td>\n");
print (
"<td align=center valign=top>email</td>\n");
print (
"<td align=center valign=top>msg</td>\n");
print (
"</tr>\n");
while (
$row=mysql_fetch_array ($result)) 
{
print (
"<tr align=center valign=top>\n");
print (
"<td align=center valign=top>$row[nik]</td>\n");
print (
"<td align=center valign=top>$row[email]</td>\n");
print (
"<td align=center valign=top>$row[msg]</td>");
print (
"</tr>\n"); 
}
print (
"</table>\n");

//вывод постранично
function link_bar($page$pages_count)
{      
    for (
$j=1;$j<=$pages_count;$j++)
    {
            
// Вывод ссылки
        
if ($j==$page) echo ' <a style="color: #808000;" ><b>'.$j.'</b></a> ';
            else echo 
' <a style="color: #808000;" href='.$_SERVER['PHP_SELF'].'?page='.$j.'>'.$j.'</a> ';
            
// Выводим разделитель после ссылки, кроме последней
            // например, вставить "|" между ссылками
        
if ($j!=$pages_count) echo '|';            
    }
// Конец функции

    // Подключение к базе данных

mysql_connect($host,$user,$pass);
if (!@
mysql_select_db($dbname,$link))
  {
    echo 
"<p>К сожалению, не доступна база данных</p>";
    exit();
  }
    
// Подготовка к постраничному выводу
$perpage 11// Количество отображаемых данных из БД  (11==>выводит 10)
if (empty($_GET['page']) or $_GET['page']<=0$page 1;
    else 
$page = (int)$_GET['page']; // Считывание текущей страницы
    // Общее количество информации
$count mysql_num_rows(mysql_query('SELECT * FROM $tbname')) or die('Error! Записей не найдено!');
$pages_count ceil($count $perpage); // Количество страниц
    // Если номер страницы оказался больше количества страниц
if ($page $pages_count$page $pages_count;
$start_pos = ($page-1) * $perpage// Начальная позиция, для запроса к БД
//

link_bar($page$pages_count);

//
    // Вывод информации из базы данных
$result mysql_query('SELECT * FROM $tbname LIMIT '.$start_pos.', '.$perpage) or die('Error!');
echo 
'<br><center><b>Каталог ссылок</b><br><br>';
while (
$row mysql_fetch_array($result)) echo "<table><tr><td><center>$row[gif]</center></td><td><center>$row[link]</center></td></tr></table>";
echo 
'</center>';
?><html>
 <head>
  <title>Форма
  </title>
 </head>
<body>
 <form action="" method="post">
  <table align=center width=60% height=40% border=0> 
  <tr><td>Ник:</td><td><input type=text size=20 name=nik></td></tr> 
  <tr><td>email:</td><td><input type=text size=20 name=email></td></tr>
  <tr><td>Собщение</td><td><TEXTAREA NAME=msg ROWS=5 COLS=50></TEXTAREA></td></tr>
  <tr><td colspan=2><INPUT TYPE=submit VALUE="Отправить"></td></tr>
 </form>
</body>
</html>
<?
echo ("$num_rows")."\n";
echo (
"$total");
?>


Помогите с постраничным выводом.
Пишет: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in z:\home\localhost\www\proect\qwe.php on line 72
Error! Записей не найдено!

   
 
 автор: Loki   (30.04.2005 в 20:08)   письмо автору
 
   для: Oligarx   (30.04.2005 в 17:41)
 

Используйте двойные кавычки для обрамления sql запросов, а одинарные - тлько для передачи значений в sql.

   
 
 автор: cheops   (30.04.2005 в 22:19)   письмо автору
 
   для: Oligarx   (30.04.2005 в 17:41)
 

Loki хочет сказать что 'SELECT * FROM $tbname' аналогичен "SELECT * FROM \$tbname" - в одинарных кавычках PHP-переменные не интерпретируются и их значения не подставляются. Подробности по ссылке.

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=130

   
 
 автор: Oligarx   (01.05.2005 в 20:08)   письмо автору
 
   для: cheops   (30.04.2005 в 22:19)
 

В общем почитал что по ссылке ... , исправил кое что, терерь выдаёт ошибку на 85 , 103 , 104 страницах! Самое главное на 85, я вообще не знаю что с ней делать!

<?
$dbname    
'guestbook';
$host      'localhost';
$user      'root';
$pass      '';
$tbname    'gb';
$link      mysql_connect($host,$user,$pass);
$num       5;
@
$page      $_POST['page'];

@
$nik   = ($_POST['nik']);
@
$email = ($_POST['email']);
@
$msg   = ($_POST['msg']);

$query  "INSERT into gb values('0','$nik','email','$msg')";
mysql_connect($host,$user,$pass);
if (!@
mysql_select_db($dbname,$link))
  {
    echo 
"<p>К сожалению, не доступна база данных</p>";
    exit();
  }
if (
mysql_db_query($dbname,$query,$link)) 


$query    =  'SELECT * FROM gb';
$result   mysql_db_query ($dbname,$query,$link);
if(!
$result) exit(mysql_error());

print (
"<table border=1 width=\"75%\" cellspacing=2 cellspadding=2 align=center>\n");
print (
"<tr align=center valign=top>\n");
print (
"<td align=center valign=top>nik</td>\n");
print (
"<td align=center valign=top>email</td>\n");
print (
"<td align=center valign=top>msg</td>\n");
print (
"</tr>\n");
while (
$row=mysql_fetch_array ($result)) 
{
print (
"<tr align=center valign=top>\n");
print (
"<td align=center valign=top>$row[nik]</td>\n");
print (
"<td align=center valign=top>$row[email]</td>\n");
print (
"<td align=center valign=top>$row[msg]</td>");
print (
"</tr>\n"); 
}
print (
"</table>\n");

//вывод постранично
function link_bar($page$pages_count)
{      
    for (
$j=1;$j<=$pages_count;$j++)
    {
            
// Вывод ссылки
        
if ($j==$page) echo ' <a style="color: #808000;" ><b>'.$j.'</b></a> ';
            else echo 
' <a style="color: #808000;" href='.$_SERVER['PHP_SELF'].'?page='.$j.'>'.$j.'</a> ';
            
// Выводим разделитель после ссылки, кроме последней
            // например, вставить "|" между ссылками
        
if ($j!=$pages_count) echo '|';            
    }
// Конец функции

    // Подключение к базе данных

mysql_connect($host,$user,$pass);
if (!@
mysql_select_db($dbname,$link))
  {
    echo 
"<p>К сожалению, не доступна база данных</p>";
    exit();
  }
    
// Подготовка к постраничному выводу
$perpage 11// Количество отображаемых данных из БД  (11==>выводит 10)
if (empty($_GET['page']) or $_GET['page']<=0$page 1;
    else 
$page = (int)$_GET['page']; // Считывание текущей страницы
    // Общее количество информации
$count mysql_num_rows(mysql_query('SELECT * FROM gb')) or die('Error! Записей не найдено!');
$pages_count ceil($count $perpage); // Количество страниц
    // Если номер страницы оказался больше количества страниц
if ($page $pages_count$page $pages_count;
$start_pos = ($page-1) * $perpage// Начальная позиция, для запроса к БД
//

link_bar($page$pages_count);

//
    // Вывод информации из базы данных
$result mysql_query('SELECT * FROM gb LIMIT '.$start_pos.', '.$perpage) or die('Error!');
echo 
'<br><center><b>Каталог ссылок</b><br><br>';
while (
$row mysql_fetch_array($result)) echo "<table><tr><td><center>$row[link]</center></td></tr></table>";
echo 
'</center>';
?><html>
 <head>
  <title>Форма
  </title>
 </head>
<body>
 <form action="" method="post">
  <table align=center width=60% height=40% border=0> 
  <tr><td>Ник:</td><td><input type=text size=20 name=nik></td></tr> 
  <tr><td>email:</td><td><input type=text size=20 name=email></td></tr>
  <tr><td>Собщение</td><td><TEXTAREA NAME=msg ROWS=5 COLS=50></TEXTAREA></td></tr>
  <tr><td colspan=2><INPUT TYPE=submit VALUE="Отправить"></td></tr>
 </form>
</body>
</html>
<?
echo ("$num_rows")."\n";
echo (
"$total");
?>


Да, ссылки типа 1|2|3|4|5| выводит, но когда на них нажимаешь сообщения отображаютя но на той же странице и както коряво (не все колонки запонены), в общем не правильно

   
 
 автор: cheops   (01.05.2005 в 20:38)   письмо автору
 
   для: Oligarx   (01.05.2005 в 20:08)
 

Попробуйте после
<?php
$result 
mysql_query('SELECT * FROM gb LIMIT '.$start_pos.', '.$perpage) or die('Error!'); 
?>

Проверить на ошибки
<?php
if(!$result) exit("А в синтаксисе ошибка - ".mysql_error());
?>


PS Не могли бы вы также такие здоровые листинги прикреплять к сообщению в виде файла? Ещё пару такив листингов в теме и никто не захочет её выгружать :)))

   
 
 автор: Oligarx   (02.05.2005 в 05:06)   письмо автору
3.8 Кб
 
   для: cheops   (01.05.2005 в 20:38)
 

В общем прочитал много инфы, исправил, вставил проверку ()
<?php
if(!$result) exit("А в синтаксисе ошибка - ".mysql_error());
?> 

Проверка не среагировала (типо всё правильно), не знаю что и делать, у меня 2 вида скрипта, я их прикреплю так будет легче разобраться :)
Постараюсь больше не писать большие листинги прямо в форуме (в общем исправлюсь), заранее спасибо!

   
 
 автор: cheops   (02.05.2005 в 13:42)   письмо автору
 
   для: Oligarx   (02.05.2005 в 05:06)
 

Хм... странно, у меня проверка среагировала, дело в том, что у вас запрос оформлен следующим образом
<?php
@$result mysql_query('SELECT COUNT * FROM gb');
?>

Функция COUNT обязательно должна сопровождаться скобками, т.е. нужно написать
<?php
@$result mysql_query('SELECT COUNT(*) FROM gb');
?>

   
 
 автор: Oligarx   (02.05.2005 в 20:12)   письмо автору
 
   для: cheops   (02.05.2005 в 13:42)
 

Я исправил, теперь выдаётся тока ошибка Error! Что тогда можно сделать, я не знаю.
Да, и мне ещё не понятно, зачем писать (*) в скобке, чё то я такое первый раз вижу.

   
 
 автор: cheops   (03.05.2005 в 03:34)   письмо автору
 
   для: Oligarx   (02.05.2005 в 20:12)
 

Теперь следует найти где выводится "Error!" и пытаться локализовать ошибки дальше.
COUNT() - это встроенная функция MySQL и как любая функция должна обязательно иметь после имени круглые скобки. Специфика SQL позволяет передавать ей в качестве параметра не только имена столбцов, но и значёк *.

   
 
 автор: Oligarx   (03.05.2005 в 16:18)   письмо автору
 
   для: cheops   (03.05.2005 в 03:34)
 

Ошибку выводит в этой строке! Из этого следует, что оштбочна $start_pos или $perpage, да?
А вот что дальше делать я не знаю :(

$result = mysql_query('SELECT * FROM gb LIMIT '.$start_pos.', '.$perpage) or die('Error!');

   
 
 автор: cheops   (03.05.2005 в 19:20)   письмо автору
 
   для: Oligarx   (03.05.2005 в 16:18)
 

Выведите перед этим строку
<?php
  
echo 'SELECT * FROM gb LIMIT '.$start_pos.', '.$perpage;
?>

Что в ней? Как она выглядит и нет ли ошибок в синтаксисе?

   
Rambler's Top100
вверх

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