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 » » Вопросы новичков » Подскажите (скрипт новостей)

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

1. etoYA - 02 Августа, 2011 - 00:35:52 - перейти к сообщению
Доброй ночи! Собственно вот скрипт, который вывод новости. У меня есть 2 вопроса по его доработке:

1. У меня тут выводятся 2 новости, при клике по заголовку новости выводится полная новость, но у меня проблема, при клике на 1ю и 2ю новость выводится полная версия 1й новостей, как их присвоить короткую и полную версию по ID?
2. Как сделать так, чтобы выводились новости в обратном порядке, т.е если у меня есть 2 новости 1 и 2, как вывести сначало 2ю, а потом 1ю.



PHP:
скопировать код в буфер обмена
  1. <?
  2. // Подключение настроек mysql
  3. require_once('config.php');
  4.  
  5. // Выборка данных из базы
  6. $result = mysql_query("SELECT * FROM `news` LIMIT 2") or die (mysql_error);
  7.  
  8. // Проверка на успех выборки
  9. if(!$result)
  10. {
  11.   echo mysql_error();  
  12.   exit();
  13. }
  14.  
  15. // Создание таблицы и вывод в нее данных из базы
  16. $count = mysql_num_rows($result);
  17. if ($count > 0){
  18. for ($i = 0; $i < $count; $i++) {
  19.         $row = mysql_fetch_array($result);
  20.         if (!isset($_REQUEST['id'])){
  21.                 echo '<table width="100%" border="0">';
  22.                 echo '<tr>';
  23.                 echo '<td colspan="2">' . '<b>' . '<a href="index.php?page=1&id='.$row['id'].'">'.$row['news_name'].'</a>' . '</b>' . '</td>';
  24.                 echo '<td rowspan="3" valign="top">' . '<img src="'.$row['news_screen']. '"  title="'.$row['news_name'].'" alt="'.$row['news_name'].'" width="200" height="150">' . '</td>';
  25.                 echo '</tr>';
  26.                 echo '<tr><td colspan="2" width="100%">' . $row['cut_message'] . '</td></tr>';
  27.                 echo '<tr>';
  28.                 echo '<td valign="top">' . $row['add'] . '</td>';
  29.                 echo '<td valign="top">' . $row['date'] . '</td>';
  30.                 echo '</tr>';
  31.                 echo '</table>';
  32. }
  33. else{
  34.                 echo '<table width="100%" border="0">';
  35.                 echo '<tr><td><b>'. $row['news_name'] . '</b></td></tr>';
  36.                 echo '<tr><td>' . $row['full_message'] . '</td></tr>';
  37.                 echo '<tr>';
  38.                 echo '<td>' . $row['add'] . '</td>';
  39.                 echo '<td>' . $row['date'] . '</td>';
  40.                 echo '</tr>';
  41.                 echo '</table>';
  42. }
  43. }
  44. }
  45. else
  46.         echo 'Новостей нет';
  47. ?>
2. LIME - 02 Августа, 2011 - 00:41:31 - перейти к сообщению
etoYA пишет:
2. Как сделать так, чтобы выводились новости в обратном порядке, т.е если у меня есть 2 новости 1 и 2, как вывести сначало 2ю, а потом 1ю.

