代码之家  ›  专栏  ›  技术社区  ›  Jose Vega

使用PHP动态创建表单元素

  •  1
  • Jose Vega  · 技术社区  · 15 年前

    这个短程序假定查找表X的列名,并创建一个至少包含一个文本字段和一个select元素的表单,该元素包含表中所有列的名称。有了这些信息,用户可以在此表上执行搜索,并进一步指定要在哪个列上执行搜索。我希望用户能够添加更多带有匹配选择元素的文本字段,以防他想要优化搜索。

    当用户按下按钮时,如何动态添加这些额外的字段?

    <?php
    $table_name = "tablename";
    mysql_connect("localhost", "root", "");
    $query = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '$table_name'";
    $result = mysql_query($query);
    
    $column_names="";
    
    while($row = mysql_fetch_array($result)){
        $column_names == "" ? $column_names .= $row["COLUMN_NAME"] : $column_names .= "," . $row["COLUMN_NAME"] ;
    }
    
    $column_names = explode(",", $column_names);
    ?>
    
    <html>
    <head>
        <title>SQLSEARCH</title>
    </head>
    <body>
    
    
    <form action="index.php" method="post">
    <?php
        echo "Search: <input tpe=\"text\" name=\"advtext[]\" /> in ";
        echo "<select name=\"advselect[]\">";
    
            foreach($column_names as $value)
                echo "<option>" . $value . "</option>";
    
        echo "</select>";
    ?>
    
    <input type="hidden" name="searchsent" value="1" />
    <input type="submit" name="searchbutton" value="Search" />
    
    </form>
    
    <input type="button" name="addattributes" value="Add Search Attributes" / onclick="AddSelect();">
    
    </body>
    </html>
    
    2 回复  |  直到 15 年前
        1
  •  1
  •   Jose Vega    15 年前

    每次用户按下按钮时,此函数都会添加一个输入元素和一个选择元素。

     function AddSelect(){
    
        var newInput = document.createElement('input');
        newInput.type='text';
        newInput.name = 'advtext[]';
    
    <?php
        foreach($column_names as $value => $i){
            echo "\tvar newOption" . $value . "=document.createElement('option')" . "\n";
            echo "\tnewOption" . $value . ".value='" . $i . "';" . "\n";
            echo "\tnewOption" . $value . ".innerHTML='" . $i . "';" . "\n\n";
        }
    ?>
    
        var newSelect = document.createElement('select');
        newSelect.name = 'advselect[]';
    
    <?php
        foreach($column_names as $value => $i){
            echo "\tnewSelect.appendChild(newOption" . $value . ")" . "\n";
        }
    ?>
    
        var SubmitButton = document.forms.myform.searchbutton;
    
        document.forms.myform.insertBefore(newInput, SubmitButton);
        document.forms.myform.insertBefore(document.createTextNode(" in "), SubmitButton);
        document.forms.myform.insertBefore(newSelect, SubmitButton);
    
    }
    
        2
  •  0
  •   Pavunkumar    15 年前

    可以为窗体使用innerhtml属性。否则,使用Ajax功能添加额外的文本框以动态添加。