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

Форум PHP

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

 

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

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

тема: Как вывести на экран информацию из БД
 
 автор: Упорный чайник   (06.01.2012 в 21:20)   письмо автору
 
 

Заранее прошу извинить, если тему надо было создать в разделе MySQL

Итак, здравствуйте!

В общем в ходе изучения PHP и MySQL естественным образом возникли трудности.
Есть у меня БД, есть в ней таблица News. В таблице этой три поля: id, title и date_add.
Таблица заполнена.
Разумеется, эту таблицу мне нужно каким-то образом вывести на экран в читабельном виде.
Шаблон, по которому по идее должны выводиться новости:
<ul>
        <li>
            <h2>Новость <a href="#" title="первая новость">первая</a></h2>
        </li>
        <li>
            <h2>Новость <a href="#" title="вторая новость">вторая</a></h2>
        </li>
        <li>
            <h2>Новость <a href="#" title="третья новость">третья</a></h2>
        </li>
     </ul>

Я пытался это осуществить при помощи урока о создании древовидных комментариев, смысл мне показался похожим, т.к. в нем тоже описывалось каким образом вывести комменты из базы. Но у меня это не получилось, что не удивительно, ведь код я видоизменял.

В общем я не прошу, чтобы мне здесь писали готовые решения, я лишь прошу послать меня по нужному направлению, где я мог бы посмотреть как это осуществить.
Понимаю, что это простейший вопрос, но в голове хаос.
В надежде на помощь
С уважением, Алексей

  Ответить  
 
 автор: Упорный чайник   (06.01.2012 в 21:36)   письмо автору
 
   для: Упорный чайник   (06.01.2012 в 21:20)
 

Как говорится, хорошая мысля приходит опосля. Подправил немного код, новости из базы вывелись.

Но, тем не менее, я это сделал благодаря изменению готового решения. А хотелось бы еще и понимать что и откуда берется. Поэтому все же не отказался бы от помощи в поиске материала, где этому можно было бы научиться, а не просто скопировать

  Ответить  
 
 автор: Valick   (06.01.2012 в 22:54)   письмо автору
 
   для: Упорный чайник   (06.01.2012 в 21:36)
 

Э... ну это... как его, научиться можно известно где... в книге (главное остерегайтесь видео уроков Попова)
если подправили и получили желаемый результат, то это хорошо
__
ну и типа на првах первого попавшегося под горячую руку...
велком ту пати :)

  Ответить  
 
 автор: Упорный чайник   (06.01.2012 в 23:15)   письмо автору
 
   для: Valick   (06.01.2012 в 22:54)
 

Вы шутите? :) Я этот вывод организовал как раз по уроку этого товарища (Попова)! А в чем собственно он провинился? Я, вроде как и раньше где-то вскользь читал негатив о Попове..
Поделитесь правдой, буду признателен:)

  Ответить  
 
 автор: Valick   (06.01.2012 в 23:31)   письмо автору
 
   для: Упорный чайник   (06.01.2012 в 23:15)
 

провиниля он циклом do{} while() там где надо использовать цикл while()
сам по себе Попов молодец (если действительно существует в природе такой человек), но вся беда в том что он ничему НЕ учит
ну а как поется в песне "правда всегда одна..."
сразу возьму быка за рога и посоветую купить вам хорошую книгу, благо создатели этого форума постарались на славу и написали кучу полезных книг, ну и не в обиду авторам, я всегда рекомендую Д. Котерова, из русских "поэтов прозаиков" равных им нет :) с забугорными нужно разбираться с каждым конкретно, поэтому на данном этапе ничего не посоветую

  Ответить  
 
 автор: Упорный чайник   (06.01.2012 в 23:44)   письмо автору
 
   для: Valick   (06.01.2012 в 23:31)
 

Благодарю за дельные советы. Будем надеяться, что вопросов у меня будет много, а тревожить форумчан буду мало ;)

  Ответить  
 
 автор: cheops   (07.01.2012 в 14:39)   письмо автору
 
   для: Valick   (06.01.2012 в 23:31)
 

>провиниля он циклом do{} while() там где надо использовать цикл while()
А вот откуда это...

  Ответить  
 
 автор: Valick   (07.01.2012 в 15:10)   письмо автору
 
   для: cheops   (07.01.2012 в 14:39)
 

