| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Создание новой таблицы.
Создание новой таблицы.При входе в БД кроме списка таблиц отображается также список действий, которые можно производить с этими таблицами: просмотр всей таблицы, просмотр определенной информации, вставка данных, просмотр свойств таблицы, удаление всех данных из таблицы и удаление самой таблицы. Также на странице есть форма для создания новой таблицы. <h4>Create new table.</h4> <table align=center> <tr><td colspan=2><form action="<?php echo $script ?>" method="GET"> <tr><td colspan=2><input type="hidden" name="action" value="do_table"> <tr><td colspan=2><input type="hidden" name="do" value="create_new"> <tr><td colspan=2><input type="hidden" name="hostname" value="<?php echo $hostname ?>"> <tr><td colspan=2><input type="hidden" name="login" value="<?php echo $login ?>"> <tr><td colspan=2><input type="hidden" name="pass" value="<?php echo $pass ?>"> <tr><td colspan=2><input type="hidden" name="db" value="<?php echo $db ?>"> <tr><td><b>Table name:</b><td><input type="text" name="new_tbl" size="20"> <tr><td><b>Number of columns:<td><input type="text" name="col_num" size="3"> <tr><td colspan=2 align=center><input type="submit" value="Create"></form></table> Если ввести имя таблицы и количество столбцов, то будет отображена форма для ввода информации о самой таблице: имя столбца,тип,длина, умолчания,null/not null и т.д.То есть, все,что обычно вводится в SQL-запросе при создании новой таблицы из командной строки. Вот эта форма:
$f_types=array ("tinyint","smallint","mediumint","int","bigint","float","double",
"decimal","date","datetime","timestamp","time","year","char","varchar","tinyblob","tinytext",
"text","blob","mediumblob","mediumtext","longblob","longtext","enum","set");
?>
<h2>Database:<?php echo $db ?></h2>
<p><h4>Table:<?php echo $new_tbl ?></h4>
<form action="<?php echo $script ?>" method="POST">
<input type="hidden" name="action" value="do_table">
<input type="hidden" name="do" value="create_new">
<input type="hidden" name="hostname" value="<?php echo $hostname ?>">
<input type="hidden" name="login" value="<?php echo $login ?>">
<input type="hidden" name="pass" value="<?php echo $pass ?>">
<input type="hidden" name="db" value="<?php echo $db ?>">
<input type="hidden" name="num" value="<?php echo $col_num ?>">
<input type="hidden" name="create" value="1">
<input type="hidden" name="tb_name" value="<?php echo $new_tbl ?>">
<p><table align=center width=100% cellspacing=0 border=1 bordercolor="000000">
<tr><th>Field<th>Type<th>Length<th>Atributes<th>Null<th>Defaults
<th>Additional<th>Primary key<th>Index<th>Unique</tr>
<?php
for ($i=0;$i<$col_num;$i++) {
?>
<tr><td><input type="text" name="f_name[]" size=20><td><select name="f_type[]">
<?php
for ($j=0;$j<count ($f_types);$j++) {
echo "<option>".$f_types[$j]."</option>";
}
echo "</select>";
?>
<td><input type="text" name="f_len[]" size=8><td><select name="f_attr[]">
<option></option>
<option>binary</option>
<option>unsigned</option>
<option>unsigned zerofill</option>
</select>
<td><select name="f_null[]"><option>not null</option><option>null</option></select>
<td><input type="text" name="f_defs[]" size=20><td><select name="add[]
"><option></option><option>auto_increment</option></select>
<td><input type="checkbox" name="prim_key[]" value="<?php echo $i ?>">
<td><input type="checkbox" name="index[]" value="<?php echo $i ?>">
<td><input type="checkbox" name="unique[]" value="<?php echo $i ?>"></tr>
<?php
}
echo "</table>";
?>
<p>
<p><input type="submit" value="Create">
</form>
<?php
Здесь переменная $f_types- это массив, содержащий список типов столбцов. Когда вся информация введена, нажимаем кнопку "Create".Все данные передаются обработчику. В процессе чтения и обработки входных данных и формируется строка SQL-запроса для создания новой таблицы. Это показано в следующем фрагменте кода. По ходу дела я буду давать пояснения.
if ($create) {
?>
<h2>Database:<?php echo $db ?></h2>
<p><h4>Table:<?php echo $tb_name ?></h4>
<?php
//Формируем начало SQL-запроса.
$query="create table $tb_name (";
//Дальше добавляем имена столбцов, их типы и длину.
Переменная $num-это количество столбцов, она берется из самой первой формы, приведенной
в начале статьи.
for ($i=0;$i<$num;$i++) {
$query .="$f_name[$i] $f_type[$i]";
$query .=" (";
$query .="$f_len[$i]";
$query .=")";
//Также нужно указать, можно ли оставлять столбцы пустыми, т.е.указать тип null/not null.
if ($f_null[$i]=="not null") {
$query .=" not null";
} else {
$query .=" null";
}
Вся вышеприведенная информация обязательна для ввода. Дальнейшие поля-опциональны. Можно указать атрибуты таблицы-binary, unsigned и unsigned zerofill. Если тип поля выбран null, можно указать какое значение по умолчанию вводить в таблицу. Можно также указать будет ли столбец первичным ключом, уникальным или индексом. Если эта информация будет введена, нужно обработать и ее. //Добавляем атрибуты, дополнительную информацию (auto_increment или нет) и умолчания. if (!empty($f_attr)) { $query .=" $f_attr[$i]"; } else { $query .=""; } if (!empty($add[$i])) { $query .=" auto_increment"; } else { $query .=""; } if (!empty($f_defs[$i])) { $query .=" DEFAULT '$f_defs[$i]'"; } else { $query .=""; } $query .=","; } //В случае, если несколько столбцов будут составлять первичный ключ, нужно записать их через запятую в виде списка. if (!empty($prim_key)) { for ($j=0;$j<count ($prim_key);$j++) { $col=$prim_key[$j]; $key .="$f_name[$col],"; } //Удаляем последнюю запятую, она не нужна и добавляем первичный ключ к строке запроса. $key=ereg_replace (",$","",$key); if (count ($key)>0) { $query .="PRIMARY KEY ($key),"; } } else { $query .=""; } //То же проделываем с индексом и уникальным ключом. if (!empty($index)) { for ($j=0;$j<count ($index);$j++) { $col=$index[$j]; $ind_field .="$f_name[$col],"; } $ind_field=ereg_replace (",$","",$ind_field); if (count ($ind_field)>0) { $query .="INDEX ($ind_field),"; } } else { $query .=""; } if (!empty($unique)) { for ($j=0;$j<count ($unique);$j++) { $col=$unique[$j]; $uni_field .="$f_name[$col],"; } $uni_field=ereg_replace (",$","",$uni_field); if (count ($uni_field)>0) { $query .="UNIQUE ($uni_field),"; } } else { $query .=""; } //Снова удаляем последнюю запятую и закрываем скобку. SQL-запрос сформирован. $query=ereg_replace (",$","",$query); $query .=")"; //Теперь можно его выполнить. $result=mysql_query ($query) or die (error ($script,$login,$pass,$db)); ?> //Ответ пользователю. <table align=center bgcolor="steelblue"><tr><td> <b>SQL query:<br><?php echo $query ?></b></table> <p><h4>Table <font size=3 color="0000ff"><?php echo $tb_name ?></font> has been created.</h4> <p><center><?php echo home ($login,$pass,$db,$script) ?> <a href="<?php echo $script ?>?action=do_table&do=tbl_properties&tb_name=<?php echo $tb_name ?> &db=<?php echo $db ?>&hostname=<?php echo $hostname ?>&login=<?php echo $login ?>&pass=<?php echo $pass ?>" >Properties</a> </center> <?php Для демонстрации данного примера можно обратиться к скрипту MySQL Administrator и посмотреть все это в действии. И,в завершении, полный листинг данного фрагмента. Листинг примера.
elseif ($do=="create_new") {
connect ($hostname,$login,$pass,$db);
print_header ();
if ($create) {
?>
<h2>Database:<?php echo $db ?></h2>
<p><h4>Table:<?php echo $tb_name ?></h4>
<?php
$query="create table $tb_name (";
for ($i=0;$i<$num;$i++) {
$query .="$f_name[$i] $f_type[$i]";
$query .=" (";
$query .="$f_len[$i]";
$query .=")";
if ($f_null[$i]=="not null") {
$query .=" not null";
} else {
$query .=" null";
}
if (!empty($f_attr)) {
$query .=" $f_attr[$i]";
} else {
$query .="";
}
if (!empty($add[$i])) {
$query .=" auto_increment";
} else {
$query .="";
}
if (!empty($f_defs[$i])) {
$query .=" DEFAULT '$f_defs[$i]'";
} else {
$query .="";
}
$query .=",";
}
//
if (!empty($prim_key)) {
for ($j=0;$j<count ($prim_key);$j++) {
$col=$prim_key[$j];
$key .="$f_name[$col],";
}
$key=ereg_replace (",$","",$key);
if (count ($key)>0) {
$query .="PRIMARY KEY ($key),";
}
}
else {
$query .="";
}
if (!empty($index)) {
for ($j=0;$j<count ($index);$j++) {
$col=$index[$j];
$ind_field .="$f_name[$col],";
}
$ind_field=ereg_replace (",$","",$ind_field);
if (count ($ind_field)>0) {
$query .="INDEX ($ind_field),";
}
}
else {
$query .="";
}
if (!empty($unique)) {
for ($j=0;$j<count ($unique);$j++) {
$col=$unique[$j];
$uni_field .="$f_name[$col],";
}
$uni_field=ereg_replace (",$","",$uni_field);
if (count ($uni_field)>0) {
$query .="UNIQUE ($uni_field),";
}
}
else {
$query .="";
}
$query=ereg_replace (",$","",$query);
$query .=")";
$result=mysql_query ($query) or die (error ($script,$login,$pass,$db));
?>
<table align=center bgcolor="steelblue"><tr><td>
<b>SQL query:<br><?php echo $query ?></b></table>
<p><h4>Table <font size=3 color="0000ff"><?php echo $tb_name ?></font> has been created.</h4>
<p><center><?php echo home ($login,$pass,$db,$script) ?>
<a href="<?php echo $script ?>?action=do_table&do=tbl_properties&tb_name=<?php echo $tb_name ?>
&db=<?php echo $db ?>&hostname=<?php echo $hostname ?>&login=<?php echo $login ?>&pass=<?php echo $pass ?>">Properties</a>
</center>
<?php
} elseif ($sql_create) {
$query=stripslashes ($sql);
$result=mysql_query ($query) or die (error ($script,$login,$pass,$db));
?>
<table align=center bgcolor="steelblue"><tr><td>
<b>SQL query:<br><?php echo $query ?></b></table>
<p><h4>Table <font size=3 color="0000ff"><?php echo $tb_name ?></font> has been created.</h4>
<p><center><?php echo home ($login,$pass,$db,$script) ?></center>
<a href="<?php echo $script ?>?action=do_table&do=tbl_properties&tb_name=<?php echo $tb_name ?>
&db=<?php echo $db ?>&hostname=<?php echo $hostname ?>&login=<?php echo $login ?>&pass=<?php echo $pass ?>">Properties</a>
</center>
<?php
} else {
$f_types=array ("tinyint","smallint","mediumint","int","bigint","float","double","decimal","date","datetime","timestamp",
"time","year", "char","varchar","tinyblob","tinytext","text","blob","mediumblob","mediumtext","longblob","longtext","enum","set");
?>
<h2>Database:<?php echo $db ?></h2>
<p><h4>Table:<?php echo $new_tbl ?></h4>
<form action="<?php echo $script ?>" method="POST">
<input type="hidden" name="action" value="do_table">
<input type="hidden" name="do" value="create_new">
<input type="hidden" name="hostname" value="<?php echo $hostname ?>">
<input type="hidden" name="login" value="<?php echo $login ?>">
<input type="hidden" name="pass" value="<?php echo $pass ?>">
<input type="hidden" name="db" value="<?php echo $db ?>">
<input type="hidden" name="num" value="<?php echo $col_num ?>">
<input type="hidden" name="create" value="1">
<input type="hidden" name="tb_name" value="<?php echo $new_tbl ?>">
<p><table align=center width=100% cellspacing=0 border=1 bordercolor="000000">
<tr><th>Field<th>Type<th>Length<th>Atributes<th>Null<th>Defaults<th>Additional<th>Primary key<th>Index<th>Unique</tr>
<?php
for ($i=0;$i<$col_num;$i++) {
?>
<tr><td><input type="text" name="f_name[]" size=20><td><select name="f_type[]">
<?php
for ($j=0;$j<count ($f_types);$j++) {
echo "<option>".$f_types[$j]."</option>";
}
echo "</select>";
?>
<td><input type="text" name="f_len[]" size=8><td><select name="f_attr[]">
<option></option>
<option>binary</option>
<option>unsigned</option>
<option>unsigned zerofill</option>
</select>
<td><select name="f_null[]"><option>not null</option><option>null</option></select>
<td><input type="text" name="f_defs[]" size=20><td><select name="add[]"><option></option><option>auto_increment
</option></select> <td><input type="checkbox" name="prim_key[]" value="<?php echo $i ?>"> <td><input type="checkbox" name="index[]" value="<?php echo $i ?>"> <td><input type="checkbox" name="unique[]" value="<?php echo $i ?>"></tr> <?php } echo "</table>"; ?> <p> <p><input type="submit" value="Create"> </form> <?php } } Рубрика: MySQL
HTML 5: пять вещей вызывающих особый интер....
HTML 5 — это грядущее обновление гипертекстового языка разметки, основного способа создания контента для размещения его во всемирной паутине. Разработка HTML остановилась в 1999 году, на версии HTML 4.01 и с тех пор web-содержимое изменилось так, что текущие спецификации HTML перестали соответствовать сегодняшним требованиям. HTML 5 нацелен на то, чтобы увеличить функциональную совместимость HTML и соответствовать растущим требованиям разнообразного и смешанного web-контента. HTML 5 так же нацелен на устранение недостатков четвертой версии. В этой статье мы взглянем на 5 новых интересных вещей в HTML 5.
Подробнее... |
Рубрика: Html
| Добавлено: 22.12.2008
asp.net: ListView с разных сторон.
Элемент управления ListView был представлен в .Net Framework 3.5 как замена устаревшему GridView. Новый элемент имеет более расширенный функционал, чем его предшественник, но в тоже время лишен некоторых внутренних механизмов, что впрочем целиком следствие из расширенной универсальности ListView. Среди отличий ListView и GridView можно назвать и гибкую настройку разметки, что позволяет выводить данные не только в табличном виде, но и вообще в любом каком пожелает программист. Благодаря шаблонам ItemTemplate, EditItemTemplate, InsertItemTeplate можно настроить внешний вид при любом из состояний ListView: редактировании или выборе элемента.
Подробнее... |
Рубрика: .NET компоненты
| Добавлено: 22.12.2008
Создание кросс-таб отчета в Stimulsoft Rep....
Компания Стимулсофт предоставляет для разработчиков мощный набор инструментов для создания отчетов для Microsoft Visual Studio .Net 2005 и 2008; эти инструменты доступны как для Windows Forms, так и для Web Forms. Это генератор отчетов Stimulsoft Reports.Net. Генератор отчетов Stimulsoft Reports.Net имеет ряд особенностей: простая работа с дизайнером отчетов, полная поддержка экспорта в PDF, Word, Excel и многие другие форматы. Crystal Report и Microsoft Reporting Service – очень хорошие программные продукты для повседневной работы, но, если Вам необходимо создать отчеты с поддержкой кросс-табов, drill down, Ajax, штрих-кодов и возможностью подключения одновременно более одного источника данных, то Stimulsoft Reports.Net поможет Вам сэкономить массу времени. Также, данный генератор отчетов позволяет пользователям создавать свои собственные отчеты любой сложности. И все эти особенности делают Stimulsoft Reports.Net хорошим выбором в сфере программных продуктов для Business Intelligence.
Подробнее... |
Рубрика: .NET компоненты
| Добавлено: 22.12.2008
Остальные статьи: |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|