2016-09-08 5 views
0

これを$ _POSTに変更しました。これがショートカット方法であるかどうかはわかりません。少なくともそれは今働いている。あなたが私を助けたい場合は、コードを縮小するのに役立ちます。ありがとうドロップダウンメニューから同じIDの行全体を取得

<?php 

$conn = new mysqli('localhost', 'root', 'jared17', 'hbadb') 
or die ('Cannot connect to db'); 

$result = $conn->query("select * from english"); 

echo "<html>"; 
echo "<body>"; 
echo "<form method = POST>"; 
echo "<select name = 'Students'>"; 

while ($row = $result->fetch_assoc()) { 

      $LRN = $row['LRN']; 
      $Last = $row['Last_Name']; 
      $First = $row['First_Name']; 
      $Lvl = $row['Level']; 
      $Q1 = $row['Q1']; 
      $Q2 = $row['Q2']; 
      $Q3 = $row['Q3']; 
      $Q4 = $row['Q4']; 
      $Final = $row['FINAL']; 
      echo '<option value="'.$LRN.'|'.$Last.', '.$First.'|'.$Lvl.'|'.$Q1.'|'.$Q2.'|'.$Q3.'|'.$Q4.'|'.  $Final.'">'.$Last.', '.$First.'</option>'; 

} 

echo "</select>"; 
echo "<input type='submit' name='submit' value='Show'>"; 
echo "</form>"; 

$show = $_POST['Students']; 
     $show_explode = explode('|', $show); 

    echo "<table><tr><th>LRN</th><th>Name</th><th>Level</th><th>Q1</th><th>Q2</th><th>Q3</th><th>Q4</th><th>Final</th></tr>"; 
    echo "<tr><td>". $show_explode[0]."</td><td>". $show_explode[1]."</td><td>". $show_explode[2]."</td><td>". $show_explode[3]."</td><td>". $show_explode[4]."</td><td>". $show_explode[5]."</td><td>". $show_explode[6]."</td><td>". $show_explode[7]."</td></tr>"; 

echo "</table>"; 




echo "</body>"; 
echo "</html>"; 
?> 
+1

変数を割り当てる前に設定を解除する必要はありません。 – Barmar

+0

*ドロップダウンメニュー*の要件と同じIDの行全体を取得したいですか? – devpro

+0

すべての情報を '

答えて

0

このようなオプションの値にすべての詳細を入れないでください。 IDに値を入力するだけです。

echo "<select name = 'Students'>"; 
while ($row = $result->fetch_assoc()) { 
    $LRN = $row['LRN']; 
    $Last = $row['Last_Name']; 
    $First = $row['First_Name']; 
    echo '<option value="'.$LRN.'">'.$Last.', '.$First.'</option>'; 
} 
echo "</select>"; 

フォームが送信されると、データベースでそれを調べます。

if (isset($_POST['Students'])) { 
    $lrn = $_POST['Students']; 
    $stmt = $conn->prepare("SELECT Last_Name, First_Name, Level, Q1, Q2, Q3, Q4, FINAL FROM english WHERE LRN = ?"); 
    $stmt->bind_param('i', $lrn); 
    $stmt->execute(); 
    $stmt->bind_result($last, $first, $level, $q1, $q2, $q3, $q4, $final); 
    $stmt->fetch(); 
    echo "<table><tr><th>LRN</th><th>Name</th><th>Level</th><th>Q1</th><th>Q2</th><th>Q3</th><th>Q4</th><th>Final</th></tr>"; 
    echo "<tr><td>$lrn</td><td>$last, $first</td><td>$level</td><td>$q1</td><td>$q2</td><td>$q3</td><td>$q4</td><td>$final</td></tr></table"; 
} 
+0

はコードを編集しました。 – jaredpianist

+0

よくありがとうございます!それは私のコードをきれいにする。ありがとう!さて、最後に、私が提出したときにドロップダウンメニューを残す方法を教えてください。送信ボタンの後にオプション1に戻ります。再度、感謝します! – jaredpianist

+0

'$ LRN == $ _POST ['Students']'をテストし、オプションに 'selected'属性を追加してください。 – Barmar

0

あなたはArrayで最小のコードのための時に契約を$のforeachのを使用することができます。ここにコードが入ります

if(isset($_POST['submit'])){ 
// after post a form ur code goes here 
$show = $_POST['Students']; $show_explode = explode('|', $show); 
echo "<table><tr> 
<th>LRN</th> 
<th>Name</th> 
<th>Level</th> 
<th>Q1</th> 
<th>Q2</th> 
<th>Q3</th> 
<th>Q4</th> 
<th>Final</th> 
</tr>"; 
echo "<tr>"; 
foreach($show_explode as $value){ 
echo "<td>".$value."</td>"; 
} 
echo "</tr></table> 
} 
関連する問題