2016-12-15 26 views
0

我有一些PHP連接到數據庫並創建一個下拉列表。我有,我想放在列表中的HTML的具體形式。如何將php中的下拉列表放在特定的HTML表單中?

<body> 
    <form> 
     // some text inputs 

     // where i'd like the drop down to go 
     <?php makeList(parameter1, parameter2); ?> 

     // submit button 
    </form> 

<?php 
    // connect to database 

    function makeList(arg1, arg2) { 
     echo '<select>'; 

     while ($row = mysqli_fetch_array($result)){ 
      echo "<option">; 
      echo $row[$column]; 
      echo "</option>"; 

     echo '</select>'; 
    } 
</body> 

我允許(除了SQL)使用的唯一語言是PHP,HTML和JavaScript。就像現在一樣,makeList()返回一個空列表。當我在函數中包含打開和關閉窗體標籤時,它會返回一個功能齊全的列表,但隨後它會以自己的形式發揮作用,並且需要成爲原始窗體的一部分。謝謝。

編輯:對不起,忘記提及makeList函數在php標籤內調用時工作正常。當我在HTML中調用它時,它返回一個空列表。

+1

你已經在正確的軌道上,只是完成該功能你有,執行語句,獲取結果,或者用行回顯html標記或者構建字符串並返回它 – Ghost

+0

有什麼錯:'option「>;' – nicovank

回答

0

這取決於你的參數($ parameter1和$ parameter2)是否應該起作用。

<body> 
     <form> 
      // some text inputs 


      <?php echo makeList($parameter1, $parameter2); ?> 

      // submit button 
     </form> 

    <?php 
     // connect to database 

     function makeList($arg1, $arg2) { 
      echo '<select>'; 

      while ($row = mysqli_fetch_array($result)){ 
       echo "<option>"; 
       echo $row[$column]; 
       echo "</option>"; 

      echo '</select>'; 
     } 
    </body> 
+0

不幸的是,下拉菜單仍然顯示爲空當以這種方式呼叫時 – roncook

+0

道歉你回聲「;這會導致php中的語法錯誤。我現在已經改變了它,請現在嘗試我的代碼。 –

+0

實際上它不會起作用 - 除非在運行之前在某處定義了值$列 - 代碼正在尋找$ colum的值作爲$ row數組中的鍵值,如果這樣的話我們很好,如果沒有,那麼我們還有更多的工作要做。 –

0

首先,你的腳本有一些語法問題。它不是一個有效的HTML文件,不是有效的PHP文件,也不是有效的JS文件。

如果取決於我,我會在腳本停止處定義PHP函數。 小心平衡你的開啓和關閉PHP標籤。事情是這樣的:

<?php 
// connect to database 

function makeList($arg1, $arg2) { 
    echo '<select>'; 

    while ($row = mysqli_fetch_array($result)){ 
     echo "<option">; 
     echo $row[$column]; 
     echo "</option>"; 

    echo '</select>'; 
} 
?> 

後,纔將我開始輸出我的HTML。

現在有幾個需要注意的是腳本重要的事情我剛剛發佈:

  • 數據庫的代碼是不是在這裏...我沒有看到任何連接或查詢得到運行或任何東西
  • 在你的腳本中,這個函數看起來不正確。 arg1和arg2需要每個$前面都有一個有效的PHP函數。如果它是一個你想要的JS函數,那麼你很困惑,可能需要回頭去弄清楚爲什麼這不是一個有效的JS函數。
  • 你的函數引用一個變量,你沒有打算定義的變量$ result。它在腳本的其他地方沒有提及。在你的函數內部任何地方都沒有提到它。要在函數中定義$ result,您需要將其作爲數組傳遞或者將其聲明爲全局數據: global $ result
  • 您的函數根本不返回任何內容。它只是回聲的東西。這並不意味着你不能使用它,但它確實意味着函數沒有返回值。呼應makeList的結果將在所有

不能輸出任何東西所以經過上面的腳本,你可能有這樣的事情:

<body> 
    <form> 
     // some text inputs 


     <?php makeList($parameter1, $parameter2); ?> 

     // submit button 
    </form> 
+0

嗨,$結果是在函數內定義的。這個函數在php部分調用時工作正常,當我在html中調用它時,它會返回一個空列表。將php移動到文件頂部也會導致頁面無法加載。 – roncook

+0

如果在你的函數中定義了$ result,那麼你沒有發佈所有的代碼。在您發佈的代碼中,您的函數中沒有賦值給$ result的值。 arg1和arg2缺少美元符號($)也表明您沒有發佈所有代碼。或者,如果你有,你的代碼是絕望的破碎。 –