2013-06-14 2 views
0

У меня есть этот код, который должен отображать $ fstate, а затем под ним отображать все $ fcity. Он отображает $ fcity 3 раза, затем создает новый столбец. Моя проблема заключается в том, что я могу отображать штаты и города, но я не могу показать городам в соответствующем состоянии. Сейчас он отображает все состояния, а затем отображает города под ним. Вот код:Организовать государства и города и отобразить определенный способ. PHP

<?php 
$fquery = "SELECT state, city, count(city) as num FROM needs WHERE country='$usercountry' AND status='posted' GROUP BY state, city ORDER BY state, city"; 
if ($result = mysql_query($fquery)) { 
    $num_rows = mysql_num_rows($result); 

    echo "<table>"; 
    $i = 1; 
    $cols = 3; 
$prev = ""; 

    while ($frows = mysql_fetch_array($result)) { 
     $fcity = $frows['city']; 
     $fstate = $frows['state']; 
     $fcitycount = $frows['num']; // num is holding your count by city 

if ($fstate != $prev) { 
echo "<tr>$fstate</tr><tr>"; 
$prev="$fstate"; 
} 

     echo "<td><a href='node/browseresults.php?city=$fcity&state=$fstate'>$fcity, $fstate ($fcitycount)</a> </td>"; 
echo ($i < $num_rows) ? ((($i % $cols) == 0) ? '</tr>' : '') : ''; 
     $i++; 
    } 
    echo "</table>"; 
} 

?> 

Это то, что я получаю сейчас (пример):

ARMOSCTNTX 

Brookland, AR (1) Fayetteville , AR (2) Harrisburg, AR (2) 
Hot Springs, AR (1) Jonesboro, AR (1) Searcy, AR (2) 
St Louis, MO (3) 
murrells inlet, SC (1) Myrtle Beach, SC (1) 
Memphis, TN (1) 
Arlington, TX (1) 

Но мне это нужно, чтобы выглядеть следующим образом:

AR 
Brookland, AR (1) Fayetteville , AR (2) Harrisburg, AR (2) 
Hot Springs, AR (1) Jonesboro, AR (1) Searcy, AR (2) 

MO 
St Louis, MO (3) 

SC 
murrells inlet, SC (1) Myrtle Beach, SC (1) 

TN 
Memphis, TN (1) 

TX 
Arlington, TX (1) 

ответ

0
if ($fstate != $prev) { 
echo "<tr>$fstate</tr><tr>"; 

You «создавая плохо отформатированную таблицу. Если содержимое вашей таблицы не находится внутри <td> или <th> теги, когда они отображаются, они отображаются не в том месте. Попробуйте следующее:

if ($fstate != $prev) { 
echo "<tr><th>$fstate</th></tr><tr>"; 
+0

Это сработало, но теперь состояния являются своего рода вкладками над/отступом ... есть ли способ заставить их выровнять влево? – user2362601

+0

nvm я понял. спасибо – user2362601

+0

@ user2362601 - тег '' помещает их жирным шрифтом и центрирует их; попробуйте вместо этого использовать ''. – andrewsi

Смежные вопросы