2017-08-28 29 views
0

リストボックスは、各要素の下に空白の行スペースを表示します。幅も増やしましたが、空白行が表示されます。参考のためにスクリーンショットを添付しました。私はコードファイルを添付しました。私はドロップダウンリストからレコードを選択する関数を使用しています。ドロップダウンリストは機能していますが、スクリーンショットに表示されているすべての値の下に空白のレコードが表示されます。リストボックスは、各要素の下に空白の行スペースを表示します。

第一
<?php 
$selected = ''; 

function get_options($select) { 
    $categories = array('Information Technology' => 1, 'Management' => 2); 
    $options = ''; 
    while (list($k, $v) = each($categories)) { 
     if ($select == $v) { 
      $options .= '<option value="' . $v . '" selected>' . $k . '<option>'; 
     } else { 
      $options .= '<option value="' . $v . '" >' . $k . '<option>'; 
     } 
    } 
    return $options; 
} 

require_once('dbconnect.php'); 
if (isset($_POST['categories'])) { 
    $selected = $_POST['categories']; 
    echo $selected; 
} 
if ($selected == 1) { 
    $selectedcat = 'Information Technology'; 
    $selectsql = "SELECT * FROM courses where ccategory='$selectedcat'"; 
} else 
if ($selected == 2) { 
    $selectedcat = 'Management'; 
    $selectsql = "SELECT * FROM courses where ccategory='$selectedcat'"; 
} else { 
    $selectsql = "SELECT * FROM courses"; 
} 

//require_once('dbconnect.php'); 
include('header-basic-light.php'); 

//$selectsql="SELECT * FROM courses"; 
$res = (mysqli_query($con, $selectsql)); 

if (!mysqli_query($con, $selectsql)) { 
    die(mysqli_error($con)); 
} 
mysqli_close($con); 
//header('Location:index.php'); 
?> 
<HTML> 
    <head> 
     <title>"View Information"</title> 
     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
     <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
    </head> 
    <body> 
     <div class="container"> 
      <div class="row"> 
       <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
        <label for="categories">Select the Category : </label> 
        <select name="categories" style="width:250px;" onchange="this.form.submit();"> 

        <?php echo get_options($selected); ?> 
        </select> 
       </form> 

       <h2>View Information</h2> 
       <table class="table"> 
        <tr> 
         <th>#</th> 
         <th>cname</th> 
         <th>start_date</th> 
         <th>duration</th> 
         <th>Remarks</th> 
         <th>Options</th> 
        </tr> 
        <?php 
        while ($r = mysqli_fetch_assoc($res)) { 
         ?> 
         <tr> 
          <td><?php echo $r['cno']; ?></td> 
          <td><?php echo $r['cname']; ?></td> 
          <td><?php echo $r['start_date']; ?></td> 
          <td><?php echo $r['duration']; ?></td> 
          <td><?php echo $r['remarks']; ?></td> 
          <?php 
          if ($r['ccategory'] == 'Information Technology') { 
           $catnum = 1; 
          } 
          if ($r['ccategory'] == 'Management') { 
           $catnum = 2; 
          } 
          ?> 
          <td><a href="loadpage.php?id=<?php echo $catnum; ?>">Details&nbsp&nbsp</a> 
         </tr> 
         <?php 
        } 
        ?> 
       </table> 
       </body> 
       </html> 

Listbox screenshot

+0

var_dump($ options)を入れてください。あなたの関数の$ options行を返す前に、ここに出力を貼り付けますか? – flauntster

+0

さらに、このスクリプトは現在の状態でSQLインジェクションに脆弱であるため、入力バルスをサニタイズすることを確認してください:) – flauntster

+0

_Suggestion:_オプションを反復するより簡単な方法は次のようになります: 'foreach($ categories as $ k => $ v) 'の代わりにあなたの複雑な' while'-loop(これは基本的にforeachをエミュレートする効率の悪い方法です)。 –

答えて

2

あなたが前方逃したが</option>

$options.='<option value="'.$v.'" selected>'.$k.'</option>'; 

第二オプションで終了タグをスラッシュ: SQLインジェクションを防ぐために準備されたステートメントを使用してみてください。

+0

どのような間違いを!それを見つけるために私はしばらくかかった:P –

+0

はい。 – yesganesh

関連する問題