再次需要你的帮助。
所以我有一个查询,有多个变量,我必须输出到表。
以下是查询:
SELECT DISTINCT
zi.zile,
ore.ora AS ore,
materii.materie
FROM
zi LEFT JOIN orar ON zi.id = orar.id_zi
LEFT JOIN ore ON ore.id = orar.id_ora
LEFT JOIN nume_scoli ON nume_scoli.id = orar.id_scoala
LEFT JOIN materii_pe_clase ON materii_pe_clase.id_scoala = nume_scoli.id
LEFT JOIN clase ON materii_pe_clase.id_clasa = clase.id AND orar.id_clasa = clase.id
LEFT JOIN elevi ON elevi.id_clasa = materii_pe_clase.id_clasa
LEFT JOIN materii ON materii.id = orar.id_materie
WHERE clase.`id`=1
ORDER BY zi.`zile`, ore.`id` ASC
,此查询的结果如下所示:
现在这就是我在php中所做的:
$oraru = "the query from up this page ";
$gaseste_oraru = mysql_query($oraru);
$numar_orar = mysql_num_rows($oraru);
if($numar_orar==0)
{
echo "Orarul nu este disponibil momentan.";
}
else
{
while($randorar=mysql_fetch_array($gaseste_oraru))
{
$ziorar = $randorar['zile'];
$oraorar = $randorar['ore'];
$materieorar = $randorar['materie'];
}
}
这是我想用数据库中的数据填充的表:
这里有表格的代码:
<div class="CSSTableGenerator" >
<table >
<tr>
<td>
Orar
</td>
<td>
Luni
</td>
<td >
Marti
</td>
<td>
Miercuri
</td>
<td>
Joi
</td>
<td>
Vineri
</td>
</tr>
<tr>
<td >
8:00 - 9:00
</td>
<td>
<select>
<option>Mate</option>
<option>Romana</option>
<option>Geogra</option>
</select>
</td>
<td>
<select>
<option>Mate</option>
<option>Romana</option>
<option>Geogra</option>
</select>
</td>
<td>
<select>
<option>Mate</option>
<option>Romana</option>
<option>Geogra</option>
</select>
</td>
<td>
<select>
<option>Mate</option>
<option>Romana</option>
<option>Geogra</option>
</select>
</td>
<td>
rand 1
</td>
</tr>
<tr>
<td >
9:00 - 10:00
</td>
<td>
rand 2
</td>
<td>
rand 2
</td>
<td>
rand 1
</td>
<td>
rand 1
</td>
<td>
rand 1
</td>
</tr>
<tr>
<td >
10:00 - 11:00
</td>
<td>
rand 2
</td>
<td>
rand 2
</td>
<td>
rand 1
</td>
<td>
rand 1
</td>
<td>
rand 1
</td>
</tr>
<tr>
<td >
11:00 - 12:00
</td>
<td>
rand 3
</td>
<td>
rand 3
</td>
<td>
rand 1
</td>
<td>
rand 1
</td>
<td>
rand 1
</td>
</table>
</div>
禁止下载,我没有使用它们!
你知道如何填充它,但如果间隔不存在(例如Luni 8:00-9:00),那么在表中什么都不写?
修改
以下是我的尝试:
<div class="CSSTableGenerator" >
<table >
<tr>
<td>
Orar
</td>
<?php
{
$oraru = "the query from up this page";
$gaseste_oraru = mysql_query($oraru);
while($randorar=mysql_fetch_array($gaseste_oraru))
{
$ziorar = $randorar['zile'];
$oraorar = $randorar['ore'];
$materieorar = $randorar['materie'];
echo "<td>";
echo $randorar['zile'];
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo $randorar['ore'];
echo "</td>";
echo"<td>";
echo $randorar['materie'];
echo "</td>";
echo "</tr>";
}//sfarsit while
结果如下:
有什么想法吗?
答案 0 :(得分:1)
我建议您ORDER BY ore.id, zi.zile
。
由于您逐行迭代,而不是逐列迭代,因此您可以优化while
循环。
答案 1 :(得分:1)
尝试做这样的事情
$xarr=Array();
$xcols=Array();
while($randorar=mysql_fetch_array($gaseste_oraru))
{
$xcols[$randorar['zile']]++;
$xarr[$randorar['ore']][$randorar['zile']] = $randorar['materie']
}
echo "<tr><th>orar</th>";
foreach(array_keys($xcols) as $x)
echo '<th>'.$x.'</th>';
echo "</tr>\n";
foreach($xarr as $key=>$y){
echo '<tr><th>'.$key.'</th>';
foreach(array_keys($xcols) as $x)
echo '<td>'.$y[$x].'</td>';
echo "</tr>\n";
}
答案 2 :(得分:0)
好的,这就是解决方案:
$oraru = "
SELECT DISTINCT
zi.zile,
ore.ora AS ore,
materii.materie
FROM zi
LEFT JOIN orar ON zi.id = orar.id_zi
LEFT JOIN ore ON ore.id = orar.id_ora
LEFT JOIN nume_scoli ON nume_scoli.id = orar.id_scoala
LEFT JOIN materii_pe_clase ON materii_pe_clase.id_scoala = nume_scoli.id
LEFT JOIN clase ON materii_pe_clase.id_clasa = clase.id AND orar.id_clasa = clase.id
LEFT JOIN elevi ON elevi.id_clasa = materii_pe_clase.id_clasa
LEFT JOIN materii ON materii.id = orar.id_materie
WHERE clase.`id`=1
ORDER BY ore.`id`, zi.`zile` ASC";
$gaseste_oraru = mysql_query($oraru);
$rows = array();
while($randorar=mysql_fetch_array($gaseste_oraru))
{
$ziorar = $randorar['zile'];
$oraorar = $randorar['ore'];
$materieorar = $randorar['materie'];
if(!isset($rows[$oraorar])){
$rows[$oraorar] = array();
}
$rows[$oraorar][$ziorar] = $materieorar;
}//sfarsit while
?>
<div class="CSSTableGenerator" >
<table >
<tr>
<td>Orar</td><td>Luni</td><td>Marti</td><td>Mercuri</td><td>Joi</td><td>Vineri</td>
</tr>
<?php
foreach ($rows as $key => $row) {
if(!isset($row['Luni'])) $row['Luni'] = ' ';//incase no data from database
if(!isset($row['Marti'])) $row['Marti'] = ' ';//incase no data from database
if(!isset($row['Miercuri'])) $row['Miercuri'] = ' ';//incase no data from database
if(!isset($row['Joi'])) $row['Joi'] = ' ';//incase no data from database
if(!isset($row['Vineri'])) $row['Vineri'] = ' ';//incase no data from database
echo "<tr>";
echo "<td>".$key."</td>";
foreach ($row as $day => $study) {
echo "<td>$study</td>";
}
echo "</tr>";
}
?>
</table>
</div>
我在朋友的帮助下想出来了!
无论如何,谢谢大家!