2010-03-03 5 views
1

Ce programme court est supposé trouver les noms de colonne d'une table X, et créer un formulaire avec au moins un champ de texte et un élément de sélection qui contient tous les noms des colonnes de la table. Avec cette information, l'utilisateur peut effectuer une recherche sur cette table et spécifier plus précisément dans quelle colonne il souhaite effectuer la recherche. Je voudrais que l'utilisateur puisse ajouter plus de champs de texte avec des éléments de sélection correspondants, juste au cas où il voudrait affiner sa recherche.Créer dynamiquement des éléments de formulaire avec php

Comment puis-je ajouter dynamiquement ces champs supplémentaires lorsque l'utilisateur appuie sur un bouton?

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

Répondre

1

Cette fonction ajoute un élément d'entrée et un élément de sélection, chaque fois que l'utilisateur appuie sur le bouton.

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

} 
0

Vous pouvez utiliser les propriétés de innerHTML pour votre formulaire. Sinon, utilisez Ajax Functionality pour ajouter la zone de texte supplémentaire à ajouter dynamiquement.

Questions connexes