Dinamik php ile form elemanları oluşturmak

2 Cevap php

Bu kısa program bir tablo X sütun adlarını bulmak ve en az bir metin alanıyla formu ve tablonun tüm sütunları adlarını içeren bir seçme öğesi oluşturabilirsiniz varsayalım. Bu bilgi ile, kullanıcı bu tablo üzerinde bir arama yapabilirsiniz ve daha o arama yapmak istiyorum hangi sütun üzerinde belirtin. Ben onun aramayı daraltmak istiyor sadece durumda, eşleme seçeneğini elemanları ile daha fazla metin alanını eklemek mümkün olması için kullanıcı için bunu istiyorum.

Nasıl dinamik olarak bu ekstra alanlar hiç kullanıcı bir düğmeye basın ekleyebilirsiniz?

<?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 Cevap

Bu işlev bir giriş elemanı ve bir seçme elemanı, kullanıcı düğmeye bastığında her zaman ekler.

 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);

}

Siz formu için innerHTML özelliklerini kullanabilirsiniz. Aksi dinamik olarak eklemek için ekstra metin kutusu eklemek için Ajax işlevselliği kullanın.