使用动态创建的表单创建MySQL表

时间:2014-09-12 22:28:34

标签: php mysql

我一直在尝试创建一个允许用户使用动态生成的来创建MySQL表的表单。用户最初输入所需的表名,然后输入他们想要的行数。当他们键入数字时,会创建相等数量的表单行。创建的每个字段都有一个名称,如“fieldName []”。我希望创建一个数组,然后使用创建的数组来完成表创建查询。如果我使用类似的东西,我可以按照我想要的方式工作:

$myarray = array("key1"=>array($fieldName[0],$fieldName[1],$fieldName[2]),
    "key2"=>array($fieldType[0],$fieldType[1],$fieldType[2]),
     "key3"=>array($fieldLength[0],$fieldLength[1],$fieldLength[2]));

Javascript Dynamic Row Creator:

function numFields(nums) {
var str = "";
for (i = 0; i < nums; i++) {
    str += '<p><label style="padding-left:10px;">Name: <input type="text" value="fred'+(i+1)+'" name="Name[]" id="newtblname'+(i+1)+'" /></label></p>';
}
document.getElementById('Fields').innerHTML = str;
}

PHP:

if (isset($_GET['tabletest'])) {
$Name=$_POST['Name'];
$x=0;
foreach($Name as $value) {
    $names= $value;
    echo $Name[$x];
    echo "<br>";
    $x++;
}
}

解决方案:这是我开始工作的代码:

$fieldsNum = $_POST['fieldsNum'];
$tblName = $_POST['tblName'];
$nameArray=$_POST['Name'];
$x = 0;

$tables = 'CREATE TABLE '.$tblName.' (';
foreach($nameArray as $value) {
$tables .= $value . " CHAR(200)"; 
$x++;
if($x<$fieldsNum) {
$tables .= ", ";
}

}
$tables .= ');';

echo $tables;
}

1 个答案:

答案 0 :(得分:0)

您需要在HTML中添加一个表单,如:

<form method="post" action="tableCreate.php">
<input type="text" name="fieldName[]"><br>
.
.
.
<button type="submit">Go!</button>
</form>

然后在tableCreate.php中,您应该将它们视为

$tableArray = $_POST['fieldName'];
$tables = 'CREATE TABLE tblName (';    

foreach($tableArray as $value) {
$tables .= $value . " CHAR(200), ";
}
$tables .= ');';

echo $tables;

这将遍历数组并将每个表名放在字符串中,以后可以用来创建表。

(我暂时无法测试,但应该没问题。)