2013-02-12 2 views
0

У меня есть лист Excel, который преобразуется в csv, а затем импортирует код в mysql. В Excel у меня есть в первых рядах А и Вwhile (double?) Foreach или join?

Я получаю вывод, он работает, но я не могу правильно отображать данные.

Как я пытаюсь показать это A B затем перерыв и снова A B и так далее. Он упорядочен contact_id, но я получаю только AAAAAA и 1 B, если я попытаюсь удвоить время.

Это код, с которым я пытался достичь этого. Пробовал дважды, а я googled, и я заметил, что double пока не работает, Не удалось заставить его работать с mysql JOIN и никогда не работал с функцией foreach.

$data = dbquery("SELECT contact_id, contact_first, contact_last, contact_email FROM contact_info WHERE contact_first='A)' ORDER BY contact_id ASC"); 
$data2 = dbquery("SELECT contact_id, contact_first, contact_last, contact_email FROM contact_info WHERE contact_first='B)' ORDER BY contact_id ASC"); 


    while ($userdata = dbarray($data)) { 


    echo "<li><ul class='ulcla'>"; 
    echo "<h1>".$userdata['contact_first']."</h1>"; 
    echo "<li>".$userdata['contact_last']."</li>"; 
    echo "</ul><br>"; 
    while ($userdata = dbarray($data2)) { 
    echo "".$userdata['contact_id']." - ".$userdata2['contact_first']." - ".$userdata2['contact_last']." - ".$userdata2['contact_email'].""; 
    echo "<br>"; 
    } 
    echo "</ol></div>"; 

     } 

Как я мог бы закодировать данные?

+0

вы можете разделить запись CSV для ясности? – SparKot

+0

Вложенные 'while' и вложенные' foreach' не сильно отличаются. – SparKot

+0

довольно сложно решить, что вы пытаетесь сделать из вопроса, но ваши два запроса используют точно такую ​​же строку SQL, что выглядит очень неправильно. Даже если вы хотите зацикливать одни и те же данные внутри себя, есть способы достичь этого, не запрашивая одни и те же данные дважды. – Spudley

ответ

0

Изменение while ($userdata = dbarray($data2)) { в while ($userdata2 = dbarray($data2)) { для innner в то время как петля

$data = dbquery("SELECT contact_id, contact_first, contact_last, contact_email FROM contact_info WHERE contact_first='B)' ORDER BY contact_id ASC"); 
$data2 = dbquery("SELECT contact_id, contact_first, contact_last, contact_email FROM contact_info WHERE contact_first='B)' ORDER BY contact_id ASC"); 


    while ($userdata = dbarray($data)) { 


    echo "<li><ul class='ulcla'>"; 
    echo "<h1>".$userdata['contact_first']."</h1>"; 
    echo "<li>".$userdata['contact_last']."</li>"; 
    echo "</ul><br>"; 
    while ($userdata2 = dbarray($data2)) { 
    echo "".$userdata2['contact_id']." - ".$userdata2['contact_first']." - ".$userdata2['contact_last']." - ".$userdata2['contact_email'].""; 
    echo "<br>"; 
    } 
    echo "</ol></div>"; 

     } 
0

Если количество A и B одинаковое, тогда вы можете создать два массива с выхода и использовать простой цикл для прохождения ключей. Таким образом, он может отображать $ userdata [$ x] и $ userdata2 [$ x], где $ x - итератор цикла.

Старайтесь избегать использования нескольких циклов, особенно вложенных циклов.

0
while ($userdata = dbarray($data)) { 
    //your stuff 
    while ($other_userdata = dbarray($data2)) { 
     //your other stuff 
    } 
}