2013-07-27 2 views
1

J'ai un problème pour obtenir le résultat de la requête sql en dehors de la boucle while.Résultat de la requête mysql ouput en dehors de while {}

J'ai une requête comme ceci:

$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()); ; 

cela donne de nouveau quelques noms (oxtitle). Par exemple 5:

voiture, Smartphone, président , Table, Boisson

à l'étape suivante, je mets ce résultat de la requête dans un tableau et les sorties dans la boucle 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']; 
} 

La raison pour laquelle je place les résultats dans un tableau est que je peux les sortir en dehors de la boucle while. Cela fonctionne jusqu'à présent, MAIS quand je produis le résultat en dehors de la boucle while, j'ai seulement un nom (oxtitle) dans le tableau. Et c'est mon problème que je ne peux pas résoudre.

J'ai besoin des résultats en dehors de la boucle while parce que j'ai plus tard dans la page une table html, qui doit être remplie par l'instruction IF.

exmaple:

<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> 

Ceci est juste un exmaple. Mais cela ne fonctionne pas, parce que dans le tableau sont juste un nom (oxtitle) par exemple "voiture". Donc, l'if-statement ne peut pas fonctionner. Cela fonctionne juste pour: si array == voiture. Une solution peut être de mettre tout mon code html de table avec les boucles if dans la boucle while. Mais cela signifie que je dois toujours travailler à l'intérieur de la boucle wile avec écho '' et ainsi de suite. Et ce n'est pas si bien. J'espère qu'il y a une autre soultion que je peux faire travailler "mon" chemin. Signifie que le tableau contient tous les noms (oxtitles) même en dehors de la boucle while, de sorte que je peux travailler avec if-statements.

Désolé pour mon mauvais anglais. Greetz.

Répondre

1

pourquoi ne pas utiliser cette

$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']; 

au lieu de while. et alors vous pouvez utiliser ces variables.

EDIT:

<?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>"; 
?> 

EDIT2; je ne suis pas sûr que je vous compris, mais ce soluion,

modifier votre commande par ceci:

ORDER BY case when oxtitle = 'Schwarz' then 1 
       when oxtitle = 'Cyan' then 2 
       when oxtitle = 'Magenta' then 3 
       when oxtitle = 'Gelb' then 4 end 

et essayez ce code:

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 

EDIT4: en raison de vos besoins utilisent ce

 case when oxtitle like '%Schwarz%' and (oxsort = 13 or oxsort = 3) then 1 
    ..... 
+0

Ce "echo" me donne un seul nom (voiture) de retour. Donc, mon si-statemant ne peut pas travailler sur cela. Cela fonctionne simplement sur: 'if ($ Daten_artikel ['nom'] == Car) { echo $ Daten_artikel ['nom']; } ' – Kuba

+0

essayez d'utiliser cette requête éditée. –

+0

Cela me redonne juste un nom. – Kuba

Questions connexes