Юмор: Израильский SQL-сервер отвечает запросом на запрос. :-)
Наверняка многие из Вас сталкивались с необходимостью получения данных из таблицы базы данных MySQL и последующего их вывода в виде обычной таблицы с использованием языка HTML. В сегодняшнем материале я расскажу как это сделать.
Код довольно прост, сперва нам нужно осуществить соединение с базой данных, например, таким образом:
require_once("../unit_db.php");
include("../const_dirs.php");
$db = new db_processor();
$db->connect();
?>
или, что более вероятно, таким:
$link = mysql_connect("127.0.0.1", "demos", "3133") or die($ccdb.".
");
mysql_query("SET NAMES cp1251"); //устанавливаем кодировку для соединения, если требуется
mysql_query("SET SESSION group_concat_max_len = 2048"); //Максимальный размер для функции GROUP_CONCT(). Введена с версии 4.1.0., чаще не требуется
mysql_select_db("demos".$test) or die($csdb.".
");
?>
Далее осуществляем подготовку запроса к базе данных:
FROM questions as q, answers as a
WHERE q.questionid=a.questionid
and AnswerIsRight=1
group by q.questionid, QuestionText
order by 1";
Выполняем запрос. Для первого варианта соединения он будет таким:
?>
Для второго - таким:
$result = mysql_query($query, $link) or die(mysql_error());
?>
И, наконец, выводим результат:
//echo implode('',$line);
echo ''.$line[0].''.$line[1].''.$line[2];
}
?>
Обратите внимание на строки
echo ''.$line[0].''.$line[1].''.$line[2];
Если мы раскомментируем первую и закомментируем вторую - получим вывод всех полей результата, но они будут продублированы, потому что $result содержит по два значения для каждого поля с разными ключами: имя поля и номер поля.
В остальном можете поэкспериментировать самостоятельно.
Удачных Вам проектов!
P.S.
Мне попалась база с проблемами с кодировкой, поэтому запрос на выборку данных пришлось задавать таким образом:
CONVERT(CONVERT(group_concat('- ',answertext SEPARATOR '\n')USING binary) USING cp1251) as Ответы
FROM questions as q, answers as a, tests as t
WHERE q.questionid=a.questionid
and q.testid=t.testid
and AnswerIsRight=1
group by testtitle, q.questionid, QuestionText
order by 1,2
limit 100000
и таким
q.id,
CONVERT(CONVERT(q.text USING binary) USING cp1251) as Вопрос,
CONVERT(CONVERT(group_concat('- ',a.text SEPARATOR '\n')USING binary) USING cp1251) as Ответы
FROM edu_questions as q, edu_answers as a, edu_tests as t
WHERE q.id=a.Question
and q.test=t.id
and IsRight=1
group by testtitle, q.id, q.Text
order by 1,2
limit 100000