2016-05-05 26 views
1

に渡すSQLデータベースからフィールドを取り込んだ選択フォームを使用しようとしています。データベースにストアのテーブルがあり、このメソッドを使用して、これらの個別のフィールドを選択ツールに追加しました。SQLデータベースから選択値をPHP

echo '<select name="StoreName" />'."\n"; 
while ($row = mysqli_fetch_assoc($distinctResult)){ 

echo '<option value="'.$row["StoreID"].'">'; 
echo $row["StoreName"]; 
echo '</option>'."\n"; 

}; 

echo '</select>'."\n"; 

正しい店舗名が選択ツールに表示が、私は、フォームデータを送信すると、フォームの値が正しく渡されません。ここでは、最初のページで:

<?php 


require_once 'login.php'; 

$connection = mysqli_connect(
    $db_hostname, $db_username, 
    $db_password, $db_database); 
if(mysqli_connect_error()){ 
die("Database Connection Failed: " . 
    mysqli_connect_error() . 
    " (" . mysqli_connect_errno() . ")" 
    ); 
}; 

$query = "SELECT * from PURCHASE"; 
//echo $query; 
$result = mysqli_query($connection,$query); 
if(!$result) { 
die("Database Query Failed!"); 
}; 

$distinct = "SELECT DISTINCT StoreName FROM PURCHASE"; 


$distinctResult = mysqli_query($connection,$distinct); 
if(!$result) { 
die("Database Query Failed!"); 
}; 

echo '<title>Output 1</title>'; 
echo '</head>'; 
echo '<body>'; 
echo '<h1>Required Output 1</h1>'; 
echo '<h2>Transaction Search</h2>'; 
echo '<form action="output1out.php" method="get">'; 
echo 'Search Store:<br/>'; 
echo '<br/>'; 


echo '<select name="StoreName" />'."\n"; 
while ($row = mysqli_fetch_assoc($distinctResult)){ 

echo '<option value="'.$row["StoreID"].'">'; 
echo $row["StoreName"]; 
echo '</option>'."\n"; 

}; 

echo '</select>'."\n"; 

echo '<input name="Add Merchant" type="submit" value="Search">'; 
echo '</form>'; 

mysqli_free_result($result); 

mysqli_close($connection); 


?> 

そして、これは、出力ページです:

<?php 

$transaction = $_REQUEST["StoreName"]; 

    require_once 'login.php'; 

    $connection = mysqli_connect(
      $db_hostname, $db_username, 
      $db_password, $db_database); 



     $sql = "SELECT * FROM PURCHASE WHERE StoreName LIKE '%".$transaction."%'"; 
     $result = $connection->query($sql); 

    ?> 

    Purchases Made From <?php echo $transaction ?> 
<table border="2" style="width:100%"> 
    <tr> 
        <th width="15%">Item Name</th> 
        <th width="15%">Item Price</th> 
        <th width="15%">Purchase Time</th> 
        <th width="15%">Purchase Date</th> 
        <th width="15%">Category</th> 
        <th width="15%">Rating</th> 
       </tr> 
</table> 
    <?php 
     if($result->num_rows > 0){ 
      // output data of each row 
      while($rows = $result->fetch_assoc()){ ?> 
       <table border="2" style="width:100%"> 
       <tr> 
        <td width="15%"><?php echo $rows['ItemName']; ?></td> 
        <td width="15%"><?php echo $rows['ItemPrice']; ?></td> 
        <td width="15%"><?php echo $rows['PurchaseTime']; ?></td> 
        <td width="15%"><?php echo $rows['PurchaseDate']; ?></td> 
        <td width="15%"><?php echo $rows['Category']; ?></td> 
        <td width="15%"><?php echo $rows['Rating']; ?></td> 
       </tr> 
       <?php 
      } 
     } 
     ?> 

私は出力ページにselect名前StoreNameを呼び出していますが、それはから値を渡していません落ちる。 2番目のページでその用語を使用してクエリを実行する必要があるため、関連するデータを取得することができます。誰かが私が間違っていることを見ることができるならば、助言してください。ありがとうございました。あなたがSELECT DISTINCT StoreName FROM PURCHASEをやっている

まだその$row["StoreID"]はあなたの選択セットではありません。

+1

[Little Bobby](http://bobby-tables.com/)は[あなたのスクリプトはSQLインジェクション攻撃の危険性があると言います。](http://stackoverflow.com/questions/60174/how-can -i-prevent-sql-injection-in-php)[MySQLi]の[prepared](http://en.wikipedia.org/wiki/Prepared_statement)ステートメントについて学びます(http://php.net/manual/en /mysqli.quickstart.prepared-statements.php)。 [文字列をエスケープする](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)でも安全ではありません! –

+0

私が知る限り、あなたは 'mysqli_close($ connection);で接続が間に合わなくなっている可能性があります。 –

+0

"フォームの値が正しく渡されません "、どのような価値がありますか? –

答えて

3

コメントは答えます。

  • SELECTに追加します。
関連する問題