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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Подскажите (скрипт новостей)

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
etoYA
Отправлено: 02 Августа, 2011 - 00:35:52
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


Помог: 21 раз(а)




Доброй ночи! Собственно вот скрипт, который вывод новости. У меня есть 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. ?>

(Отредактировано автором: 02 Августа, 2011 - 00:38:15)

 
 Top
LIME
Отправлено: 02 Августа, 2011 - 00:41:31
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




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'])){

(Отредактировано автором: 02 Августа, 2011 - 00:47:49)

 
 Top
etoYA
Отправлено: 02 Августа, 2011 - 00:46:15
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


Помог: 21 раз(а)




LIME пишет:
for ($i =$count ; $i >0; $i--) {


Действительно, что-то я не подумал, спасибо!
 
 Top
LIME
Отправлено: 02 Августа, 2011 - 00:48:47
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




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>';

(Отредактировано автором: 02 Августа, 2011 - 00:58:17)

 
 Top
etoYA
Отправлено: 02 Августа, 2011 - 01:01:20
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


Помог: 21 раз(а)




Сравнил, вывод сделал)
(Добавление)
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'])){


С



Оно тоже выводит index.php?page=1&id=1 или 2 или 3 и.т.д, поидее все нормально, но по клику выводятся все полные новостиНедовольство, огорчение, а мне как то бы их отделить
 
 Top
LIME
Отправлено: 02 Августа, 2011 - 01:23:22
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




вот это я тупанул так тупанул ))
извините меняйте обратно цикл
а строку запроса измените
CODE (htmlphp):
скопировать код в буфер обмена
  1. SELECT * FROM `news` LIMIT 2 ORDER BY  id DESC

(Добавление)
etoYA пишет:
а мне как то бы их отделить
поясните непонятно

(Отредактировано автором: 02 Августа, 2011 - 01:26:56)

 
 Top
etoYA
Отправлено: 02 Августа, 2011 - 01:28:41
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


Помог: 21 раз(а)




В общем к примеру у меня есть 2 новости:

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

Когда я жму на заголовок любой из новости, мне выводятся обе полные новости, но я просто понять не могу, как сделать так, чтобы по клику на заголовок 1й новости выводился 1я полная новость ну и.т.д
 
 Top
LIME
Отправлено: 02 Августа, 2011 - 01:35:43
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




etoYA а в адресе вы передаете id новости в базе ?
проверьте нет ошибки тут?
это должно работать вроде
if (!isset($_REQUEST['id'])and($_REQUEST['id']!=$row['id'])){
 
 Top
etoYA
Отправлено: 02 Августа, 2011 - 01:40:10
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


Помог: 21 раз(а)




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й по скиску, айди полной новости не зависит от айди короткойНедовольство, огорчение(((( В чем может быть дело?
 
 Top
LIME
Отправлено: 02 Августа, 2011 - 01:51:09
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




ну я не знаю проверьте еще раз я переписал
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. ?>
 
 Top
etoYA
Отправлено: 02 Августа, 2011 - 01:54:16
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


Помог: 21 раз(а)




не работает(
 
 Top
LIME
Отправлено: 02 Августа, 2011 - 02:03:24
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




etoYA бред какой-то
вставьте после $row = mysql_fetch_array($result); есно '<br>'.$_REQUEST['id'].' - '.$row['id'];
(Добавление)
и скопируйте сюда весь вывод
 
 Top
etoYA
Отправлено: 02 Августа, 2011 - 02:19:50
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


Помог: 21 раз(а)




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

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

(Добавление)
ID меняется, а вот полная новость нетНедовольство, огорчение
 
 Top
LIME
Отправлено: 02 Августа, 2011 - 02:33:30
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




снова бред
у вас это
etoYA пишет:
1 - 2
должно быть в цикле перед каждой новостью
 
 Top
etoYA
Отправлено: 02 Августа, 2011 - 02:38:47
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


Помог: 21 раз(а)




Давайте я вам дам исходник этого скрипта, а вы посмотрите?

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.  
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB