2016-11-12 9 views
1

htmlでドロップダウンリストを作成し、データベースに入力する手助けをする多くの人がいます。私はこれをしようとしていると私はそれを行ういくつかのPHPコードが見つかりましたが、それは動作しません。私はPHP、SQL、HTMLを理解していますが、どうやって一緒に結合するのか分かりません。問題と思われるのは、最初のエコーの後、残りのコードはただページにコードとして出力され、何もしないということです。これはコードです:ドロップダウンリストを作成してもPHPは機能しません

<html> 
    <body> 
     <?php 
     mysql_connect('localhost', 'root', 'password'); 
     mysql_select_db('FoodMatching'); 

     $sql = "SELECT IngID, IngName FROM Ingredient Characteristics"; 
     $result = mysql_query($sql); 

     echo "<select name='Ingredient Name'>"; 
     while ($row = mysql_fetch_array($result)) { 
      echo "<option value='" . $row['IngName'] ."'>" . $row['IngName'] ."</option>"; 
} 
echo "</select>"; 
?> 
    </body> 
</html> 

そして、私は、Webページ上に表示される:

"; while ($row = mysql_fetch_array($result)) { echo " 
" . $row['IngName'] ." 
"; } echo ""; ?> 

ので、私は問題が何であるかを知らないポップアップ表示エラー/警告はありません。助けていただきありがとうございます。

+1

廃止予定のmysql_ *関数を使用しないでください。 PHP 5.5以降では廃止され、PHP 7では完全に削除されています。これらは安全性も欠けています。代わりにMySQLiまたはPDOを使用してください。 –

+0

テーブルに特に問題があると確信しています:成分の特性...あなたのmysql上で実行してみてください... – barudo

+0

テーブル名、フォームアイテム名などにスペースを入れないでください。 –

答えて

0

前述のように、DBと話すには、PDO'sを使用してください。

htmlが出力される前に、あなたがリストを取得する場合、あなたは、コード

以下は理にかなっている場合、あなたはそのテストされていないなど、いくつかの変更を加える必要があるかもしれません参照を理解することは非常にクリーンかつ容易にすることができます。

mySqlに関するコメントがいくつかありますが、クエリの実行時に結果が返されていることを確認してください。

<?php 

define("DB_DSN", "mysql:host=localhost;dbname=foo"); 
define("DB_USERNAME", "root"); 
define("DB_PASSWORD", "password"); 

// define the empty array to be filled from db 
$aIngredeintCats = array(); 


// any other php tasks that dont needthe ingcats 


// store sql 
$sSQL = "SELECT IngID, IngName FROM IngredientCharacterisitics"; 

// create an instance of the connection 
$conn = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD); 

// prepare 
$st = $conn->prepare($sSQL); 

// if required securely bind any user input in the query 
// $st->bindValue(":IngID", $sIngName, PDO::PARAM_STR); 

// execute the connection 
$st->execute(); 

/* this will show if a result has been returned from the db. 
echo "<pre>"; 
var_dump($st->fetch()); 
echo "</pre>"; 
*/ 

// while myslq has rows loop over them and store 
while($row = $st->fetch()){ 

    // use the IngID from db as the array key 
    // also strip any tags from the output. other sanatisation should be done 
    $aIngredeintCats[$row['IngID']] = strip_tags($row['IngName']); 
} 


// any other php tasks if they need the list of cats 

?> 


<html> 
    <body> 
     <form method='post' action='/'> 
     <?php 
      // if there are results stored create the select and loop over 
      if(!empty($aIngredeintCats)){ 
       echo "<select name='IngredientName'>"; 
       echo "<option value='' default>default</option>" 
       foreach ($aIngredeintCats as $iIngID => $sIngName) { 
        echo "<option value='".$sIngName."' >".$sIngName."</option>"; 
       } 
       echo "</select>"; 
      }else{ 
       echo "<p>No results avaliable!</p>"; 
      } 
     ?> 

     </form> 
    </body> 
</html> 
+0

それはうまくいくはずですが、同じ種類のことが起こっているように見えます。 //準備行のすぐ下にある "$ st = $ conn->"の後ろ。残りのコードは、テキストとしてページに印刷されます。私はそれが違いを生むならば、これをc9.ioに書いています。要素を調べ、$ conn->コードの残りの部分がタグの間に現れるだけです。 – pmpman

+0

テキストエディタでファイルを作成し、サーバーにftp/fsshを作成してみます。イデアかもしれない? – atoms

+0

待ちます。私は本当にばかだと思う。それは.htmlの代わりに.phpファイルでなければならない – pmpman

関連する問題