我无法让我的 sql 查询结果在 while 循环之外完全工作。
我有这样的查询:
$result_artikel = mysql_query("SELECT DISTINCT oxtitle, FROM oxarticles a
INNER JOIN oxobject2category b ON a.oxid = b.oxobjectid
WHERE b.oxcatnid IN (SELECT oxcatnid FROM oxobject2category WHERE oxobjectid = '$term')ORDER BY oxtitle ASC")
or die(mysql_error()); ;
这会返回一些名称 (oxtitle)。例如5:
汽车, 手机, 椅子, table , 喝
在下一步中,我将这个查询结果放入一个数组中,并在 while 循环中输出它们
$Daten_artikel = array(
'name' => '',
'oxsort' => '',
'bild' => ''
);
while($row = mysql_fetch_array($result_artikel))
{
$Daten_artikel['name'] = $row['oxtitle'];
$Daten_artikel['oxsort'] = $row['oxsort'];
$Daten_artikel['bild'] = $row['oxpic1'];
echo '<br>' . "Name: ".$Daten_artikel['name'];
}
之所以将结果放在数组中,是因为可以在while循环外输出。到目前为止,这是有效的,但是当我在 while 循环之外输出结果时,我在数组中只有一个名称 (oxtitle)。这是我无法解决的问题。
我需要 while 循环之外的结果,因为我稍后在页面中有一个 html 表,必须由 IF 语句填充。
例子:
<table>
<tr>
<td>
<?php
if ($Daten_artikel['name'] == smartphone )
{
echo $Daten_artikel['name'];
}
?>
</td>
</tr>
<tr>
<td>
<?php
if ($Daten_artikel['name'] == chair)
{
echo $Daten_artikel['name'];
}
?>
</td>
<tr>
</table>
这只是一个例子。但这行不通,因为数组中只有一个名称 (oxtitle),例如“汽车”。所以 if 语句不能工作。它仅适用于:if array == car。
一个解决方案可以是将我所有带有 if 循环的表格 html 代码放在 while 循环中。但这意味着我必须始终在带有 echo '' 等的 wile 循环内工作。这不是很好。我希望有另一个灵魂,我可以用“我的”方式工作。意味着该数组甚至包含 while 循环之外的所有名称 (oxtitles),因此我可以使用 if 语句。
抱歉我的英语不好。 你好。
最佳答案
为什么不用这个
$row = mysql_fetch_array($result_artikel) ;
$Daten_artikel['name'] = $row['oxtitle'];
$Daten_artikel['oxsort'] = $row['oxsort'];
$Daten_artikel['bild'] = $row['oxpic1'];
// echo '<br>' . "Name: ".$Daten_artikel['name'];
而不是 while 循环。然后您就可以使用这些变量了。
编辑:
<?php
echo "<table>";
while($row = mysql_fetch_array($result_artikel))
{
$Daten_artikel['name'] = $row['oxtitle'];
$Daten_artikel['oxsort'] = $row['oxsort'];
$Daten_artikel['bild'] = $row['oxpic1'];
//echo '<br>' . "Name: ".$Daten_artikel['name'];
?>
<tr>
<td>
<?php
if ($Daten_artikel['name'] == "smartphone" )
{
echo $Daten_artikel['name'];
}
if ($Daten_artikel['name'] == "chair")
{
echo $Daten_artikel['name'];
}
else {echo "there is nothing";}
?>
</td>
</tr>
<?php
}
echo "</table>";
?>
编辑2; 我不确定我理解你的意思,但是这个解决方案,
将您的订单更改为:
ORDER BY case when oxtitle = 'Schwarz' then 1
when oxtitle = 'Cyan' then 2
when oxtitle = 'Magenta' then 3
when oxtitle = 'Gelb' then 4 end
然后试试这段代码:
echo "<table>";
while($row = mysql_fetch_array($result_artikel))
{
$Daten_artikel['name'] = $row['oxtitle'];
$Daten_artikel['oxsort'] = $row['oxsort'];
$Daten_artikel['bild'] = $row['oxpic1'];
// echo '<br>' . "Name: ".$Daten_artikel['name'];
?>
<tr>
<td>xzy</td>
<td>
<?php
echo $Daten_artikel['name'] ;
?>
</td>
</tr>
<?php
}
echo "</table>";
?>
EDIT3.
ORDER BY case when oxtitle like '%Schwarz%' then 1
when oxtitle LIKE '%Cyan%' then 2
when oxtitle LIKE '%Magenta%' then 3
when oxtitle LIKE '%Gelb%' then 4 end
编辑 4: 由于您的需要 用这个
case when oxtitle like '%Schwarz%' and (oxsort = 13 or oxsort = 3 ) then 1
.....
关于while {} 之外的 Mysql 查询结果输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17899304/