PHP-скрипт вывода данных из таблицы MySQL на страницу HTML

Привет всем посетителям блога 4remind.ru, эта заметка в большей степени касается самых что ни на есть начинающих вебмастеров, кто пишет или собирается писать скрипты на PHP. Представлю вашему вниманию самый простой, классический способ вывода данных из таблицы MySQL на страницу HTML в табличном варианте.
PHP скрипт вывода данных из таблицы MySQL на страницу HTML
Итак, например в доступной для Вас базе данных MySQL есть некая таблица с перечнем имен клиентов, их телефонов и адресов их почтовых ящиков, и Вы хотите вывести эти данные на страницу сайта. Решить эту задачу довольно просто. Для начала предположим, что в нужной нам таблице MySQL определены следующие поля:

Name — имена;
Phone — телефоны;
eMail — e-mail адреса;

Ну а теперь сам PHP-скрипт вывода данных из таблицы MySQL на страницу HTML

';
        echo '';
        echo '';
        echo 'Имя';
        echo 'Телефон';
        echo 'E-Mail';
        echo '';
        echo '';
        echo '';
        
   // выводим в HTML-таблицу все данные клиентов из таблицы MySQL 
        while($data = mysql_fetch_array($qr_result)){ 
                echo '';
                echo '' . $data['Name'] . '';
                echo '' . $data['Phone'] . '';
                echo '' . $data['eMail'] . '';
                echo '';
        }
        
    echo '';
        echo '';

    // закрываем соединение с сервером  базы данных
    mysql_close($connect_to_db);
?>

В результате выполнения приведенного в пример PHP скрипта мы получим на веб-странице примерно следующее:

Данные из таблицы MySQL на странице HTML

Таким образом можно выводить на страницу HTML любые данные из любой таблицы MySQL, главное, чтобы у Вас был доступ к базе данных.

Небольшое дополнение

Для соединения с сервером базы данных вместо функции mysql_connect() можно использовать функцию mysql_pconnect(), которая в принципе аналогична первой, но при попытке соединения с сервером mysql_pconnect() будет пытаться получить уже открытый (постоянный) указатель на тот же сервер с прежними данными о пользователе и его пароле. И если указатель будет обнаружен, то функция mysql_pconnect() вернет именно его, то есть не будет открывать новое соединение с сервером. Кроме того, текущее соединение с сервером MySQL не будет закрыто даже по окончании работы скрипта. Поэтому такое соединение останется доступным для использования в дальнейшем. Вдобавок функция mysql_close(), которая использовалась в PHP-скрипте выше, не будет закрывать постоянное соединение, полученное с помощью mysql_pconnect().

Примечание

«Постоянные» соединения будут работоспособны только при условии, что PHP установлен на сервере как модуль, но не в режиме CGI.

Метки: HTML, mysql, PHP, вывод данных

Поделитесь материалом с другими, воспользуйтесь этими кнопками:
Получать обновления и новые материалы блога по E-mail

