我一直在尝试创建一个允许用户使用动态生成的来创建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;
}
答案 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;
这将遍历数组并将每个表名放在字符串中,以后可以用来创建表。
(我暂时无法测试,但应该没问题。)