Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Отображение данных из БД mysql на PHP -странице

Поиск

Продолжим работу с данными, отобранными из таблицы students. Пока этот результат хранится в переменной $result.

Код страницы index.php имеет вид:

 

<?php

//устанавливаем доступы к базе данных:

//переменная $host - имя хоста, на локальном компьютере (в нашем случае, это localhost)

$host = 'localhost';

//переменная $user – имя пользователя, по умолчанию это root

$user = 'root';

//переменная $password – пароль, он по умолчанию пустой

$password = '';

//$db_name – имя базы данных

$db_name = 'test';

//создаем соединение, используя наши доступы:

mysql_connect($host, $user, $password);

//выбираем базу данных

mysql_select_db($db_name);

//устанавливаем кодировку (не обязательно)

mysql_query("SET NAMES ' cp1251'");

//задаем имя таблицы в переменной $table

$table = 'students';

//отбираем все записи из таблицы students

$query = "SELECT * FROM ". $table;

//выполняем запрос

$result = mysql_query($query);

?>

 

После того, как сделали запрос к базе, в переменной $result будет лежать результат этого действия. Однако лежит он не в той форме, которая нам нужна в PHP, а в той форме, в которой его прислала нам база.

Достать результат в нормальном виде (в виде массиве) можно с помощью функции mysqli_fetch_assoc. Функция mysqli_fetch_assoc считывает одну строку результата, который прислала база данных.

Чтобы отобразить все строки из переменной $result используем цикл while.

После команды $result = mysql_query($query) добавляем следующий код:

 

//Преобразуем то, что отдала база в массив PHP с именем $row

//пока происходит считывание строк из $result

while($row = mysqli_fetch_assoc($result))

{

//выводим данные из массива $row:

echo $row['fam']." со стипендией ". $row['stip']." руб <br>";

}

?>

 

Итоги:  

1) в цикле while считываем построчно результат из базы данных;

2) когда цикл дойдет до последней строки функция mysqli_fetch_assoc вернет false и цикл while закончит свою работу;

3) массив $row имеет поля такие же, как и база данных students, и обращение к ним осуществляется так: $ row [' id '], $ row [' fam '], $ row [' age '], $ row [' stip '].

 

Чтобы данные из базы были выведены в табличном виде, теги создания таблицы, строк и ячеек напечатаем с помощью команды echo. Изменим вышеприведенный код:

           

//Делаем запрос к БД, результат запроса храним в $result:

$result = mysql_query($query);

 

//Печатаем тег начала таблицы

echo '<table align="center" border="1">';

//Создаем шапку таблицы

//Начинаем первую строку

echo '<tr>';

//Создаем первую ячейку первого столбца

echo '<th>Номер</th>';

//Создаем первую ячейку второго столбца

echo '<th>Фамилия</th>';

//Создаем первую ячейку третьего столбца

echo '<th>Возраст</th>';

//Создаем первую ячейку четвертого столбца

echo '<th>Стипендия</th>';

//Завершаем первую строку

echo '</tr>';

// Делаем обход массива и вывод данных из таблицы students

while($row = mysql_fetch_assoc($result))

{

  //печатаем очередную строку таблицы с данными

echo '<tr align="center">';

echo '<td>'.$row['id'].'</td>';

echo '<td>'.$row['fam'].'</td>';

echo '<td>'.$row['age'].'</td>';

echo '<td>'.$row['stip'].'</td>';

echo '</tr>';

}

//закрываем тег создания таблицы

echo '</table>';

?>

 

Обновите страницу index.php и просмотрите результат – это должна быть таблица:

 

 

Обработка команд SQL в PHP

Команда SELECT

Команда SELECT позволяет отобрать несколько строк из таблицы. Ее синтаксис следующий:

 

SELECT * FROM имя_таблицы WHERE условие_отбора; Примеры использования команды SELECT рассмотрим ниже.

Выберем из нашей тестовой таблицы students студента с id равным 2:

<?php //В $result будет находиться одна строка с данными на Белова: $query = "SELECT * FROM students WHERE id=2"; $result = mysql_query($query);?>

Выберем из нашей таблицы students студентов с id больше 2:

<?php //В $result будут все студенты, кроме первого и второго: $query = "SELECT * FROM students WHERE id>2"; $result = mysql_query($query);?>

 

Выберем из нашей таблицы students студентов с id больше 2 включительно:

<?php //В $result будут все студенты, кроме первого: $query = "SELECT * FROM students WHERE id>=2"; $result = mysql_query($query);?>

 

Выберем из нашей таблицы students студентов с id, не равным 2:

<?php //В $result будут все студенты кроме Белова (потому что у него id равен 2): $query = "SELECT * FROM students WHERE id!= 2"; $result = mysql_query($query);?>

 

Выберем из нашей таблицы students студентов возрастом 16 лет:

<?php //В $result будут Антонов и Ветров: $query = "SELECT * FROM students WHERE age=16"; $result = mysql_query($query);?>

 

Выберем из нашей таблицы students студентов со стипендией 1400:

<?php //В $result будут Донцов, Калинин: $query = "SELECT * FROM students WHERE stip=1400"; $result = mysql_query($query);?>

 

Выберем из нашей таблицы students студента с фамилией Егоров:

<?php //В $result будет только Егоров: $query = "SELECT * FROM students WHERE fam='Егоров' "; $result = mysql_query($query); /*       Обратите внимание на кавычки:        поскольку вся строка запроса у нас лежит в двойных        кавычках, то строку 'Егоров' мы возьмем в одинарные! */?>

Группировки условий

Если вам нужны сложные комбинации команд OR и AND то, так же, как в if, их можно группировать с помощью круглых скобок (), чтобы показать приоритет условий.

Давайте выберем всех студентов в возрасте от 16 лет до 18 лет (включительно) или со стипендией не менее 1400 руб (обратите внимание на расстановку скобок () - именно они группируют условия):

 

SELECT * FROM students WHERE (age>=16 AND age<=18) OR (stip>=1400)

Выбор столбцов

В результат, который вернет нам база данных, не обязательно включать все столбцы.

Пусть необходимо узнать только фамилия и возраст студента, не вытягивая из базы данных всю остальную информацию:

 

<?php /*       В $result будут только поля fam и age и не будет id, stip       (звездочка *, которую мы ставили раньше, указывает вернуть ВСЕ столбцы): */ $query = "SELECT fam, age FROM students"; $result = mysql_query($query);?>

Кроме того, можно выполнить частичное совпадение строки с помощью % в ключевых словах. Ниже будут показаны все студенты, фамилия которых начинается с “Ант”.

SELECT * FROM students WHERE fam LIKE ' Ант% ';

 

Ниже будут показаны все студенты, фамилия которых заканчивается на “ов”.

SELECT * FROM students WHERE fam LIKE ' %ов ';

 

Вы также можете дать % в обоих направлениях. В этом случае, будет поиск для данного ключевого слова в любом месте строки. Ниже будут показаны все студенты, которые содержат “н” внутри их фамилии.

SELECT * FROM students WHERE fam LIKE '%н%';

Давайте выберем те записи, у которых возраст начинается с цифры 2, а затем идет еще один символ:

SELECT * FROM students WHERE age LIKE '2_'


Поделиться:


Последнее изменение этой страницы: 2021-05-27; просмотров: 148; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 13.59.68.161 (0.005 с.)