Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: проблема с созданием таблиц
 
 автор: yaolegyest   (14.08.2009 в 13:40)   письмо автору
 
 

написал программу для создания таблиц в базе данных, чтобы пользователь мог ввести в форму название таблицы, количество и название полей(от 1 до 10), но программа работает только когда введены все 10 полей:

<script language='JavaScript'>
function f(quant){
document.write('<html><head><title>s</title></head><body>');
document.write('<form action="cr_many_tb.php" method=post> ');

document.write( 'input name:<input type=text name="tb_name"><br>' ) ;
array=new Array(10);
array[0]="<input type=text name='one' value=0>";
array[1]="<input type=text name='two' value=0>";
array[2]="<input type=text name='three' value=0>";
array[3]="<input type=text name='for' value=0>";
array[4]="<input type=text name='fiv' value=0>";
array[5]="<input type=text name='six' value=0>";
array[6]="<input type=text name='sev' value=0>";
array[7]="<input type=text name='eig' value=0>";
array[8]="<input type=text name='nin' value=0>";
array[9]="<input type=text name='ten' value=0>";
for(i=0;i<quant;i++){
document.write(array[i]);
}
document.write( '<br><input type=submit>') ;
document.write('</form></body></html>');
}
</script>
<form> create table&nbsp &nbsp&nbsp&nbsp&nbsp&nbsp
quantity of field:<input type=text onBlur=f(this.value)>input <br></form>

ФАЙЛ cr_many_tb.php:
include"config.php";
$name_tb=$_POST["tb_name"];
$list=array('one','two','three','for','fiv','six','sev','eig','nin','ten');
$name_field=array();
$char=array();

for ($i=0;$i<10;$i++)
{
$x=$list[$i];
$name_field[$i]=0;
$char[$i]=0;
if($_POST[$x])
$name_field[$i]=$_POST[$x];
$char[$i]=30;
}


$cr_tb="CREATE TABLE $name_tb
(
id int auto_increment,
$name_field[0] varchar($char[0]),
$name_field[1] varchar($char[1]),
$name_field[2] varchar($char[2]),
$name_field[3] varchar($char[3]),
$name_field[4] varchar($char[4]),
$name_field[5] varchar($char[5]),
$name_field[6] varchar($char[6]),
$name_field[7] varchar($char[7]),
$name_field[8] varchar($char[8]),
$name_field[9] varchar($char[9]),
primary key(id)
)";
mysql_query($cr_tb);
То есть я думал, если например $name_field[9]=0 и varchar($char[9])=0 то их просто не будет в таблице, но оказалось, что в таком случае таблица просто не создается.Подскажите пожалуйста какое можно найти решение проблемы.

  Ответить  
 
 автор: Valick   (14.08.2009 в 13:56)   письмо автору
 
   для: yaolegyest   (14.08.2009 в 13:40)
 

написал программу для создания таблиц в базе данных
зачем? редактирование полей ещё куда ни шло, но создание таблиц зачем? чем пхпмайадмин не устраивает?
зачем на ЯвеСкрипт?
CREATE TABLE - должен собираться как "конструктор лего" исходя из полученных данных от браузера
вообще это гораздо сложнее чем вы думаете, ну а про безопасность я промолчу...

  Ответить  
 
 автор: yaolegyest   (14.08.2009 в 16:21)   письмо автору
 
   для: Valick   (14.08.2009 в 13:56)
 

Все-таки хотелось бы разобраться в данном вопросе.Я недавно изучаю HTML,PHP и JavaScript и для лучшего усвоения пытаюсь создавать программы подобные вышеприведенной и не первый раз сталкиваюсь с какой-то ограниченностью (вот например хотел имя формы задать переменной в цикле, чтобы не писать 10 раз - оказывается не получится). Я надеюсь, что все-таки хоть создать динамически таблицу выйдет?Все-таки для 10 полей вышеуказанный пример прекрасно работает.

  Ответить  
 
 автор: Valick   (14.08.2009 в 16:30)   письмо автору
 
   для: yaolegyest   (14.08.2009 в 16:21)
 

Если я Вам помогу, меня до конца жизни будут мучать угрызения совести, что я не остановил Вас и более того собственноручно толкнул к краю "пропасти" :(

  Ответить  
 
 автор: Valick   (14.08.2009 в 17:16)   письмо автору
 
   для: yaolegyest   (14.08.2009 в 16:21)
 

form.php

<form action='create_table.php' method='POST'>
Имя таблицы: <input type='text' name='name' value=''><br />
<?php
for($i=0$i<10$i++){
echo 
"Имя поля $i: <input type='text' name='pole[]' value=''><br />";
}
?>
<input type='submit' name='go' value='Создать'>
</form>

create_table.php

<?php
if(isset($_POST[go]) && !empty($_POST[name]) && !empty($_POST[pole])){
$query="CREATE TABLE $_POST[name] (id int auto_increment ";
foreach(
$_POST[pole] as $value){
if(!empty(
$value)) $query .=",$value VARCHAR(255) ";
}
$query .=",primary key(id))";
echo 
$query;
}
?>


Примерно (!) так.

  Ответить  
 
 автор: yaolegyest   (14.08.2009 в 23:08)   письмо автору
 
   для: Valick   (14.08.2009 в 17:16)
 

Valick, спасибо ! Не думал, что в запросе тоже можно написать цикл(книга по php и mysql у меня по самым основам, надо будет найти посерьезнне).

  Ответить  
 
 автор: Trianon   (14.08.2009 в 20:19)   письмо автору
 
   для: yaolegyest   (14.08.2009 в 16:21)
 

>Я недавно изучаю HTML,PHP и JavaScript и для лучшего усвоения пытаюсь создавать программы подобные вышеприведенной и не первый раз сталкиваюсь с какой-то ограниченностью (вот например хотел имя формы задать переменной в цикле, чтобы не писать 10 раз - оказывается не получится). Я надеюсь, что все-таки хоть создать динамически таблицу выйдет?

А что так мелко?
почему не сразу 10 серверов БД или там 10 датацентров?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования