X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Определение структуры
Scream_mw
Scream_mw
Topic Starter сообщение 25.3.2010, 22:26; Ответить: Scream_mw
Сообщение #1


Мне вот интересно, а как можно вывести php скриптом структуру БД и таблиц БД?
Как в phpmyadmin!
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 28.3.2010, 12:50; Ответить: ZiTosS
Сообщение #2


Scream,

Всё просто
[php]<?php

function getDataTable($sql)
{
if( ($res = mysql_query($sql)) == false ) // выполняем запрос
return mysql_error().mysql_errno(); // если в запросе ошибка, возвращаем строку с сообщение ошибки

$fields = array(); // сообщаем, что будем вытаскивать названия столбцов
$rows = array(); // сообщаем, что будем вытаскивать строки

$fields = getFieldsName($res); // получаем названия столбцов запроса

if( $count = mysql_num_rows($res) ) // если строк запросе > 0
while( ($array = mysql_fetch_row($res)) != false ) // обрабатываем в цикле строки
$rows[] = $array; // помещаем строку запроса

return array("fields" => $fields, "rows" => $rows, "count" => $count); // возвращаем массив, в котором содержатся - названия столбцов, все полученный строки и количество записей
}

function printDataTable($dataTable)
{
if( !is_array($dataTable) )
{
echo "Ошибка в запросе: {$dataTable}";
return;
}

if( !array_key_exists("fields", $dataTable) || !array_key_exists("rows", $dataTable) || !array_key_exists("count", $dataTable) )
{
echo "Неприемлемый тип данных";
return;
}

echo "<table cellpadding='5' cellpsacing='5'>";

echo "<tr>";
foreach($dataTable['fields'] as $field)
echo "<th>{$field}</th>";
echo "</tr>";

foreach($dataTable['rows'] as $row)
{
echo "<tr>";

foreach($row as $data)
echo "<td>{$data}</td>";

echo "</tr>";
}

echo "</table>";
}

function getFieldsName($res)
{
$fields = array(); // сообщаем, что будем вытаскивать названия столбцов (локальная переменная)

for($i = 0; $i < mysql_num_fields($res); $i++) // обрабатываем все индексы с о по [кол-во столбцов] - 1
$fields[] = mysql_field_name($res, $i); // помещаем в массив имя столбца с индексом $i

return $fields; // возвращаем массив названий столбцов
}


$sql = "SELECT [поля] FROM [таблица] WHERE [условия] ORDER BY [сортировка] LIMIT [лимит]";
$dataTable = getDataTable($sql);

printDataTable($dataTable);

?>[/php]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Joker-jar
Joker-jar
сообщение 4.4.2010, 11:58; Ответить: Joker-jar
Сообщение #3


Как вариант, для пятой ветки MySQL можно пользоваться БД information_schema
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
FordogeN
FordogeN
сообщение 5.4.2010, 9:46; Ответить: FordogeN
Сообщение #4


(Joker-jar @ 4.4.2010, 10:58) *
Как вариант, для пятой ветки MySQL можно пользоваться БД information_schema

Я ей пользуюсь)

Scream, вот пример вывода структуры БД в моей реализации... думаю ты пришел за этим.
зы. Писал на скорую руку и не проверял, но должно работать... за кривость кода не пинать)
[php]<?php
// Подключаемся к бд
$db = mysql_connect("host","user","password") or die("Не удалось подключиться к серверу бд");
mysql_select_db("information_schema",$db) or die("Не удалось подключиться к бд");


$q1=mysql_query("SELECT * FROM `KEY_COLUMN_USAGE` WHERE `CONSTRAINT_SCHEMA` LIKE '$SCHEMA_NAME';", $db) or die ("SCHEMATA ERROR mysql_query 2");
if(!$q1){
echo"Ошибка при работе с базой данных.";
exit(mysql_error());
}if (mysql_num_rows($q1) > 0){
$a1=mysql_fetch_array($q1);
do{
$CONSTRAINT_SCHEMA=$a1['TABLE_NAME'];
echo'<br><br><b>'.$a1["TABLE_NAME"].'</b><br>'; // Выводим в цикле имя таблицы

$q2=mysql_query("SELECT * FROM `COLUMNS` WHERE `TABLE_SCHEMA` LIKE '$SCHEMA_NAME' AND `TABLE_NAME` LIKE '$CONSTRAINT_SCHEMA';", $db) or die ("SCHEMATA ERROR mysql_query 3");
if(!$q2){
echo"Ошибка при работе с базой данных.";
exit(mysql_error());
}if (mysql_num_rows($q2) > 0){
$a2=mysql_fetch_array($q2);
do{

$COLUMN_NAME=$a2['COLUMN_NAME'];
echo"&nbsp; &nbsp; $COLUMN_NAME"; // Выводим в вложенном цикле имена полей таблицы

} while($a2= mysql_fetch_array($q2));
}

} while($a1= mysql_fetch_array($q1));
}


?>[/php]

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Автоматическое определение языка. Быстро.
0 capturis 1913 7.8.2017, 19:30
автор: capturis
Открытая тема (нет новых ответов) Виды трафика, определение?
Описание каждого вида
3 stixia007 4744 5.5.2015, 23:35
автор: Wolfhound
Открытая тема (нет новых ответов) Определение продажной стоимости сайта
7 Amilardo 1938 26.10.2014, 18:49
автор: Amilardo
Открытая тема (нет новых ответов) Определение мыла по странице ВКонтакте (узнать e-mail ВКонтакте)
0 Denn4k 7808 22.6.2012, 23:04
автор: -Denn4k-
Открытая тема (нет новых ответов) Перенос с любой CMS на Wordpress с сохранением структуры URL
Быстро, качественно, недорого
3 nick777 2944 16.1.2012, 0:09
автор: kopcap


 



RSS Текстовая версия Сейчас: 19.4.2024, 8:08
Дизайн