Перейти к содержимому

Сервис обмена электронных валют

Выбрать шаблон и создать сайт

Определение структуры

#1 Scream

Scream
  • Пользователь
  • 42 сообщений
  • Репутация: 0
0

Отправлено 25 Март 2010 - 21:26

Мне вот интересно, а как можно вывести php скриптом структуру БД и таблиц БД?
Как в phpmyadmin!

 

 

  • 0

#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 28 Март 2010 - 11:50

Scream,

Всё просто
<?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);

?>

  • 0

#3 Joker-jar

Joker-jar
  • Пользователь
  • 3 сообщений
  • Репутация: 0

Отправлено 04 Апрель 2010 - 10:58

Как вариант, для пятой ветки MySQL можно пользоваться БД information_schema
  • 0

#4 FordogeN

FordogeN
  • Пользователь
  • 1 414 сообщений
  • Репутация: 0

Отправлено 05 Апрель 2010 - 08:46

Как вариант, для пятой ветки MySQL можно пользоваться БД information_schema

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

Scream, вот пример вывода структуры БД в моей реализации... думаю ты пришел за этим.
зы. Писал на скорую руку и не проверял, но должно работать... за кривость кода не пинать)
<?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));
}


?>

  • 0

Как настроить выдержку и диафрагму зеркального фотоаппарата




Оформление форума – IPBSkins.ru