for ($i =$count ; $i >=0; $i--) {
(Добавление)
etoYA пишет:
1. У меня тут выводятся 2 новости, при клике по заголовку новости выводится полная новость, но у меня проблема, при клике на 1ю и 2ю новость выводится полная версия 1й новостей, как их присвоить короткую и полную версию по ID?

PHP:
скопировать код в буфер обмена
  1. if (!isset($_REQUEST['id'])and($_REQUEST['id']!=$row['id'])){
3. etoYA - 02 Августа, 2011 - 00:46:15 - перейти к сообщению
LIME пишет:
for ($i =$count ; $i >0; $i--) {


Действительно, что-то я не подумал, спасибо!
4. LIME - 02 Августа, 2011 - 00:48:47 - перейти к сообщению
etoYA я исправил обратите внимание
(Добавление)
вот что мне совершенно не понятно так это
etoYA пишет:
PHP:
скопировать код в буфер обмена
  1. echo '<td colspan="2">' . '<b>' . '<a href="index.php?page=1&id='.$row['id'].'">'.$row['news_name'].'</a>' . '</b>' . '</td>';

сравните и сделайте вывод
PHP:
скопировать код в буфер обмена
  1. echo '<td colspan="2"><b><a href="index.php?page=1&id='.$row['id'].'">'.$row['news_name'].'</a></b></td>';
5. etoYA - 02 Августа, 2011 - 01:01:20 - перейти к сообщению
Сравнил, вывод сделал)
(Добавление)
PHP:
скопировать код в буфер обмена
  1. for ($i =$count ; $i >=0; $i--) {


Почему-то не работает, хотя вроде как должно, у меня правда вот такL

PHP:
скопировать код в буфер обмена
  1. for ($i = $count ; $i >= 1; $i--) {


Не вижу смысла ставить 0, так как ID начинается с 1
(Добавление)
И насчет

PHP:
скопировать код в буфер обмена
  1.         if (!isset($_REQUEST['id'])and($_REQUEST['id']!=$row['id'])){


С

PHP:
скопировать код в буфер обмена
  1. if (!isset($_REQUEST['id'])


Оно тоже выводит index.php?page=1&id=1 или 2 или 3 и.т.д, поидее все нормально, но по клику выводятся все полные новостиНедовольство, огорчение, а мне как то бы их отделить
6. LIME - 02 Августа, 2011 - 01:23:22 - перейти к сообщению
вот это я тупанул так тупанул ))
извините меняйте обратно цикл
а строку запроса измените
CODE (htmlphp):
скопировать код в буфер обмена
  1. SELECT * FROM `news` LIMIT 2 ORDER BY  id DESC

(Добавление)
etoYA пишет:
а мне как то бы их отделить
поясните непонятно
7. etoYA - 02 Августа, 2011 - 01:28:41 - перейти к сообщению
В общем к примеру у меня есть 2 новости:

1 - вот ссылка на полную новость (заголовок 1й) index.php?page=1&id=1
2 - вот ссылка на полную новость (заголовок 2й) index.php?page=1&id=2

Когда я жму на заголовок любой из новости, мне выводятся обе полные новости, но я просто понять не могу, как сделать так, чтобы по клику на заголовок 1й новости выводился 1я полная новость ну и.т.д
8. LIME - 02 Августа, 2011 - 01:35:43 - перейти к сообщению
etoYA а в адресе вы передаете id новости в базе ?
проверьте нет ошибки тут?
это должно работать вроде
if (!isset($_REQUEST['id'])and($_REQUEST['id']!=$row['id'])){
9. etoYA - 02 Августа, 2011 - 01:40:10 - перейти к сообщению
LIME пишет:
etoYA а в адресе вы передаете id новости в базе ?

Да
LIME пишет:
if (!isset($_REQUEST['id'])and($_REQUEST['id']!=$row['id'])){

Этот варриант не отличается от этого: if (!isset($_REQUEST['id']), скрипт работает точо так же((
(Добавление)
PHP:
скопировать код в буфер обмена
  1. if ($count > 1)
  2. for ($i = 0; $i < $count; $i++)
  3.                 echo '<table width="100%" border="0">';
  4.                 echo '<tr><td><b>'. $row['news_name'] . '</b></td></tr>';
  5.                 echo '<tr><td>' . $row['full_message'] . '</td></tr>';
  6.                 echo '<tr>';
  7.                 echo '<td>' . $row['add'] . '</td>';
  8.                 echo '<td>' . $row['date'] . '</td>';
  9.                 echo '</tr>';
  10.                 echo '</table>';


Если полнулю новость вывести тоже циклом, то выводится 1 новость, но всегда 1й по скиску, айди полной новости не зависит от айди короткойНедовольство, огорчение(((( В чем может быть дело?
10. LIME - 02 Августа, 2011 - 01:51:09 - перейти к сообщению
ну я не знаю проверьте еще раз я переписал
PHP:
скопировать код в буфер обмена
  1. <?
  2. // Подключение настроек mysql
  3. require_once('config.php');
  4.  
  5. // Выборка данных из базы
  6. $result = mysql_query("SELECT * FROM `news` LIMIT 2 ORDER BY id DESC") or die (mysql_error);
  7.  
  8. // Проверка на успех выборки не нужна выше вы ее уже сделали сразу or die (mysql_error);
  9.  
  10.  
  11. // Создание таблицы и вывод в нее данных из базы
  12. $count = mysql_num_rows($result);
  13. if ($count > 0){
  14. for ($i = $count ; $i >0 ; $i--) {
  15.         $row = mysql_fetch_array($result);
  16.         if (isset($_REQUEST['id'])&&($_REQUEST['id']==$row['id'])){
  17.                 echo '<table width="100%" border="0">';
  18.                 echo '<tr><td><b>'. $row['news_name'] . '</b></td></tr>';
  19.                 echo '<tr><td>' . $row['full_message'] . '</td></tr>';
  20.                 echo '<tr>';
  21.                 echo '<td>' . $row['add'] . '</td>';
  22.                 echo '<td>' . $row['date'] . '</td>';
  23.                 echo '</tr>';
  24.                 echo '</table>';
  25. }
  26. else{
  27.                 echo '<table width="100%" border="0">';
  28.                 echo '<tr>';
  29.                 echo '<td colspan="2"><b><a href="index.php?page=1&id='.$row['id'].'">'.$row['news_name'].'</a></b></td>';
  30.                 echo '<td rowspan="3" valign="top"><img src="'.$row['news_screen']. '"  title="'.$row['news_name'].'" alt="'.$row['news_name'].'" width="200" height="150"></td></tr>';
  31.                 echo '<tr><td colspan="2" width="100%">' . $row['cut_message'] . '</td></tr>';
  32.                 echo '<tr>';
  33.                 echo '<td valign="top">' . $row['add'] . '</td>';
  34.                 echo '<td valign="top">' . $row['date'] . '</td>';
  35.                 echo '</tr>';
  36.                 echo '</table>';
  37. }
  38. }
  39. }
  40. else
  41.         echo 'Новостей нет';
  42. ?>
11. etoYA - 02 Августа, 2011 - 01:54:16 - перейти к сообщению
не работает(
12. LIME - 02 Августа, 2011 - 02:03:24 - перейти к сообщению
etoYA бред какой-то
вставьте после $row = mysql_fetch_array($result); есно '<br>'.$_REQUEST['id'].' - '.$row['id'];
(Добавление)
и скопируйте сюда весь вывод
13. etoYA - 02 Августа, 2011 - 02:19:50 - перейти к сообщению
id новости 1
PHP:
скопировать код в буфер обмена
  1. &#65279;
  2. 1 - 2
  3. Тестовая новость
  4. Тестовая новость

id новости 2
PHP:
скопировать код в буфер обмена
  1. &#65279;
  2. 2 - 2
  3. Тестовая новость
  4. Тестовая новость

(Добавление)
ID меняется, а вот полная новость нетНедовольство, огорчение
14. LIME - 02 Августа, 2011 - 02:33:30 - перейти к сообщению
снова бред
у вас это
etoYA пишет:
1 - 2
должно быть в цикле перед каждой новостью
15. etoYA - 02 Августа, 2011 - 02:38:47 - перейти к сообщению
Давайте я вам дам исходник этого скрипта, а вы посмотрите?

PHP:
скопировать код в буфер обмена
  1.  
  2. news.php
  3. <?
  4. // Подключение настроек mysql
  5. require_once('config.php');
  6.  
  7. // Выборка данных из базы
  8. $result = mysql_query("SELECT * FROM `news` ORDER BY  id DESC LIMIT 2 ") or die (mysql_error);
  9.  
  10. // Проверка на успех выборки
  11. if(!$result)
  12. {
  13.   echo mysql_error();  
  14.   exit();
  15. }
  16.  
  17. // Создание таблицы и вывод в нее данных из базы
  18. $count = mysql_num_rows($result);
  19. if ($count > 0){
  20. for ($i = 0; $i < $count; $i++) {
  21.         $row = mysql_fetch_array($result);
  22.         echo '<br>'.$_REQUEST['id'].' - '.$row['id'];
  23.         if (!isset($_REQUEST['id'])){
  24.                 echo '<table width="100%" border="0">';
  25.                 echo '<tr>';
  26.                 echo '<td colspan="2">' . '<b>' . '<a href="index.php?page=1&id='.$row['id'].'">'.$row['news_name'].'</a>' . '</b>' . '</td>';
  27.                 echo '<td rowspan="3" valign="top">' . '<img src="'.$row['news_screen']. '"  title="'.$row['news_name'].'" alt="'.$row['news_name'].'" width="200" height="150">' . '</td>';
  28.                 echo '</tr>';
  29.                 echo '<tr><td colspan="2" width="100%">' . $row['cut_message'] . '</td></tr>';
  30.                 echo '<tr>';
  31.                 echo '<td valign="top">' . $row['add'] . '</td>';
  32.                 echo '<td valign="top">' . $row['date'] . '</td>';
  33.                 echo '</tr>';
  34.                 echo '</table>';
  35. }
  36. else{
  37. if ($count > 1)
  38. for ($i = 0; $i < $count; $i++)
  39.                 echo '<table width="100%" border="0">';
  40.                 echo '<tr><td><b>'. $row['news_name'] . '</b></td></tr>';
  41.                 echo '<tr><td>' . $row['full_message'] . '</td></tr>';
  42.                 echo '<tr>';
  43.                 echo '<td>' . $row['add'] . '</td>';
  44.                 echo '<td>' . $row['date'] . '</td>';
  45.                 echo '</tr>';
  46.                 echo '</table>';
  47. }
  48. }
  49. }
  50. else
  51.         echo 'Новостей нет';
  52. ?>


news_form.php

PHP:
скопировать код в буфер обмена
  1.  
  2. <form action="add_news.php" method="post" enctype="multipart/form-data">
  3.         <input type="text" name="news_name"><br/>
  4.         <textarea name="news_message"></textarea><br/>
  5.         <input type="file" name="news_screen"><br/>
  6.         <input type="submit" value="Добавить">
  7. </form>
  8.  


add_news.php

PHP:
скопировать код в буфер обмена
  1. <?
  2. // Подключение настроек MySQL
  3. require_once('config.php');
  4.  
  5. // Проверка на сущевствование POST запроса и обработка полей.
  6. if (isset($_POST['news_name']) && isset($_POST['cut_message']))
  7.         $news_name = mysql_real_escape_string($_POST['news_name']);
  8.  
  9. // Проверка на наличие ощибок
  10. $error = false;
  11. $errort = '';
  12.  
  13. // Проверка на заполнение форм
  14. if ($news_name == ''){
  15.         $error = true;
  16.         $errort = 'Введите заголовок новости';
  17. }
  18. elseif ($cut_message == ''){
  19.         $error = true;
  20.         $errort = 'Введите короткую новость';
  21. }
  22. elseif ($full_message == ''){
  23.         $error = true;
  24.         $errort = 'Введите полную новость';
  25. }
  26. elseif ($news_screen == ''){
  27.         $news_screen = 'images/nologo.png';
  28. }
  29.  
  30. // Если все нормально, то добавить новость в базу
  31. if ($error == false){
  32. $_SESSION['user_name'] = 'Pizdatiy';
  33. $date = date("d.m.y H:i:s");
  34. $add = $_SESSION['user_name'];
  35.         $query = "INSERT INTO `news`(`id`,`news_name`,`cut_message`,`full_message`,`news_screen`,`date`,`add`)
  36.                                           VALUES('','$news_name','$cut_message','$full_message','$news_screen','$date','$add')";
  37.         $sql = mysql_query($query) or die(mysql_error());
  38.         echo 'Новость добавлена';
  39. }
  40. else
  41. // Иначе вывести ошибки
  42.  
  43. echo '<b>Вы допустили следующие ошибки:</b><br/>' . $errort;
  44. ?>


CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. CREATE TABLE `news` (
  3. `id` INT NOT NULL AUTO_INCREMENT,
  4. `news_name` VARCHAR(255) NOT NULL,
  5. `cut_message` TEXT NOT NULL,
  6. `full_message` TEXT NOT NULL,
  7. `news_screen` VARCHAR(255),
  8. `date` VARCHAR(255) NOT NULL,
  9. `add` VARCHAR(255) NOT NULL,
  10. PRIMARY KEY (`id`)
  11. );
  12.  

 

Powered by ExBB FM 1.0 RC1