128 комментариев к “PHP-скрипт вывода данных из таблицы MySQL на страницу HTML”

  1. Алексей:

    А как связать с html страницей? Никак не могу понять..

    • Просто HTML страницу нужно создавать с поддержкой PHP, например файл primer.php, в котором все как обычно для файлов .html, но в нужное место вставлять код, обрамленный метками

      Вот абстрактный пример шаблона HTML страницы со встроенным кодом PHP:

      
      
      
        ...
      
      
        ...
        
        ...
      
      
      

  2. Алексей:

    Понял.
    Но у меня почему-то выходит ошибка:

     Parse error: syntax error, unexpected T_VARIABLE in /home/u625428073/public_html/ind.html on line 12 
    
    Это строчка с именем базы данных. Проверил несколько раз, все данные верны..
     
    • Алексей, у вас ошибка в коде — поставьте точку с запятой в конце строки:
      $db_host = ‘mysql.hostinger.ru’;

      И кстати, я заменил в вашем коде логин и пароли на «xxxxxx». Не забывайте, что выкладываете все это в паблик!

      • Алексей:

        Точно, спасибо большое.
        Да, я вспомнил, что не заменил только после отправки :)

  3. Александр:

    А можно в этом скрипте сделать какой то интерактивный ввод для вывода нужно таблицы, чтобы не задавать ее в коде а выбирать при выполнении?

    • Почему бы и нет, конечно можно. Например в HTML-код добавить форму с полем ввода имени нужной таблицы (ну или кнопки, заранее уже предопределенные на какие-то таблицы), а в PHP соответственно обработчик запроса, и в соответствии с запросом выводить данные из конкретной таблицы.

      if (isset($_POST['tabl_1'])) {
         // здесь код обработки таблицы 'tabl_1'
      }
      

      • Александр:

        а как бороться с вот такой ошибкой?
        Parse error: syntax error, unexpected T_VARIABLE in Z:\home\localhost\www\iMarket\prosmotr.php on line 9

      • Александр:

        Разобрался) а как быть если выводимые таблицы имееют различное колличество столбцов?

        • Можно для каждой таблицы использовать свою функцию обработки, или использовать одну и ту же, но учитывать количество столбцов, полученных при обработке SQL-запроса. Количество столбцов (колонок) можно получить например таким образом:

          
          

          В этом примере будет выведено количество всех столбцов таблицы ‘table_1′.
          В запросе ‘LIMIT 1′ нужен для того, чтобы получить минимальное количество строк, т.е. одну. Иначе, если у вас огромная таблица с огромным количеством и размерами данных, то без ограничения ‘LIMIT 1′ переменная $res затребует много памяти.

          • Александр:

            А еще такая проблема, при выводе русских символов в таблицу выводятся иероглифы, как быть?

  4. Александр, у Вас скорее всего разные кодировки сайта и базы данных.
    Если ваш сайт еще пока в разработке, то лучше установить одинаковую кодировку и там и там, например ‘Windows-1251′ или ‘utf-8′.
    Но если с этим проблема, то можно все компенсировать с помощью функции

    iconv ( string in_charset, string out_charset, string str )

    in_charset — исходная кодировка;
    out_charset — конечная кодировка;
    str — исходная строка;

    Пример:

    
    

  5. Слава:

    Доброго времени суток.

    Сделал все, как вы написали (: Работает на отлично (:

    Все, кроме одного)

    Cəmi';
            echo 'Faiz';
            echo 'Aç. S.';
            echo 'Nəticə';
            echo 'Qiymət';
            echo '';
            echo '';
            while($data = mysql_fetch_array($qr_result)){
            echo '';
            echo '' . $data['soyadi'] . '';
            echo '' . $data['name'] . '';
            echo '' . $data['ata_adi'] . '';
            echo '' . $data['e1'] . '';
            echo '' . $data['e2'] . '';
            echo '' . $data['e3'] . '';
            // тут были $data['e4'] ... $data['e28']
            echo '' . $data['e29'] . '';
            echo '' . $data['e30'] . '';    
            echo 'cem';
            echo 'faiz';
            echo 'as';
            echo 'net';
            echo 'qiy';
            echo '';}
            echo '';
            echo '';
    mysql_close($connect_to_db);
    ?>
    

    Там есть тэг Əmsal Который должен зависить от того, сколько всего есть в базе $data['e#'] Которые с данными, т.е. не пустые. Как это реализовать? Была идея, чтобы записывать заранее сколько всего будет $data['e#']. Но как сделать, чтобы это все работало и он не выводил пустые данные?

    • Я не совсем понял, не зная как выглядит таблица в БД. Но…
      Если Вы хотите, чтобы не выводились пустые $data['e#'] в цикле «while», то там можно прописать типа такого:

      
      

      Если Вам нужно, чтобы вообще не выводились данные из строки таблицы, где есть пустые «e#», то в запросе к таблице нужно добавить условие «WHERE», например:

      '' AND `e4`<>'' AND `e5`<>'' ");
      // здесь придется перечислить в запросе все проверяемые поля e#
      ...
      ?>
      

  6. Puk:

    Добрый день!

    А если такая ситуация:
    Иногда попадаются места, где в ячейках нет данных. И в этом случае долбанный IE эту самую ячейку не отображает. Что ни есть гуд. Ситуацию спасает помещение беспрерывного пробела   в пустую ячейку.

    Вопрос. Как выглядит запроc, который можно сформулировать так: Если в конкретной ячейке нету информации (она пуста) то туда автоматически вставлять  

    • Запрос к БД выглядит так же, как и если в ячейках нет информации, а вот вывод в таблицу выглядел бы примерно так:

      
      

  7. Puk:

    Добрый день!
    Подставил, но результата нет. Пустые ячейки не прорисовываются. Возможно, ошибся в коде?

    
    
    • Puk, жаль, что не вижу полный ваш код (если хотите, можете мне его выслать на почту со страницы Контакты), но Вы можете попробовать заменить каждый

      echo '';
      

      на

      echo ' ';
      

      или даже лучше на

      echo '  -  ';
      

      чтобы были заметнее символы. То есть в те места, где одни лишь пробелы, вставьте например символ дефиса «-»

      А чтобы все было более очевидным, лучше используйте вывод в таблицу, например так:

      while($data = mysql_fetch_array($qr_result)){
            echo '';
            echo '' . $data['xxx1'] . '';
            echo '' . $data['xxx2'] . '';
            echo '' . $data['xxx3'] . '';
            echo '';
      }
      

      Тогда будут видны даже пустые ячейки при любом раскладе.

  8. Puk:

    Вечный бан мне за такие косяки…

    • Да какой там бан, никаких косяков :)
      Просто если в комментарии вставляете код, то заключайте его в [ php ]… [ /php ] или просто в
      [ text ] … [ /text ], без пробелов конечно же внутри квадратных скобок.

  9. snake302:

    Добрый день! Все вписал, но просто белый экран…

    ';
            echo '';
            echo '';
            echo 'Имя';
            echo 'Очки';
            echo 'Победы';
            echo '';
            echo '';
            echo '';
            
       // выводим в HTML-таблицу все данные клиентов из таблицы MySQL 
            while($data = mysql_fetch_array($qr_result)){ 
                    echo '';
                    echo '' . $data['player'] . '';
                    echo '' . $data['ponts'] . '';
                    echo '' . $data['wins'] . '';
                    echo '';
            }
            
        echo '';
            echo '';
    
        // закрываем соединение с сервером  базы данных
        mysql_close($connect_to_db);
    ?>
    • snake302,
      ну а сама пустая таблица то хоть отрисовывается?
      Заголовки страницы-то хоть видны?
      Если нет, то у Вас код просто прекращает выполняться например из-за ошибки при обращении к БД, например:

      die(mysql_error());
      

      • Faust:

        Та же ситуация как и у «snake302″. Экран белый….без никаких данных. Таблица в Базе со значениями заполненная. Аутентификацию на сервере MySQL прохожу. Код не прекращается… Выбил бы ошибку при не возможности подключиться…

        $db_host = '********';
        $db_name = '*****';
        $db_username = '*****';
        $db_password = '*******';
        $db_table_to_show = '******'
        $connect_to_db = mysql_connect($db_host, $db_username, $db_password) or die("Не возможно подключение к MySQL");
        mysql_select_db($db_name, $connect_to_db) or die("Нет подключения с Базой ");
        $qr_result = mysql_query("select * from " . $db_table_to_show) or die(mysql_error());
        echo 'Название';
        echo 'Сумма';
        echo 'Процент';
        
        while($data = mysql_fetch_array($qr_result)){ 
           echo '' . $data['names'] . '';
           echo '' . $data['summa'] . '';
           echo '' . $data['proc'] . '';
        }
        
        mysql_close($connect_to_db);
        
        • Faust, добавьте после строки:

          $qr_result = mysql_query("select * from " . $db_table_to_show) or die(mysql_error());
          

          вот такие строки:

          echo '

          =====
          '; var_dump ( $qr_result ); echo '

          =====
          ';

          и посмотрите, что выведется на экран.
          Функция var_dump ( $qr_result ); должна будет вывести полученные значения из базы данных.
          Если же никаких ожидаемых значений Вы не увидите, то скорее всего Вы либо не верно подключились к базе данных, либо использовали некорректный SQL-запрос.
          Убедитесь, что Вы указали в параметрах функции mysql_query( ... ) правильное имя таблицы.

          • snake302:

            спасибо, я разобрался — не правильно копировал пример:

            1) тупо все скопировал (даже с нумерацией строчек)
            2) после $db_host = ‘localhost’ поставьте ; в топке

            спасибо

  10. Илья:

    Владимир скажите, а как сделать так чтоб выводилась одна строка из базы dle_serials
    «serial» то есть мне надо чтоб скрипт брал строку из этой колонки которая имеет значение active 0 простым языком говоря чтоб появлялись ключи которые еще не активировали значение 0 если вам не трудно допишите в скрипт то что нужно, просто я не спец в этом деле, ну или хотя бы понятный чайнику пример )) что куда писать

    вот пример скрипта

       // соединяемся с сервером базы данных
       $connect_to_db = mysql_connect($db_host, $db_username, $db_password) or die("Could not connect: " . mysql_error());
    
       // подключаемся к базе данных
       mysql_select_db($db_name, $connect_to_db) or die("Could not select DB: " . mysql_error());
    
       // выбираем все значения из таблицы "Contacts" 
       $qr_result = mysql_query("select * from " . $db_table_to_show) or die(mysql_error());
    
       // выводим в HTML-таблицу все данные клиентов из таблицы MySQL 
       while($data = mysql_fetch_array($qr_result)){ 
          echo '';
          echo '' . $data['serial'] . '';
          echo '' . $data['activate'] . '';
          echo '' . $data['user_name'] . '';
          echo '';
       }
    
        // закрываем соединение с сервером  базы данных
        mysql_close($connect_to_db);
    ?>;
    
  11. Илья,
    если я правильно понял, Вам нужно получить из базы данных, из таблицы с именем «dle_serials» значение поля «serial», при условии, что значение «active» равно 0?
    Если это так, то вот такой код нужно использовать вместо строк 7-18:

    // выбираем все значения из таблицы "dle_serials"
    $qr_result = mysql_query( "SELECT * FROM dle_serials WHERE active=0" ) or die(mysql_error());
    
    // выводим в HTML-таблицу все данные клиентов из таблицы MySQL
    echo '';
    echo '';
    
    while( $data = mysql_fetch_array( $qr_result )) {
       echo '';
       echo '';
       echo '';
       echo '';
       echo '';
    }
    
    echo '
    ИмяАктивацияСерийный номер
    ' . $data['user_name'] . '' . $data['activate'] . '' . $data['serial'] . '
    ';

    Результатом будет таблица, в которой будут строки с тремя столбцами, в которых отображены данные из полей «user_name», «activate» и «serial».

    • Илья:

      Да спасибо очень помогло, но вот еще вопрос а можно ли добавить еще одно условие выборки для serial то есть он берет щас условие «active» равно 0 и добавить еще одно условие quant_day 30 результат работы всего этого должен быть выводит ключ не активный со сроком на 30 дней.

      • Илья,
        это не сложно — нужно в SQL-запрос добавить к условию «WHERE» еще «AND quant_day=30″, проще говоря, замени строку запроса к базе данных на эту:

        // выбираем все значения из таблицы "dle_serials"
        $qr_result = mysql_query( "SELECT * FROM dle_serials WHERE active=0 AND quant_day=30" ) or die(mysql_error());
        

  12. Илья:

    Спасибо большое помогло.
    Владимир скажите а вы знаете как реализовать вот такую функцию, вот допустим я перехожу по ссылке _ttp://site.ru/stranica-1.php и эта страница генерирует временную ссылку на stranica-2.php

    Задача в том чтоб человек не знал информацию о положении страницы на сервере.

    • Илья, я то примерно знаю как реализовать такое, но Вам придется постоянно при открытии страницы по первой ссылке менять (случайным образом генерировать новую) ссылку на вторую страницу и вставлять ее в код первой, и при этом нужно учитывать, что ссылка на вторую страницу будет рабочей. Другими словами у второй страницы ссылка должна меняться для каждого посетителя. Это реализовать без знаний PHP не просто, особенно если у сайта большая посещаемость. В общем для каждой сессии нужно генерировать персональную ссылку или делать принудительный редирект, используя файл .htaccess. Но я бы вам не советовал этим вообще заниматься, если у вас знаний пока маловато, иначе это может послужить попаданием под фильтр у поисковых систем.
      Да, и еще, если у Вас возникают вопросы, которые не подходят по теме статьи, то лучше их задавайте через форму обратной связи (ссылка вверху в меню «Контакты»).

  13. Joliat:

    Спасибо. Благодаря такому запросу быстро написал вывод статей для движка opencart. Подобный модуль стоит денег, а тут все обошлось 5ю минутами работы. Кому интересен запрос, привожу его ниже:

      $pgs = mysql_query("select * from oc_information_description WHERE `information_id`>9 ");
      while($data = mysql_fetch_array($pgs)){ 
      echo '

    '.$data['title'].'

    '; }
  14. snake302, поздравляю с тем, что разобрался! И спасибо за замеченную опечатку в коде, я подправил, поставив точку с запятой.
    И на будущее, чтобы не копировались номера строк исходных кодов, нужно подвести курсор мышки в правый верхний угол, появится иконка типа «белый листок с угловыми скобками», вот кликнув по нему, откроется окно, где можео скопировать чистый код, без всяких излишеств.

  15. Вячеслав:

    Здравствуйте!
    Спасибо Вам за код PHP, который выводит данные из MySql. Я имею ввиду таблицу с телефонами и e-mail. Всё выводится нормально кроме русских слов. Вместо них выводятся знаки вопроса. Кодировка в файле PHP — utf8 и БД MySql — utf8_general_ci, но всё равно выводятся знаки вопроса. Большая просьба подсказать в чем проблема.
    С Уважением, Вячеслав!
    Санкт-Петербург

  16. Вячеслав:

    Проблема решена вот этим кодом. Большое спасибо!

    mysql_query ("set names 'utf8'");
    mysql_query ("set character_set_client='utf8'");
    mysql_query ("set character_set_results='utf8'");
    mysql_query ("set collation_connection='utf8_general_ci'");
    
  17. Алексей:

    Доброй ночи! у меня после вставки скрипта в тэг body выводится следующее:
    ‘; echo »; echo »; echo ‘тема и содержание письма’; echo ‘дата отправки’; echo ‘имена подписчиков’; echo ‘ адреса подписчиков’; echo ‘учётные записи подписчиков’; echo »; echo »; echo »; // выводим в hnml таблицу все данные клиентов из таблицы MySQL while($data = mysql_fetch_array($qr_result)){ echo »; echo » . $data['тема и содержание письма'] . »; echo » . $data['дата отправки'] . »; echo » . $data['имена подписчиков'] . »; echo » . $data['адреса подписчиков'] . »; echo » . $data['учётные записи подписчиков'] . »; echo »; } echo »; echo »; // закрываем соединение с сервером базы данных mysql_close($connect_to_db); ?>
    что может быть не так? Заранее спасибо

  18. Алексей:

    Конечно, вставил, вот сам не знаю в чём дело.

  19. Алексей:

    А можете сказать как расширить строки таблицы, а то данные в таблице есть, но строки выводятся слишком узкие и данных не видно. Заранее спасибо

    • Алексей, если вы хотите расширить таблицу по ширине, то вот пример:

      Содержимое таблицы Содержимое таблицы

      Атрибут width:
      width=»100%» — значение в процентах;
      width=»100″ — значение в пикселях;

      Для задания высоты, например для ячеек таблицы, используйте атрибут «height»:

      Содержимое таблицы

      • Алексей:

        а какую кодировку выбрать? (имеется ввиду при создании полей, а то у меня вместо русского языка знаки вопросительные). Пытался найти что нибудь типа utf8russia через phpmyadmin — не нашёл.

        • Алексей,
          для русского языка в phpMyAdmin лучше выбери «utf8_general_ci», ну а в скриптах уже прописывай «UTF-8», например в секции HEAD:

          
          

          При создании или редактировании файлов скриптов и HTML-страниц сохраняй их на диск тоже в кодировке UTF-8, тогда русские символы будут выводиться корректно.

          • Алексей:

            не получается заполнить все поля при выборе кодировки «utf8_general_ci». Вроде все поля заполняешь, но когда «ок» нажимаешь, пишет, что заполнены не все поля. Есть ли другой способ задать кодировку? например, через SQL запрос? точнее изменить текущую

  20. Алексей, конечно же есть. Вот здесь же, на этой странице в комментарии выше я давал совет Вячеславу: http://4remind.ru/web-masterskaya/webmaster-php/php-skript-vyvoda-dannyh-iz-tablitsy-mysql-na-stranitsu-html.html#comment-3971

    Те строки нужно вставить в код после соединения с базой данных, ну и естественно, что страница, которая будет отображать данные, должна быть в кодировке UTF-8 и в ее HEAD секции должна быть указана meta:

    
    

  21. Алексей:

    Тэг мета я выставил как у вас. А те SQL запросы не выполняются:
    1 mysql_query («set names utf8″);
    2 mysql_query («set character_set_client=’utf8′»);
    3 mysql_query («set character_set_results=’utf8′»);
    4 mysql_query («set collation_connection=’utf8_general_ci’»);
    Пишет:
    SQL-запрос:

    mysql_query(
    «set names utf8″
    );

    Ответ MySQL: Документация
    #1064 — You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘mysql_query («set names utf8″)’ at line 1

    • Алексей,
      нужно в первой строке взять в одиночные кавычки ‘utf8′, т.е. должно быть вот так:

      mysql_query ("set names 'utf8'");
      

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

      • Алексей:

        и снова выводит ошибку 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘mysql_query («set names ‘utf8′»)’ at line 1

        • Алексей, мне трудно догадаться, в чем еще может быть причина, т.к. я не вижу код скрипта. Пришлите мне файл скрипта на почту и укажите версию вашего MySQL сервера. Только уберите пароль к БД из скрипта, перед отправкой.

  22. Romann:

    Здравствуйте, Владимир! У меня БД на MS SQL. Вот такая проблемка. При подключении к БД у меня выходит ошибка:
    Fatal error: Call to undefined function mssql_connect() in C:\Program Files\EasyPHP-12.1\www\tab.php on line 10
    Вот часть кода:

    // соединяемся с сервером базы данных
        $connect_to_db = mssql_connect($db_host, $db_username, $db_password)
                    or die("Could not connect: " . sqlsrv_error());
    

    Можно ли таким образом вместо My писать MS? Или как иначе решить вопрос?!

    • Romann,
      в принципе можно, такие функции для работы с MS SQL есть в PHP 5.2, но если у вас установлен PHP 5.3 или выше, то нужно использовать функции с префиксом sqlsrv_, а не mssql_

      Вот пример:

      
      

      Список функций и их описание можно посмотреть например здесь: _http://ru2.php.net/manual/ru/ref.sqlsrv.php

      Только еще имейте ввиду, что при работе с PHP 5.2 должно быть подключено соответствующее расширение для работы с SQLSRV функциями — php_mssql.dll. Для работы с PHP 5.3 и выше нужно использовать драйвер Майкрософта SqlSrv 2.0 или SqlSrv 3.0 (3.0 нужна только для MS SQL 2012)

  23. Семён:

    Помогите пожалуйста с толкование этой ошибки .
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ’111′ at line 1

  24. Семён:

    устранил ошибку, спасибо большое за новость

  25. Роман:

    Здравствуйте!
    Есть не большая проблема. Не могу понять почему скрипт не выводит все строки в таблицу.
    В таблице есть 6 значений, но выводит только первую. Соединение и выбор базы идут через файл «config.php».
    Вот скрипт:

    Перечень отделений связи\n

    \n"; $result = mysql_query("SELECT ops_index, ops_name FROM ops ORDER BY ops_index"); echo "\n\n\n"; echo "\n"; echo "\n"; echo "\n\n"; echo ""; $data = mysql_fetch_array($result); { $ops_index = $data['ops_index']; $ops_name = $data['ops_name']; echo "\n\n"; echo "\n\n"; } echo ""; echo "
    Индекс ОПСНаименование ОПС
    ".$ops_index."".$ops_name."
    \n"; ?>
    • Роман, так конечно же ваш скрипт будет выводить только одну запись потому, что из $data только один раз выбираются значения, и при этом берется только запись с индексом 0. Для того, чтобы вывести все, нужно в цикле перебрать все индексы из $data:

      echo "";
      
      while($data = mysql_fetch_array($result)){
         $ops_index = $data['ops_index'];
         $ops_name = $data['ops_name'];
         echo "\n".$ops_index."\n";
         echo "".$ops_name."\n\n";
      }
      
      echo "";
      

  26. Deregan:

    Это очень полезная статья и единственный рабочий код в примере. Искал по просторам интернета часа три. Спасибо!

  27. Михаил:

    Добрый день, Владимир!
    А как, все-таки, сделать так, что бы подключение к БД и запрос был в php файле, а вывод результата запроса шел в другой html файл?
    В идеале, хочу на php-странице написать несколько запросов, которые будут выполняться по обращению с html страницы.
    Т.е. каким образом на html странице написать код так, что бы она обращалась к определенной php-странице, давала команду на выполнение определенного запроса, но результат выполнения этого запроса что бы отправлялся на html-страницу, с которой инициировалось обращение?
    Надеюсь, я понятно написал :)

    • Михаил, для ваших целей скорее всего подойдет использование кода Javascript, JQuery, Ajax на HTML-странице, тогда можно и внешние скрипты вызавать на исполнение, а результаты исполнения внешних скриптов можно возвращать на страницу используя технологию Ajax.

      • Михаил:

        Спасибо за ответ, Владимир. Видимо, Вы правы. А сможете подсказать какие-нибудь источники, где прочитать про Ajax и Javascript? На всякий случай, поясню чем вызван мой вопрос: пытаюсь на вордпрессе реализовать простенькие интерфейсы обращения к своим БД с выводом информации из БД на страницу. Если делать не на вордпрессе — то есть готовые странички, которые выполняют нужный функционал (html + php). Но вордпресс как-то не очень хорошо относится к пользовательским страницам, внутри которых содержится код php — перекореживает их иногда. Поэтому хочется оставить чистый html на пользовательских страничках, а код php вынести в отдельные файлы. Надеялся, что можно будет обойтись без Java, но, по-видимому, не получится. :(

        • Михаил, почитайте для начала об использовании Ajax здесь и здесь. Там есть и пояснения и примеры.
          Да, и еще, не путайте Java с JavaScript — это абсолютно разные вещи :)

          • Михаил:

            Спасибо, Владимир!
            Понял, что надо еще очень многое прочитать. Чем и займусь. :)
            Есть есть рекомендации по хорошим книжкам о html, php, javascript — буду рад их получить. :)

  28. Михаил,
    из всех книг, какими я пользуюсь, могу порекомендовать только по JavaScript «Полный справочник по JavaScript — Томас Пауэлл, Фриц Шнайдер». По HTML и CSS есть отличнейший сайт-справочник htmlbook.ru. По PHP книг много, вот очень хорошая книга «PHP 5 в подлиннике — Дмитрий Котеров, Алексей Костарев»

  29. Gnork:

    Подскажите пожалуйста, как научить полученную таблицу изменять записи в БД? Т.е. сделать еще одну колонку в таблице с кнопкой «удалить» в каждой строке, нажатие на которую удаляло бы соответствующую строку из БД. Или вместо кнопок в каждой строке имет чекбоксы, а удалять одной «центральной» кнопкой.

    • Можно использовать PHP как для вывода таблицы на веб-страницу, так и для удаления какого-то поля или записи из БД. Например в каждой строке выводимой таблицы добавить кнопку, при нажатии которой при помощи кода PHP будет формироваться и передаваться POST-запрос, содержащий какие-то значения из конкретной ячейки таблицы. Скрипт, который будет обрабатывать запрос (это может быть тот же файл скрипта, который и выводит таблицу на веб-страницу), будет принимать входящие значения и по ним будет делать запрос в базу данных на удаление нужной записи:

      if( isset( $_POST["delete_user"] )) {
         mysql_query( 'DELETE FROM users WHERE username="'. $_POST["username"] .'" LIMIT 1' );
      }
      

      В этом примере рассматривается случай, когда в POST-запросе было передано два значения: delete_user и username. По первому параметру PHP-скрипт убеждается, что это был запрос на удаление, а второй параметр будет использоваться для определения нужной записи в таблице БД, которая должна удалиться.

  30. Константин:

    ПРОШУ ПОМОЩИ!!!

    Подскажите, почему такой запрос работает:

    $sql = ' SELECT usd_price FROM jos_content WHERE id = 1 ';
    $db->setQuery($sql);
    $global_usd_price = $db->loadResult();
    

    А такой уже нет:

    $id = 1 ;
    $sql = ' SELECT usd_price FROM jos_content WHERE id = $id ';
    $db->setQuery($sql);
    $global_usd_price = $db->loadResult();
    

    SOS!!! Жду!!! Заранее СПАСИБО!!!

    • Константин,
      проблема в том, что вы вставили переменную $id в строку с одиночными кавычками, а это значит, что $id будет восприниматься не как переменная, а как обычный текст.
      Для того, чтобы все заработало, объявите строку запроса в двойных кавычках:

      $sql = " SELECT usd_price FROM jos_content WHERE id = $id ";
      

      или сделайте конкатенацию (склеивание) строк, вот так:

      $sql = ' SELECT usd_price FROM jos_content WHERE id = ' . $id;
      

      Во втором варианте можно использовать и двойные и одинарные кавычки.

      • Константин:

        СПАСИБО БОЛЬШОЕ ЗА ПОМОЩЬ!
        Приятно получить совет настоящего профессионала!

  31. Михаил:

    Привет, Владимир.
    Помоги разобраться — я вывожу на страницу циклом

    
    while($row = mysql_fеtch_array($result)){
            echo $rоw[COUNT(usеr)] ."-". $rоw['usеr']
            
    }
    
     

    но значение «$row['user']» в числах

    получается
    5-1
    1-2
    3-3 и т.д.

    можно условными операторами заменить значения «$row['user']» — 1,2,3… на текстовые?

    • Михаил, если вам нужно преобразовать числа в строки (заменить числовые значения на текстовые), то можно воспользоваться функцией strval():

      echo strval($row['user']);
      // числовое значение $row['user'] будет преобразовано в строку
      

      или преобразовать строки в числа функцией intval():

      $i = intval('123');
      // переменная $i будет содержать число 123
      

      • Михаил:

        Владимир, спасибо.
        Но задача вывести вместо 123 вывести яблок груш помидор
        В таблице «user_id», который обрабатывается, содержит только цифры 1 2 и 3
        Вот запрос

        $query = "SELECT user_id,  COUNT(user_id) FROM tab2 GROUP BY user_id";
        $result = mysql_query($query) or die(mysql_error()); 
         

        Вывод на страницу

        while($row = mysql_fetch_array($result)){
         
                echo "
        "; echo $row[user_id]. " - ". $row['COUNT(user_id)']; echo "
        "; }

        выводит 5-1…., а надо 5-яблок

        Спасибо.

        • Михаил:

          Владимир, опечатка в пред.посте:
          читать — выводит 1-5…., а надо яблок-5
          Спасибо.

        • Михаил, сделайте вот так:

          $food = array(1 => 'яблок', 2 => 'груш', 3 => 'помидор');
          
          while($row = mysql_fetch_array($result)){
           
            echo "
          "; echo $food[ $row[user_id] ] ." - ". $row['COUNT(user_id)']; echo "
          "; }

          Только в архиве $food добавьте что именно нужно, ну и в нужном порядке там все предметы пропишите.

          • Михаил:

            Все, это то, что надо.
            Большое спасибо за помощь.
            Удачи.

  32. Эльвира:

    Добрый день!
    Подскажите пожста…как можно вывести объявления в виде таблицы?

    Таблица 1.
    Название Город Просмотры Предложения Добавлен Бюджет Последняя цена

    • Эльвира, не совсем понял, что вы хотели. Вывести просто таблицу с помощью тегов HTML или получить значения из базы данных, к примеру на PHP, и тем же скриптом все оформить в виде таблицы?

  33. Эльвира:

    Владимир, да нужно вывести таблицу с помощью тегов HTML.
    я начинающий вебмастер. пока не получается это сделать(
    вот сайт на котором хотела реализовать данную идею: http://almet-stroi-portal.ru/index/zajavki_na_raboty/0-6
    Идея такая… Есть доска объявлений на сайте. вот хотелось бы, чтобы эти объявления выводились в виде таблицы.

    • Эльвира, вот пример:

      это сама таблица

      Название Город Просмотры Предложения Добавлен Бюджет Последняя цена
      Название 1 Город 1 Просмотры 1 Предложения 1 Добавлен 1 Бюджет 1 Последняя цена 1

      В секции HEAD HTML-страницы добавьте стиль таблицы (это лишь пример):

      
      
      
      
      
      

      Стили конечно лучше будет вывести в файл CSS.

  34. Дмитрий:

    Подскажите , как сделать вывод только например последних 5 сообщений из базы? я сделал вывод последних сообщений..и мне нужно ограничить их до 5 к примеру

  35. Дмитрий:

    имеется такой код:
    include(«bd.php»); подключение к базе данных

    $res=mysql_query(«SELECT * FROM `messages` ORDER BY `id` «); выбор из первой таблицы

    $res_data=mysql_query(«SELECT * FROM `users` ORDER BY `id` «); выбор из второй таблицы

    //Выводим все сообщения на экран
    while($d=mysql_fetch_array($res))
    {
    echo «.$d['city'].».$d['login'].».$d['message'].»;
    }

    есть две таблицы ‘messages’ и ‘users’, как сделать чтоб переменные из двух таблиц city login и message вывелись в одной строке

    PS $d['login'] $d['message'] — из первой таблицы $d['city'] из второй таблицы, мож кто подскажет

  36. Алексей:

    Здравствуйте! Я наверно не в тему, но спрошу. Как средствами SQL при создании базы данных реализовывать такие вещи: например, если мы в одно поле таблицы вводим число 15, то в другой таблице, мы не должны ввести в поле значение больше единицы.
    Я могу это реализовать только CHECKом, но слишко длинная строка получается. Например, если ввести 40, то надо проверить больше ли оно 30 и только тогда принимать решение, что в другое поле нельзя записать больше двух. Спасибо.

    • Не совсем понятно, что вы имели ввиду под «средствами SQL при создании базы». А вообще, перед внесением данных в БД можно средствами PHP делать проверку условий.

      Возможно я не совсем понял вашу задачу. Лучше бы вы дали какой-нибудь наглядный пример вашего решения.

      • Алексей:

        1) Есть СУБД SQLite. Через него я создаю файл с расширением .db. (здесь думаю понятно).
        2) Теперь как я создаю: сначала в текстовом файле описываю все таблицы и несколько запросов для заполнения. Потом в SQLite запускаю чтение из этого файла и в случае успеха создатся файл с расширением .db. Ну а далее можно юзать БД в любой программе заточенной под эту базу. (ну это не суть).
        3) В одной из таблиц имеется поле типа Integer, например, pole. (таблица Table1)
        В этой же табице этой же БД имеется поле Integer, например, kol-vo. (таблица Table1)
        Но надо создать ограничение такое, чтобы если kol-vo < 15, то pole не менее и не более одного.
        Если kol-vo == 20, то pole должно быть 2
        Если kol-vo == 31, то pole должно быть 3
        Если kol-vo == 30, то pole должно быть 2
        Обобщенной: на каждые 15 единиц поля kol-vo приходится одна единица поля pole.
        Т.е. при вводе kol-vo == 19 и pole == 1 должна выскачить ошибка т.к. pole должно быть равно 2 . Ну или просто не сработать.

        • Теперь вроде я понял. В таком случае мне думается, что вам нужно задействовать хранимые процедуры или триггеры для обработки данных. Вот примерно такой триггер можно было бы использовать (это всего лишь пример):

          DELIMETER //
          CREATE TRIGGER value_check BEFORE UPDATE ON Table1
          FOR EACH ROW
          BEGIN
            IF NEW.kol-vo == 31 THEN SET NEW.kol-vo = 3;
               ELSEIF NEW.kol-vo == 30 THEN SET NEW.kol-vo = 2;
            END IF;
          END;//
          DELIMETER ;
          

          Писать здесь все о Триггерах и Хранимых процедурах нет смысла, т.к. это большой объем информации. Вы можете почитать о Триггерах и хранимых процедурах например здесь.

          • Алексей:

            Я почитаю, спасибо большое, а то я даже не знал какую тему почитать.

  37. Борис:

    Здравствуйте! Очень нужна помощь!!!
    Есть две таблицы table1 и table2, и в той и другой есть поле NAME. Задача, проверить равенство этих полей и в случае если они совпадают вывести из таблицы table2 все данные по этому полю.

    • SELECT `NAME` FROM table2 WHERE `NAME` IN (SELECT `NAME` FROM table1)
      

      Этот запрос выберет из таблицы table2 все значения столбца NAME, значения которых имеются среди значений в таком же столбце NAME таблицы table1.

  38. Татьяна:

    Подскажите, пожалуйста, как реализовать вывод данных для каждого конкретного авторизовавшегося юзера индивидуально.
    В настоящий момент, используя Ваш скрипт (СПАСИБО!!!), я смогла вывести на страницу абсолютно все заказы из базы. Теперь нужно задать ограничения/условия, возможно, обратиться к другой таблице.

     
    ';
            echo '';
            echo '';
            echo 'Дата заказа';
            echo 'Время заказа';
            echo 'Откуда';
            echo 'Куда';
            echo '';
            echo '';
            echo '';
            
       // выводим в HTML-таблицу все данные клиентов из таблицы MySQL 
            while($data = mysql_fetch_array($qr_result)){ 
                    echo '';
                    echo '' . $data['date'] . '';
                    echo '' . $data['time'] . '';
                    echo '' . $data['address1'] . '';
                    echo '' . $data['address2'] . '';
                    echo '';
            }
            
        echo '';
            echo '';
    
        // закрываем соединение с сервером  базы данных
        mysql_close($connect_to_db);
    ?>
    
  39. Семён:

    Здравствуйте!
    Использую Ваш код для вывода данных с нужных мне столбцов из БД.
    Вопрос: Можно-ли как нибудь дописать код, чтоб в начале генерируемой страницы можно было выбрать к примеру сортировку по столбцу\по столбцу по алфавиту\ по дате, итп. Если да, то подскажите плиз как? Я в php абсолютный новичок. Использую Ваш скрипт для вывода записанных логов принт-сервера в бд. И уж очень не хватает для решения моей задачи сортировки. Хотелось бы иметь возможность нажатием мышки по столбцу, сортировать выданные данные к примеру по имени пользователя, по конкретному принтеру, по конкретной дате, по кол-ву страниц. Имею 1 таблицу со столбцами: (User, Printer, Port, Date, DocumentName, Pages,Copy)
    заранее Вам благодарен, если вы мне поможете в решении данного вопроса :)

    ';
            echo '';
            echo '';
            echo 'User';
            echo 'Printer';
            echo 'Port';
            echo 'Date';
            echo 'DocumentName';
            echo 'Pages';
            echo 'Copy';
            echo 'Size';
            echo '';
            echo '';
            echo '';
            
       // выводим в HTML-таблицу все данные клиентов из таблицы MySQL 
            while($data = mysql_fetch_array($qr_result)){ 
                    echo '';
                    echo '' . $data['User'] . '';
                    echo '' . $data['Printer'] . '';
                    echo '' . $data['Port'] . '';
                    echo '' . $data['Date'] . '';
                    echo '' . $data['DocumentName'] . '';
                    echo '' . $data['Pages'] . '';
                    echo '' . $data['Copy'] . '';
                    echo '' . $data['Size'] . '';
                    echo '';
            }
            
        echo '';
            echo '';
    
        // закрываем соединение с сервером  базы данных
        mysql_close($connect_to_db);
    ?>
    
    • Семён, для сортировки столбцов таблиц HTML очень много различных готовых решений. Вот например можно посмотреть, как используется скрипт TinyTable и скачать его здесь. Там есть ссылка на страницу с примером, так что открыв по той ссылке страницу, можно просмотреть ее исходный код, чтобы понять, как используется скрипт.

      • Семён:

        Спасибо Вам больщущее! TinyTable как раз то, что мне было нужно :) Стыдно конечно уже еще раз вас просить о чем-то, но вдруг вы знаете какой-то еще дополнительный скрипт, и быть может вы направите в нужное русло. В добавок к TinyTable еще хотелось бы сделать на странице фильтр, я как понимаю опять же это не PHP а HTML скрипты, фильтр нужен такой: К примеру сверху страницы есть кнопка с календарем, жмем на календарь, выбираем нужную нам дату, и в таблице появляются записи именно с этой датой по всем пользователям, так же, чтоб можно было уже отфильтровав данные по дате, можно было включить доп фильтр, к примеру по пользователю, по принтеру и т.п., Например, мне нужно узнать сколько страниц и на каких принтерах распечатал пользователь «test» в определенный день, или какие пользователи и с каких страниц печатали на принтере «Бухгалтерия» ну и еще бы хотелось, чтоб где-то в конце страницы считалась сумма. К примеру, выбрал день, выбрал пользователя, выдались данные за день по пользователю и внизу страницы маленькая табличка с общей суммой за выбранный период по пользователю «сколько страниц в общем пользователь напечатал на принтере «бухгалтерия» на принтере «Техотдел» и т.п… Тысячу раз буду Вам благодарен, если подскажете в какую сторону копать :) Извиняюсь за «приставучесть».

        • Для вашей задачи думаю подошел бы такой алгоритм:

          1) упомянутый вами календарь, или еще что-то, офлрмить в виде HTML-формы;
          2) при выборе в форме каких-то значений на сервер отправляется соответствующий POST или GET запрос, содержащий выбранные в форме параметры и их значения;
          3) принимающий этот запрос скрипт на стороне сервера, например на PHP, обрабатывает его и делает соответствующий SQL запрос(ы) к базе данных;
          4) после получения данных из БД скрипт обновляет веб-страницу;

          Таким образом вы получите динамическую страницу с формой для фильтра значений и таблицей. Ну а чтобы полностью не перезагружать веб-страницу при каждом срабатывании фильтра, можно, да и желательно, задействовать AJAX, чтобы при отправке/получении данных на странице обновлялась только нужная часть, например таблица с результатами. AJAX-запросы оптимальнее всего не писать «с нуля», а использовать уже готовые решения, например подключив библиотеку JQuery и используя ее функцию jQuery.ajax() как основу. По jQuery и AJAX можно найти кучу документации и примеров в сети.

  40. Анастасия:

    Здравствуйте, Владимир! На нашем сайте реализован вывод таблицы по-другому и данные другие.. Но что-то общее в структуре есть. Только вот данные не выводится, только шапка таблицы видна и пустая строчка. Мне кажется, что чего то не хватает в коде, но что именно не понимаю.

    Буду очень Вам благодарна, если подскажете чего не хватает в данном коде!)

    Query($q);
    $db_res->NavStart(1000);
    $size=$db_res->NavRecordCount;

    $i=0;
    ?>

    НаименованиеГОСТ, ТУРазмер, ммЦена, руб/кг.с НДС

    • Анастасия, по этому кусочку кода трудно догадаться, что в нем не так. Вот к примеру не видно, какой SQL запрос выполняется в этой функции Query($q);, плюс к тому не видно кода, который выводит саму таблицу и данные в нее.
      Если хотите, пришлите по почте (через форму обратной связи) полный код скрипта, и тогда возможно смогу вам помочь. Только не забудьте перед отправкой удалить из кода реквизиты доступа к БД, если они там есть.

  41. Владимир:

    Добрый день!
    Большое спасибо за таблицу. Все работает и прекрасно отображается. Это мой первый опыт. Но есть вопрос. Я хочу добавить к существующей таблице вывод картинки. Создал соответствующее поле (id_img varchar(255) MIME: image/png). В базе указываю url(/img/*.*). Но картинка не выводиться. Помогите…

    • Было бы неплохо, если бы вы дали полный код того, что вы добавляете в БД, и то, как пытаетесь вывести изображения в таблицу.

      В любом случае оптимальным решением было бы так:
      + в БД добавляете только URL на изображения, которые храните в определенном каталоге(ах) на сервере;
      + в ячейку таблицы выводите изображения, взяв ссылки на них из БД, например так:

      
         
      
      

      где $img_url — это ссылки на изображения, взятые из базы данных, типа /images/123.png и так далее.

      И еще, для обычных, рядовых БД совсем не хорошо хранить сами изображения в БД, и тем более, что изображения не должны храниться в полях типа varchar(255), которые предназначены только для текстовых значений.
      Если уж точно необходимо хранить изображения в БД, то это скорее всего тогда, когда сами изображения очень часто меняются или обновляются, например в огромном каталоге товаров интернет-магазина. И в таком случае нужно использовать тип данных BLOB или его производные, такие как TINYBLOB, BLOB или даже MEDIUMBLOB (до 16 мегабайт) или LONGBLOB (до 4 гигабайт)

      • Владимир:
        
        
        echo '' . $data['id_img']. ''; // вот именно как эту строку изменить?!
        
        • Видимо при вставке кода в комментарий у вас исчезли тэги, но все же…
          Если вы получаете из базы данных в $data['id_img'] именно ссылку на изображение примерно такого вида

          
          /images/auto1.png
          или
          http://vashsait.ru/images/auto1.png
          
          

          то вам нужно для вывода изображения в таблицу изменить код так:

          
          echo '';
          
          

          • Владимир:

            Спасибо большое…все работает!!!

          • Владимир:

            В продолжении….

            $qr_result = mysql_query(" SELECT * FROM " .$db_table_to_show )
                          or die(mysql_error()); // выбираем все значения из таблицы "Zip_a"
            
            $qr_result = mysql_query("SELECT * FROM .$db_table_to_show ORDER BY id LIMIT 0,20 ",$db_name) or die(mysql_error()); //выводим первые 20 строк. Вовсяком сучае должна. Но не выводить. Ошибка синтаксиса.
            
  42. Владимир, конечно же будет выдаваться синтаксическая ошибка. Внимательно посмотрите на свой код, на часть строки запроса. Используя ваш метод «встраивания» в строку запроса переменной «$db_table_to_show» нужно убрать символ точки перед ней, вот так:

    $qr_result = mysql_query("SELECT * FROM $db_table_to_show ORDER BY id LIMIT 0,20", $db_name) or die(mysql_error());
    

    или даже лучше, для большей наглядности, сделать конкатенацию строк классическим способом так:

    $qr_result = mysql_query("SELECT * FROM " . $db_table_to_show . " ORDER BY id LIMIT 0,20", $db_name) or die(mysql_error());
    

    Обратите внимание, что в подстроках после FROM и перед ORDER должны быть пробелы, иначе опять получите ошибку синтаксиса.

    • Владимир:

      Использовал два варианта, ниодин не работает. Пишет ошибку:
      Warning: mysql_query() expects parameter 2 to be resource, string given in zip_a.php on line 24

      • Вторым параметром в функции mysql_query() у вас должно быть не имя базы данных $db_name, а $connect_to_db, т.е. ссылка на соединение с ней.
        Если у вас в скрипте до вызова функции mysql_query() уже было произведено соединение с БД, то второй параметр вообще можно не указывать, если вы конечно же работаете с той же самой базой данных.

  43. Яна:

    Здравствуйте, подскажите пожалуйста, как сделать так, чтобы в столбец «Публикации» можно было вывести результат $result2? Возможно ли в while добавить 2 условия?

    ...
    $result = mysql_query($query);
    $result2 = mysql_query($query2);
    
    $i=0;
    if (isset($_POST['sort'])) {
      echo '';
      echo '';
        echo '';
        echo '';
        echo '';
        echo '';
      echo '';
    
      while ($row = mysql_fetch_assoc($result)){
         echo '';
            $i++;
            echo '';
            echo '';       
            echo '';
            ...
         echo '';
     } 
    echo '
    №п/пФамилияИмяПубликации
    '.$i.'.'.$row['last_name'].''.$row['name'].'
    '; }
    • Яна:

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

       
      $query =  
      "SELECT (SELECT COUNT(title), authors.id_author FROM articles, authors WHERE authors.id_author=articles.author) as `tit`, DISTINCT authors.id_author, authors.last_name,authors.name,authors.patronymic,authors.publications,indexes.h_index
      FROM authors,indexes 
      WHERE authors.id_author=indexes.author order by ".$sort." desc limit 20"; 
      $result = mysql_query($query); 
      
  44. Иван:

    Когда запускаю это через Денвер, оно выдает код таблицы а не обрабатывает его!
    а подключение обрабатывает!
    _http://pixs.ru/showimage/123123123j_3015337_12426481.jpg

    ';
    echo '';
    echo '';
    echo 'Имя';
    echo 'Телефон';
    echo 'Фамилия';
    echo 'E-Mail';
    echo '';
    echo '';
    echo '';
    
    while($data = mysql_fetch_array($qr_result)){ 
            echo '';
            echo '' . $data['id'] . '';
            echo '' . $data['name'] . '';
            echo '' . $data['surname'] . '';
            echo '' . $data['email'] . '';
            echo '';
    }
    
    echo '';
    echo '';
    
    mysql_close($connect_to_db);
    ?>
    
    • Иван, а весь исходный код страницы у вас выглядит нормальным в плане формата HTML?
      Скорее всего у вас есть ошибки в формате самого исходного кода. Наберите код в обычном блокноте (Notepad.exe), сохраните и проверьте снова.

  45. Сергей:

    Здравствуйте. Подскажите пожалуйста, я сделал первый столбец в виде ссылок на страницу редактирования, как открыть эту страницу с даными относительно выбора ссылки. Другими словами, если предположим твблица имеет 10 строк, пользователь нажимает на скажем 7-ую, нужно открыть страницу редактирования с 7-ой строкой. Заранее благодарю.

       // выводим в HTML-таблицу все данные из таблицы MySQL 
       while($data = mysql_fetch_array($qr_result)){ 
          echo '';
          echo ''. $data['first_name'] . '';
          echo '' . $data['second_name'] . '';
          echo '' . $data['cdl_number'] . '';
          echo '' . $data['data_bd'] . '';
          echo '';
       }
       echo '';
    
    • Если я правильно понял ваш вопрос, то глядя на код можно сказать, что ничего не получится, т.к. у вас все ссылки в таблице в первом столбце одинаковые и ведут на одну и ту же страницу.

      Если же вы хотите, чтобы в каждой строке первого столбца были разные ссылки, то можно к примеру сделать так, чтобы ссылка на страницу формировалась в зависимости от номера строки в таблице.

      $num = 0;
      
      while($data = mysql_fetch_array($qr_result)){
        $num++;
        echo '';
        echo '' . $data['first_name'] . '';
        echo '' . $data['second_name'] . '';
        echo '' . $data['cdl_number'] . '';
        echo '' . $data['data_bd'] . '';
        echo '';
      }
      

      В таком случае у вас в каждой строке будет новая ссылка вида

      edit_page_1.html
      edit_page_2.html
      ...
      edit_page_7.html
      edit_page_8.html
      edit_page_9.html
      edit_page_10.html
      

  46. Сергей:

    Благодарю за ответ, но я имел ввиду чуть другое. Предположим мы выводим на html страницу — таблицу сотрудников из базы даных, как сделать так, чтобы при выборе фамилии сотрудника мы попадали на страницу с формой редактирования этого сотрудника ? Может есть ссылка на материал подобного рода, именно по работе с таблицами в html ?

    • По поводу ссылок на материал сказать не могу, не интересовался такими. А вот для того, чтобы кликнув по ссылке из HTML таблицы попадать на форму редактирования для конкретного сотрудника, можно сделать следующее — в БД для каждого сотрудника кроме имени можно хранить и конкретную ссылку для него, и соответственно именно такие ссылки и выводить в HTML таблицу. Это как один из наиболее простых решений, и это будет больше востребовано скорее всего для администратора или менеджера.

      Можно конечно использовать к примеру и привязку к сессии, которая формируется при логине сотрудника на сайте. При логине на сайте у каждого сотрудника будет создаваться уникальная сессия, на основе которой и будут формироваться ссылки для каждого своя. Это довольно сложно, но к тому же в таком случае будет отпадать смысл в выводе всех сотрудников и ссылок для них в одну HTML страницу. Ведь нет смысла какому-то сотруднику показывать ссылки в таблице для других сотрудников.

  47. Сергей:

    Владимир, извините за назоиливость, мне кажеться я задаю оч. простой вопрос но не правильно. Поэтому попробую еще раз… К примеру имееться таблица «сотрудники» в MySQL и две HTML страницы (все_сотрудники.php и отдельный_сотрудник.php) обе берут даные из таблицы сотрудники, только на одной странице мы можем посмотреть всех используя код из темы, а на другой странице форма для редактирования каждого отдельного(выбраного сотрудника). Так вот вопрос в следующем, как попасть на «отдельный_сотрудник.php» предварительно нажав его на странице «все_сотрудники.php» Такие переходы должны быть интересны всем начинающим, потому как без них невозможно дальше… увы

    • Сергей, так в вашем же коде и было так, что можно кликнуть по ссылке из HTML-таблицы и попасть на страницу с формой:

      echo ''. $data['first_name'] . '';
      

      Только в href="/отдельный_сотрудник.php" естественно нужно прописать соответствующий путь. В данном примере он относительный, т.е. начиная с корня сайта, но у вас может быть файл отдельный_сотрудник.php (или .html) может находиться совсем в другом месте, и вы вообще можете указать полный путь к нему, вот так к примеру:
      href="http://sait.ru/otdelkadrov/отдельный_сотрудник.php"

  48. Сергей:

    Да в моем примере мы попадаем на страницу редактирования, но она всегда пуста, а должна быть заполнена личной карточкой сотрудника которого мы выбрали на предидущей странице…

    • Сергей, значит у вас не правильно идет обработка в скрипте на странице редактирования. Мало того, чтобы там все же что-то обрабатывалось правильно, нужно с первой страницы не только ссылку использовать, а и передавать в запросе к скрипту второй страницы конкретное имя пользователя, например что-то вроде такой ссылка на вторую страницу должна быть:

      http://sait.ru/вторая-страница.php?username=ivan
      

      Точно сказать не смогу, т.к. не знаю какой код скрипта там у вас и какие параметры он ожидает на входе.
      Сценарий должен быть примерно таким:
      1) с первой страницы переход на вторую должен быть по ссылке с параметром, в котором содержится имя пользователя или другие его данные;
      2) скрипт на второй странице принимает входящие параметры и делает запрос к БД с теми параметрами, и на основании полученных данных уже выводит корректные данные;

  49. нер:

    Возможно ли переделать наведением на ссылку и выводил полную информации страницы поста?
    Всплывающие информация (то есть полная новость) при наведении на элемент <(ссылка)

    • Можно. Это можно сделать с помощью скрипта Javascript/jQuery используя событие «onmouseover»:

      
      

      и в javascript уже функция обработчика события:

      object.onmouseover=function(){
        // здесь код скрипта
      };
      

  50. нер:
    // выводим на страницу сайта заголовки HTML-таблицы
    echo ''; 
    
    • Вот пример кусочка на PHP, где в коде страницы добавляется JavaScript с функцией обработки события при наведения курсора на ссылку, а в тэг ссылки добавляется вызов этой функции onmouseover="mouseOver()"

      echo '
        ';
      
      echo 'Тест'; 
      

      В результате работы скрипта, когда наведете курсор на ссылку, то появится окно с текстом «Вы навели курсор на ссылку». Это пример простой, чтобы вам понять, что и как должно и будет происходить. Ну а для ваших целей уже нужно будет написать функцию JavaScript свою, чтобы получить то, что хотите.

  51. нер:

    спасибо!

  52. Дима:

    Добрый День. Подскажите как быть в ситуации. Есть ХТМЛ таблица 10 на 10, как отследить в какой ячейке нажал пользователь? ну я понимаю что с помощью хтмл это не решить ну подскажите с помонщью чего можно реализовать?

    • Можно решить и с HTML, но конечно не без помощи Javascript, а конкретнее не без библиотеки jQuery. Можно например каждой ячейке присвоить свой уникальный ID, и при кликке по ней отправлять запрос на сервер вместе с тем ID, который был присвоен ячейке таблицы, типа:

      http://vashsait.net/?id=123
      

      Таким образом принимающий этот запрос скрипт на стороне сервера уже будет знать, от какой ячейки пришел запрос и соттветственно будет принимать соответствующие операции.

Оставить комментарий к Илья

Уважаемые посетители, пожалуйста, пишите осмысленные и исчерпывающие комментарии. Короткие фразы типа «спасибо автору», «возьму на заметку», «мне помогло» и т.п. будут удаляться. Исключение, когда Вы отвечаете на чей-то вопрос или благодарите за помощь.

Ссылки на Ваш сайт получат статус DoFollow после третьего комментария.

Для вставки кода в комментарии можно использовать BB-коды:
[text] [/text], [php] [/php], [html] [/html]

Подписаться на обновления блога 4remind.ru по RSS
Новости блога в социальных сетях

4remind.ru - персональный блог вебмастера



Наверх
Наверх