2012-07-01 67 views
1

我使用列中的信息創建輸入,例如,如果調用字段about_content它會輸出關於具有輸入字段的關於內容的標籤。這適用於插入,但我想要使用此代碼類似於UPDATE,我想向用戶顯示在數據庫中輸入的字段的當前值。例如,如果about_content = Hello World!我希望輸入值反映這一點。有沒有辦法動態地做到這一點?使用數據庫中的值和列名動態創建輸入字段

<?php 

require('dbc.php'); 

mysql_select_db($db); 
$resultInput = mysql_query("SHOW COLUMNS FROM about WHERE Field NOT IN 
('id', 'created', 'date_modified', 'last_modified', 'update', 'type', 'bodytext') 
AND Field NOT REGEXP '_image'"); // selects only the columns I want 

$result = mysql_query("SELECT * FROM about WHERE id=".$_GET['id']); // values I want to put into the values for <input> 

while ($row = mysql_fetch_assoc ($result) && $column = mysql_num_rows ($resultInput)) { 

    foreach($row as $column => $value){ 
     echo '<label>'.$column.'<input name="'.$column.'" type="input" value="'.$value.'"></label><br>'; 
    } 
} 
?> 
+0

是否'SHOW COLUMNS'工作在SQL查詢? –

+0

是的,目前每個部分都完全獨立工作,但問題是idk如何結合輸入值 – Alex

+0

您目前在哪裏存儲值? – Kishore

回答

1

查看您標有箭頭的位置?而不是字符串(1),請將value設置爲您在$result(而不是$resultInput)中讀取的相應數據庫值。

以下是操作方法:使用mysql_fetch_assoc代替您的SELECT查詢,而不是mysql_fetch_row。將只有一行,因此在之前取回它您開始生成表單。然後,您將擁有一個包含行值的命名數組,並且您可以按名稱獲取每個字段並將其放置在表單中。

如果你不明白如何做到這一點,請檢查php文檔中的mysql_fetch_assoc

並且像你在最後一個問題中所說的那樣逃離你的$_GET['id']。你乞求被馴服!

+0

謝謝我在擔心安全性後,我得到的主要功能工作...(1)只是這樣的人可以理解也許我想做...我是仍然困惑如何設置數據庫值爲$結果,只有當我有一個while函數與$ resultInput獲取列名 – Alex

+0

看到新的段落 – alexis

1

請參閱mysql_fetch_field

if (mysql_num_rows($result) > 0) { 
//loop creates inputs 
//make $resultInput object to array. 
$i=0; 
while ($row = mysql_fetch_assoc($result)) { 
    $meta = mysql_fetch_field($result, $i); 
    if(in_array($meta->name, $resultInput)){ 
    echo '<div class="wrapper"><label>' . ucfirst(str_replace('_', ' ',$meta->name)) . 
    '<br><input name="' . $meta->name . 
    '" type="text" class="input" value="$row[$meta->name]"><br></label></div>'; 
    } 
    $i++; 
} 
} 
+0

警告:in_array()期望參數2是數組,在C: \ xampp \ htdocs \ test.php第17行 – Alex

+0

我曾說過要將$ resultInput對象作爲數組,例如$ resultInput = $ resultInput-> result() –

+0

它解析任何內容......它與$ i有關我改變了價值爲例如2我得到我的第二個領域。還有我的數組$ resultInput = array(「page_header」,「sub_header」,「content_short」,「content」); – Alex

0
<?php 
include('db.php'); 
if (isset($_POST['btn'])) { 

    $dcolumn = $_POST['dyncolumns']; 
    $dvalue = $_POST['dynfields']; 

    $name = $_POST['name']; 
    $mobile = $_POST['mobile']; 
    $address = $_POST['address']; 
    $query = "INSERT into addtable(name,mobile,address)VALUES('" . $name . "','" . $mobile . "','" . $address . "')"; 
    $result = mysql_query($query)or die(mysql_error()); 
    $id = mysql_insert_id(); 


    if ($dcolumn) { 
     foreach ($dcolumn as $key => $value) { 
      $result1 = "show COLUMNS from addtable like '.$value.'"; 
      $exists = mysql_query($result1)or die(mysql_error()); 
      $data = mysql_fetch_assoc($exists); 

      if ($data==TRUE) { 
       $query = "update addtable set $value = '" . $dvalue[$key] . "' where id=$id"; 
      } else { 
       $query1 = "ALTER TABLE addtable ADD $value varchar(45)"; 
       $result2 = mysql_query($query1)or die(mysql_error()); 
       $query = "update addtable set $value = '" . $dvalue[$key] . "' where id=$id"; 
       $result = mysql_query($query)or die(mysql_error()); 
      } 
     } 
    } 


} 
?> 
<script> 
    function myFunction() { 
     var table = document.getElementById("insert"); 
     var row = table.insertRow(3); 
     var cell1 = row.insertCell(0); 
     var cell2 = row.insertCell(1); 
     cell1.innerHTML = "<input type='text' name='dyncolumns[]'>"; 
     cell2.innerHTML = "<input type='text' name='dynfields[]' >"; 
    } 
</script> 
<html> 
    <body> 
     <form name="insert" method="post"> 

      <table border="2" align="center" id="insert"> 
       <tr> 
        <td>Name</td><td><input type="text" name="name" /></td> 
       </tr> 
       <tr> 
        <td>Mobile</td><td><input type="text" name="mobile" maxlength="10"/></td> 
       </tr> 
       <tr> 
        <td>Address</td><td><input type="text" name="address" /></td> 
       </tr> 

       <tr> 
        <td colspan="2" align="center"><input type="submit" name="btn" value="submit"></td> 
       </tr> 

      </table> 
      <input type="button" onclick="myFunction()" name="add" value="Add"> 
      <a href="logout.php">Logout</a> 
     </form> 
    </body> 
</html> 
+1

你能否給你的代碼添加一些評論或解釋? – Shogunivar

相關問題