Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Новости
Форумы портала PHP.SU » PHP » Программирование на PHP » Новости

Страниц (1): [1]
 

1. Tahion - 14 Декабря, 2009 - 18:37:09 - перейти к сообщению
Вот сам скрипт, но он не хочет работать. Помогите разобраться:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. include_once('config.php');
  4.  
  5. $num = 15;
  6. $page = $_GET['page'];
  7. mysql_connect($DB_host,$DB_user,$DB_pass) or die("Ошибка");
  8. mysql_select_db($DB_name);
  9. $result = mysql_query("SELECT COUNT(*) FROM news");
  10. $num_row = mysql_num_rows($result);
  11. $total = intval(($num_row - 1) / $num) + 1;
  12. $page = intval($page);
  13. if(empty($page) or $page < 0) $page = 1;
  14.   if($page > $total) $page = $total;
  15. $start = $page * $num - $num;
  16. $result = mysql_query("SELECT * FROM news LIMIT $start, $num");
  17. while ( $postrow[] = mysql_fetch_array($result))
  18.  
  19. echo "<table align='center' class='news1' width=100% cellpadding=1 cellspacing=0>";
  20.  
  21. echo "<tr>
  22.                
  23.        <tr><td rowspan='3' class='image'><center><a href='index.php?p=allnew&id=".$postrow[$i]['id']."'><img height='150' width='180' src='".$postrow[$i]['image']."'></a></center></td>
  24.       <td><center><h3><a href='index.php?p=allnew&id=".$postrow[$i]['id']."'>".$postrow[$i]['title']."</a></h3></center></td></tr>
  25.       <tr><td>".$postrow[$i]['ltext']."...</td></tr>
  26.            <tr><td valign='bottom'><p align='right'>".$postrow[$i]['date']."</p></td></tr><hr class='hr'>
  27.            ";
  28.  
  29. echo "</table>";
  30.  
  31. if ($page != 1) $pervpage = '<a href= ./page?page=1><<</a>
  32.                               <a href= ./page?page='. ($page - 1) .'><</a> ';
  33.  
  34. if ($page != $total) $nextpage = ' <a href= ./page?page='. ($page + 1) .'>></a>
  35.                                   <a href= ./page?page=' .$total. '>>></a>';
  36.  
  37. if($page - 2 > 0) $page2left = ' <a href= ./page?page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
  38. if($page - 1 > 0) $page1left = '<a href= ./page?page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
  39. if($page + 2 <= $total) $page2right = ' | <a href= ./page?page='. ($page + 2) .'>'. ($page + 2) .'</a>';
  40. if($page + 1 <= $total) $page1right = ' | <a href= ./page?page='. ($page + 1) .'>'. ($page + 1) .'</a>';
  41.  
  42. echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage;
  43.  
  44. ?>
  45.  
2. Carzil - 14 Декабря, 2009 - 18:39:25 - перейти к сообщению
Какая ошибка?
3. Tahion - 14 Декабря, 2009 - 18:48:50 - перейти к сообщению
Отображает одну пустую строку таблицы, и внизу циферка 1 и все, больше ничего нет
4. Carzil - 14 Декабря, 2009 - 18:54:17 - перейти к сообщению
mysql_error()?
5. EuGen - 14 Декабря, 2009 - 18:55:14 - перейти к сообщению
6. Carzil - 14 Декабря, 2009 - 19:00:17 - перейти к сообщению
EuGen, я думаю эту статью уже раз 20 все прочитали.
7. Мелкий - 14 Декабря, 2009 - 19:22:47 - перейти к сообщению
Tahion, что меня в вашем коде смущает - так это то, что ответ мускула вы пишете в массив $postrow, который мало того, что только память занимает - кроме цикла нигде не используется, так вы ещё и к элементам его пытаетесь обратиться совершенно неинициализированной переменной $i, которая нигде не меняется.
Да и вообще структура цикла какая-то странная...
PHP:
скопировать код в буфер обмена
  1. echo "<table align='center' class='news1' width=100% cellpadding=1 cellspacing=0>";
  2. $result = mysql_query("SELECT * FROM news LIMIT $start, $num");
  3. while ( $postrow = mysql_fetch_array($result)) {
  4.  
  5. echo "<tr>
  6.  
  7.        <tr><td rowspan='3' class='image'><center><a href='index.php?p=allnew&id=".$postrow['id']."'><img height='150' width='180' src='".$postrow['image']."'></a></center></td>
  8.       <td><center><h3><a href='index.php?p=allnew&id=".$postrow['id']."'>".$postrow['title']."</a></h3></center></td></tr>
  9.       <tr><td>".$postrow['ltext']."...</td></tr>
  10.            <tr><td valign='bottom'><p align='right'>".$postrow['date']."</p></td></tr><hr class='hr'>
  11.            ";
  12.  }
  13. echo "</table>";

Вот так как минимум правильнее логика цикла. В разметке не разбирался, так что может бодренько поплыть.
8. Tahion - 14 Декабря, 2009 - 19:23:34 - перейти к сообщению
суть не в ошибке mysql а в самом скрипте, при изменении $num, внизу циферка 1, а остальные цифры не отображает
9. Carzil - 14 Декабря, 2009 - 19:38:30 - перейти к сообщению
У меня была ошибка в MySQL.
10. Tahion - 14 Декабря, 2009 - 19:58:21 - перейти к сообщению
походу там ошибка в высчитывании количества строк в таблице, но как ее исправить?
11. Мелкий - 14 Декабря, 2009 - 21:14:37 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $result = mysql_query("SELECT COUNT(*) FROM news");
  2. $num_row = mysql_num_rows($result);

мммм... а может определитесь, что вы хотите получать? Что вы делаете: запрашиваете у MySQL количество строк в таблице, а переменной записываете не ответ MySQL, а количество строк, которое она вернула по запросу - т.е. одну.
Не mysql_num_rows, а mysql_result тогда уж.
12. EuGen - 18 Декабря, 2009 - 10:35:15 - перейти к сообщению
Значит, и в 21-й раз прочесть не грех, если первые 20 не помогли. Нужно учиться искать свои ошибки, без этого программировать самостоятельно не получится.

 

Powered by ExBB FM 1.0 RC1