|
|
|
| написал программу для создания таблиц в базе данных, чтобы пользователь мог ввести в форму название таблицы, количество и название полей(от 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       
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 то их просто не будет в таблице, но оказалось, что в таком случае таблица просто не создается.Подскажите пожалуйста какое можно найти решение проблемы. | |
|
|
|
|
|
|
|
для: yaolegyest
(14.08.2009 в 13:40)
| | написал программу для создания таблиц в базе данных
зачем? редактирование полей ещё куда ни шло, но создание таблиц зачем? чем пхпмайадмин не устраивает?
зачем на ЯвеСкрипт?
CREATE TABLE - должен собираться как "конструктор лего" исходя из полученных данных от браузера
вообще это гораздо сложнее чем вы думаете, ну а про безопасность я промолчу... | |
|
|
|
|
|
|
|
для: Valick
(14.08.2009 в 13:56)
| | Все-таки хотелось бы разобраться в данном вопросе.Я недавно изучаю HTML,PHP и JavaScript и для лучшего усвоения пытаюсь создавать программы подобные вышеприведенной и не первый раз сталкиваюсь с какой-то ограниченностью (вот например хотел имя формы задать переменной в цикле, чтобы не писать 10 раз - оказывается не получится). Я надеюсь, что все-таки хоть создать динамически таблицу выйдет?Все-таки для 10 полей вышеуказанный пример прекрасно работает. | |
|
|
|
|
|
|
|
для: yaolegyest
(14.08.2009 в 16:21)
| | Если я Вам помогу, меня до конца жизни будут мучать угрызения совести, что я не остановил Вас и более того собственноручно толкнул к краю "пропасти" :( | |
|
|
|
|
|
|
|
для: 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;
}
?>
|
Примерно (!) так. | |
|
|
|
|
|
|
|
для: Valick
(14.08.2009 в 17:16)
| | Valick, спасибо ! Не думал, что в запросе тоже можно написать цикл(книга по php и mysql у меня по самым основам, надо будет найти посерьезнне). | |
|
|
|
|
|
|
|
для: yaolegyest
(14.08.2009 в 16:21)
| | >Я недавно изучаю HTML,PHP и JavaScript и для лучшего усвоения пытаюсь создавать программы подобные вышеприведенной и не первый раз сталкиваюсь с какой-то ограниченностью (вот например хотел имя формы задать переменной в цикле, чтобы не писать 10 раз - оказывается не получится). Я надеюсь, что все-таки хоть создать динамически таблицу выйдет?
А что так мелко?
почему не сразу 10 серверов БД или там 10 датацентров? | |
|
|
|