а я откуда знаю откуда он его взял, видать книжек мало читал до создания видеокурса :)

  Ответить  
 
 автор: Grends   (07.01.2012 в 16:24)   письмо автору
 
   для: Valick   (07.01.2012 в 15:10)
 

Я новичок в этом деле и не понимаю чем плох цикл do{} while()?? И что ещё в видео уроках Попова не так? А то я сайт пытаюсь создать по его урокам...)

  Ответить  
 
 автор: Valick   (07.01.2012 в 17:40)   письмо автору
 
   для: Grends   (07.01.2012 в 16:24)
 

вы когда-нибудь покупали что-нибудь в телемагазине?

  Ответить  
 
 автор: Grends   (07.01.2012 в 18:44)   письмо автору
 
   для: Valick   (07.01.2012 в 17:40)
 

нет

  Ответить  
 
 автор: Valick   (07.01.2012 в 18:52)   письмо автору
 
   для: Grends   (07.01.2012 в 18:44)
 

Попов - это "телемагазин"
по-другому просто не знаю как вам объяснить

  Ответить  
 
 автор: Grends   (07.01.2012 в 18:53)   письмо автору
 
   для: Valick   (07.01.2012 в 18:52)
 

Ну в телемагазине предлагают вещи в 3 раза дороже... я так понимаю, а по качеству то как? то как он учит писать код - правильно или нет?

  Ответить  
 
 автор: Valick   (07.01.2012 в 19:03)   письмо автору
 
   для: Grends   (07.01.2012 в 18:53)
 

то как он учит писать код - правильно или нет?
по мне, нет, но это лично моё мнение (свое мнение вы сможете составить когда не будете зацикливаться на Попове и почитаете много хороших книг)
он не учит, он вдалбливает "киянкой в темечко", после такого прессинга его последователи (зомбикодеры) не хотят видеть мир по-другому и даже указав им на ошибки, они все отрицают ссылаясь на то что так учил Попов (и клепают на основе его видеокурса франкенсайты)
я неоднократно высказывал свое мнение, что он хороший коммерсант, но не более (я даже полагаю что и подбором материала для видеокурса и "промыванием мозгов" занимались другие люди, а Попов это как бы тот кто заварил всю эту кашу и лицо этого проректа, хотя может и все сам сделал)
поверьте мне не доставляет удовольствия говорить о видеоурорке Попова плохо (но приходиться), я лучше 10 раз скажу хорошо про других, а про него промолчу.(вот щас пишу, а самому от себя противно :))
дело в том что каждый месяц на форуме появляется человек "от Попова", которого надо переучивать прикладывая немалые усилия, некоторые уходят думая что все им врут, только лишь по причине неприязни к Попову
его учение оставляет слишком много белых пятен именно в базовых знаниях
к примеру чем отличается цикл do while от обычного while, есть у Попова ответ на этот "скучный" теоретический вопрос?


авторитетные учителя программирования (по крайней мере для меня) - это И. Симдянов и Д. Котеров
Симдянову я благодарен за книги и за этот форум, а Котерову за книги и за Денвер

  Ответить  
 
 автор: skinny   (07.01.2012 в 01:03)   письмо автору
 
   для: Упорный чайник   (06.01.2012 в 21:20)
 


    function news_list()  //объявляем функцию
   {

      $zapros='SELECT `id`, `title`, `date_add` FROM `News`'; //пишем запрос к базе - выбираем нужные поля из нужной таблицы
      $zapros=mysql_query($zapros); // выполняем запрос
      if ($zapros) // проверяем не пуст ли результат запроса
      if (mysql_num_rows($zapros)>0) // проверяем количество строк запроса, ибо запрос может вернёть 0 строк и при этом он не будет пуст
      {
          $list.='<ul>'; // присваеваем переменной значение начала списка
          while (list($id, $title, $date_add)=mysql_fetch_row($zapros)) // перебираем цыклом все значения, переменные могут называться по другому, но так проще их отслеживать
          {
              $list.='<li><h2>Новость <a href="#" title="'.$title.'">'.$id.'</a></h2></li>'; // добавляем каждую строчку как элемент списка в переменной
          }
          $list.='</ul>'; // закрываем список
      }

      return($list); // возвращаем список
   }

//использование

echo user_name_list();


