![](/img/trans.png)
[英]Laravel display data from one database table by using the id of that row
[英]Display <select> in each table row by using the same database table data
我將構建一個表,讓用戶輸入他們的SPM結果,然后我的系統將過濾並顯示給他們哪些課程適用。
我試圖在一個表中制作10行,每行包含2個<select>
,其中一個是SPM主題,另一個是他們所獲得的等級。 從我的數據庫中獲取“主題”和“成績”選項。
這是我的表代碼:
<?php
$result = mysql_query("SELECT * FROM spm_subject");
$result2 = mysql_query("SELECT * FROM spm_grade");
?>
<table class="p1" bgcolor="#FFFFCC" bordercolor="#000000" align="center" width="771" border="2">
<tr>
<td><div align="center"><strong>No.</strong></div></td>
<td><div align="center"><strong>Subject Name</strong></div></td>
<td><div align="center"><strong>Grade</strong></div></td>
</tr>
<form action="checkresult2.php">
<?php
for($i=1; $i<=10; $i++)
{?>
<tr>
<td width="44"><div align="center"><?php echo $i; ?></div></td>
<td width="601">
<select>
<option value="">--- Please choose a subject ---</option>
<?php
while($s = mysql_fetch_assoc($result))
{?>
<option name="subj"><?php echo $s["name"]; ?></option>
<?php } ?>
</select>
</td>
<td width="104"><div align="center">
<select>
<option value=""> </option>
<?php
while($g = mysql_fetch_assoc($result2))
{?>
<option name="grad"><?php echo $g["grade"]; ?></option>
<?php } ?>
</select>
</div>
</td>
</tr>
<?php } ?>
<tr>
<td colspan="3">
<div align="center">
<input type="submit" value="Submit">
</div>
</td>
</tr>
</form>
</table>
該表已構建,但只有FIRST ROW能夠顯示兩個<select>
內兩個數據庫表中的數據。
有解決此問題的解決方案嗎?
1)刪除<table>
內的<table>
<form>
<table>
。 因為,不允許將表單作為表,tbody或tr的子元素。 您可以在表單中包含整個表格。 您可以在表格單元格中有一個表單。 您不能在表單中包含表的一部分。 有關更多信息,請單擊此
2) <option>
沒有name
屬性。 在這里檢查
3)給<select></select>
name
。 在這里檢查
4)由於要向checkresult2.php頁面提交多個值,因此必須將name定義為name="subj[]"
和name="grad[]"
作為array
類型。
5)另一種顯示其余9行數據的方法是:在while loop
之前while loop
將query
本身放在那里,如下所示。
更新的代碼。
<form action="checkresult2.php">
<table class="p1" bgcolor="#FFFFCC" bordercolor="#000000" align="center" width="771" border="2">
<tr>
<td><div align="center"><strong>No.</strong></div></td>
<td><div align="center"><strong>Subject Name</strong></div></td>
<td><div align="center"><strong>Grade</strong></div></td>
</tr>
<?php
for($i=1; $i<=10; $i++)
{?>
<tr>
<td width="44"><div align="center"><?php echo $i; ?></div></td>
<td width="601">
<select name="subj[]">
<option value="">--- Please choose a subject ---</option>
<?php
$result = mysql_query("SELECT * FROM spm_subject");
while($s = mysql_fetch_assoc($result))
{?>
<option value="<?php echo $s['name']; ?>"><?php echo $s["name"]; ?></option>
<?php } ?>
</select>
</td>
<td width="104"><div align="center">
<select name="grad[]">
<option value=""> </option>
<?php
$result2 = mysql_query("SELECT * FROM spm_grade");
while($g = mysql_fetch_assoc($result2))
{?>
<option value="<?php echo $g['grade']; ?>"><?php echo $g["grade"]; ?></option>
<?php } ?>
</select>
</div>
</td>
</tr>
<?php }?>
<tr>
<td colspan="3">
<div align="center">
<input type="submit" value="Submit">
</div>
</td>
</tr>
</table>
</form>
[ 注意 : mysql_在PHP 5.5.0
已棄用,在PHP 7.0.0
中已將其刪除。 使用MySQLi或應該使用PDO_MySQL擴展名。]
您必須預處理填充兩個數組的查詢:
$names = $grades = array();
for( $i=1; $i<=10; $i++ )
{
$names[] = mysql_fetch_assoc( $result );
$grades[] = mysql_fetch_assoc( $result2 );
}
然后,在我們的代碼中:
<?php foreach( $names as $key => $name ) {?>
<option name="subj"><?php echo $name['name']; ?></option>
<?php } ?>
和
<?php foreach( $grades as $key => $grade ) {?>
<option name="grad"><?php echo $grade['grade']; ?></option>
<?php } ?>
mysql_fetch_assoc
從結果中獲取當前行,然后“轉到”下一行,因此,當第一個for
循環終止時,游標已到達結果的結尾,並且-在next for
循環中,沒有任何內容可獲取。
mysql_
語法在PHP 5.5.0中已棄用,在PHP 7.0.0中已刪除 。 相反,應使用MySQLi或PDO_MySQL擴展。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.