我正在运行两个while循环来在html中显示一个表。
我的目标是每行显示此下拉列表。我的问题是填充数据的下拉列表只显示在第一个表格中。所有其他行只显示一个空的选择字段。有人可以帮助我做错了吗?
我的代码到目前为止:
$link=pg_connect($conn_str);
if (!$link) {die('Verbindung schlug fehl.');}
$arbeitspaket = pg_query($link, "SELECT * FROM arbeitspaket WHERE id='$_SESSION[user_id]'");
$sql = "SELECT * FROM anwender ORDER BY nachname ASC";
$mitarbeiter = pg_query($link, $sql); ?>
<form action=mitarbeiterauswahl.php method=post>
<table border=1>
<tr>
<th>Arbeitspaket-ID</th>
<th>Arbeitspaketbezeichnung</th>
<th>Mitarbeiterbedarf</th>
<th>Mitarbeiterzuordnung</th>
</tr>
<?php while($results=pg_fetch_array($arbeitspaket)){?>
<tr>
<td><?php echo $results['apid']; ?></td>
<td><?php echo $results['arbeitspaketbezeichnung']; ?></td>
<td><?php echo $results['mitarbeiterbedarf']; ?></td>
<td>
<select name="mitarbeiter">
<?php while($row = pg_fetch_array($mitarbeiter)){
echo '<option value="'. $row['id'] .'">('. $row['id'] .') '. $row['vorname'] .' '. $row['nachname'] .'</option>'."\n"; }?>
</select>
</td>
</tr>
<?php } ?>
</table>
</form>
答案 0 :(得分:4)
你为什么不试试foreach?在这种情况下看起来好多了。这样的事情:
<table border=1>
<tr>
<th>Arbeitspaket-ID</th>
<th>Arbeitspaketbezeichnung</th>
<th>Mitarbeiterbedarf</th>
<th>Mitarbeiterzuordnung</th>
</tr>
<?php $results= pg_fetch_array($arbeitspaket);
$arbeiters = pg_fetch_array($mitarbeiter);
foreach($results as $result){?>
<tr>
<td><?php echo $result['apid']; ?></td>
<td><?php echo $result['arbeitspaketbezeichnung']; ?></td>
<td><?php echo $result['mitarbeiterbedarf']; ?></td>
<td>
<select name="mitarbeiter">
<?php foreach($arbeiters as $arbeiter) {
echo '<option value="'. $arbeiter) ['id'] .'">('. $arbeiter) ['id'] .') '. $arbeiter) ['vorname'] .' '. $arbeiter) ['nachname'] .'</option>'."\n"; }?>
</select>
</td>
</tr>
<?php } ?>
</table>
答案 1 :(得分:1)
代码中的问题是你消耗了第一个循环中的所有数据,之后就消失了。将数据存储在数组中并遍历数组。
<form action=mitarbeiterauswahl.php method=post>
<table border=1>
<tr>
<th>Arbeitspaket-ID</th>
<th>Arbeitspaketbezeichnung</th>
<th>Mitarbeiterbedarf</th>
<th>Mitarbeiterzuordnung</th>
</tr>
<?php
$mitarbeiter_array = array();
while($row = pg_fetch_array($mitarbeiter)) {
$mitarbeiter_array[] = $row;
}
unset($row);
?>
<?php while($results=pg_fetch_array($arbeitspaket)){?>
<tr>
<td><?php echo $results['apid']; ?></td>
<td><?php echo $results['arbeitspaketbezeichnung']; ?></td>
<td><?php echo $results['mitarbeiterbedarf']; ?></td>
<td>
<select name="mitarbeiter">
<?php foreach($mitarbeiter_array as $row){
echo '<option value="'. $row['id'] .'">('. $row['id'] .') '. $row['vorname'] .' '. $row['nachname'] .'</option>'."\n"; }?>
</select>
</td>
</tr>
<?php } ?>
</table>
</form>
答案 2 :(得分:0)
我认为这将是更好的方式,并且会很快
std::string