это самый простой вариант, может где ошибка будет - не проверял

  Ответить  
 
 автор: Упорный чайник   (07.01.2012 в 01:39)   письмо автору
 
   для: skinny   (07.01.2012 в 01:03)
 

Благодарю, буду разбираться и в этом коде

  Ответить  
 
 автор: Упорный чайник   (07.01.2012 в 17:05)   письмо автору
 
   для: skinny   (07.01.2012 в 01:03)
 

В общем я нашел такое решение. Правда строки будут выводиться не списком, а просто заголовками. Пока что для меня это проще :)
<?php
    $connect 
mysql_connect("localhost""root""");
    
$select mysql_select_db("dbnews"$connect);
    
/* Устанавливаем кодировку */
    
mysql_query('SET CHARACTER SET utf8');  
    
mysql_query('SET NAMES utf8');
    
$result mysql_query("SELECT * FROM news"$connect);
    while (
$data mysql_fetch_row($result))
    {
        
//echo "<pre>";
        //print_r($data);
        //echo "</pre>";
        
echo "<h2>$data[1]</h2>";        //[0] - поле `id` новости, [1] - поле `title`(текст новости), [2] - `date` - дата.
    
}     
    
?> 


Вот такое простенькое решение. Может кому и пригодится. А может кто и раскритикует :)

  Ответить  
 
 автор: ladan   (07.01.2012 в 17:33)   письмо автору
 
   для: Упорный чайник   (07.01.2012 в 17:05)
 


<?php 
    $connect 
mysql_connect("localhost""root"""); 
    
$select mysql_select_db("dbnews"$connect); 
    
/* Устанавливаем кодировку */ 
    
mysql_query('SET CHARACTER SET utf8');   
    
mysql_query('SET NAMES utf8'); 
    
$result mysql_query("SELECT * FROM news"$connect); 

echo 
"<ul>";
    while (
$data mysql_fetch_row($result)) 
    { 
        
printf("<li>%s%s%s</li>"$date[0],$date[1],$date[2]);
    }      
echo 
"</ul>";
    
?> 


теперь список :) не проверял, должно работать

  Ответить  
 
 автор: Упорный чайник   (07.01.2012 в 17:59)   письмо автору
 
   для: ladan   (07.01.2012 в 17:33)
 

Да нет :) Отображаются только маркеры списка если в таблице стилей их не отключать)
Но если надо списком, то я сделал так:
<?php
    $connect 
mysql_connect("localhost""root""");
    
$select mysql_select_db("dbnews"$connect);
    
/* Устанавливаем кодировку */
    
mysql_query('SET CHARACTER SET utf8');  
    
mysql_query('SET NAMES utf8');
    
$result mysql_query("SELECT * FROM news LIMIT 5"$connect);
    while (
$data mysql_fetch_row($result))
    {
        
//echo "<pre>";
        //print_r($data);
        //echo "</pre>";
        
echo "<ul>";
        echo 
"<li><h2>$data[1]</h2></li>";
        echo 
"</ul>";       
    }     
    
?>

Или это плохое решение? =)

  Ответить  
 
 автор: Valick   (07.01.2012 в 18:17)   письмо автору
 
   для: Упорный чайник   (07.01.2012 в 17:59)
 

Отображаются только маркеры списка
у ладана описка в коде data он неглядя махнул на date

Или это плохое решение? =)

тут нет никакого решения :))
это примерно тоже самое, когда вы садитесь кушать, вы же не спрашиваете "взять ложку это хороршее решение?"
__
добавили в запрос лимит... очень хорошо, теперь еще ORDER BY() и будет совсем великолепно
обычно по дате добавления сортируют
а echo "<ul>"; и echo "</ul>"; нужно действительно вынести за пределы цикла, как показал ladan

  Ответить  
 
 автор: Упорный чайник   (07.01.2012 в 18:35)   письмо автору
 
   для: Valick   (07.01.2012 в 18:17)
 

Да, действительно. Лучше вынести... А то в моем примере получилось, что теги
<ul>
и
</ul>
в html отображается не один, а все шесть раз, то есть каждая новость - это отдельный список. Это, конечно, не правильно, следовательно решение все-таки плохое)))
______

P.s за ORDER BY спасибо. Добавил еще DESC. Новости выводятся начиная с последней и сортируются по дате :)

  Ответить  
Rambler's Top100
вверх

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