Всего новичок пытается учиться … спасибо за всю помощь до сих пор!
UPDATE – обновленный код ниже – Спасибо Фил
Теперь я пытаюсь получить соответствующую информацию о horses
с настольных horses
которыми я могу присоединиться к race_form
с полем horse_name. Затем я хочу отобразить информацию для каждой лошади в гонке ниже ($ racecard). Это делает это немного яснее?
Я думал, что могу просто сделать еще один запрос, а затем цикл while с mysql_fetch_array под тем, который у меня уже есть, и который отобразит его, а затем переместится на следующую гонку, но это, по-видимому, не работает …?!
Мне интересно, можете ли вы запустить 2 в цикле после друг друга внутри цикла? Я работаю на коньках с конным спортом – я могу отображать каждый список расы, но под ним я хочу отображать отдельные детали лошади на каждой лошади в гонке. В любом случае, если вы посмотрите на эту страницу, вы увидите, что я пытаюсь сделать:
http://tasmanianracing.com/superform/formguide.php?meetingID=21042011LAUN&Submit=View+Form
Проблема в том, что всякий раз, когда я ставил второй цикл после списка расы, он не будет отображаться. Я пытаюсь запустить запрос, чтобы получить детали лошади с моего стола лошади, а затем бегать на лошадях каждую гонку, но ничего не появляется.
Я надеюсь, что это достаточно ясно … мой фрагмент кода ниже – пожалуйста, дайте мне знать, если я пропустил что-то важное:
echo "<table width='990' border='1' cellspacing='2' cellpadding='2'>"; $racedetails = mysql_query("SELECT * FROM race_info WHERE meetingID = ('" . $safemeetingID . "')"); while($row = mysql_fetch_array($racedetails)) { echo "<tr><td>Race " . $row['race_number'] . " at " . $row['start_time'] . " " . $row['class'] . " over " . $row['distance'] . "m</td></tr>"; $racecard = mysql_query("SELECT * FROM race_form INNER JOIN race_info ON race_form.raceID = race_info.raceID WHERE race_form.raceID = ('" . $row['raceID'] . "')"); while($row = mysql_fetch_array($racecard)) { echo "<tr><td>" . $row['number'] . "</td><td>" . $row['past10'] . "</td><td>" . $row['horse_name'] . "</td></tr>"; } echo "</table><br>"; echo "<br>I wish I could put in some horse form here...<br>"; echo "<table width='990' border='1' cellspacing='2' cellpadding='2'>"; } echo "</table>";
Я думаю, вы можете избавиться от одного из своих запросов:
Первый запрос получает количество гонок, выбирая COUNT. Это возвращает одну запись со значением count.
// This returns one record with the count $total_races = "SELECT COUNT(race_number) AS totalraces FROM race_info WHERE meetingID = ('".$safemeetingID."') ";
Затем вы перебираете те же записи, что и строки, возвращаемые для деталей гонки, такие же, как и счет.
// This looks to return the record(s) with the race details $race_details = "SELECT * FROM race_info WHERE meetingID = ('" . $safemeetingID . "')";
Я думаю, вы можете просто использовать это, чтобы получить желаемые результаты: (Я соглашаюсь переименовать переменную $ row в какой-то описательный для каждого цикла while)
$racedetails = mysql_query("SELECT * FROM race_info WHERE meetingID = ('" . $safemeetingID . "')"); while($details_row = mysql_fetch_array($racedetails)) { echo "<tr><td>Race " . $details_row['race_number'] . " at " . $details_row['start_time'] . " " . $details_row['class'] . " over " . $details_row['distance'] . "m</td></tr>"; $racecard = mysql_query("SELECT * FROM race_form INNER JOIN race_info ON race_form.raceID = race_info.raceID WHERE race_form.raceID = ('" . $details_row['raceID'] . "')"); while($rc_row = mysql_fetch_array($racecard)) { echo "<tr><td>" . $rc_row['number'] . "</td><td>" . $rc_row['past10'] . "</td><td>" . $rc_row['horse_name'] . "</td></tr>"; } echo "</table><br>"; echo "Testing<br>Testing<br>I wish I could put in some horse form here...<br>"; echo "<table width='990' border='1' cellspacing='2' cellpadding='2'>"; }
NOT TESTED / PSEUDO CODE
"SELECT * FROM horses AS h, INNER JOIN race_info AS ri ON race_form.raceID = race_info.raceID WHERE horse_name IN ( SELECT horse_name FROM race_form AS srf WHERE h.horse_name = srf.horse_name ) AND race_form.raceID = ('" . $details_row['raceID'] . "')"
Идея состоит в том, чтобы объединить два запроса в один, я знаю, что это не правильный синтаксис, но он может дать вам представление о том, как это сделать.
Или вы можете сделать еще один запрос в цикле для имен лошадей
$racedetails = mysql_query("SELECT * FROM race_info WHERE meetingID = ('" . $safemeetingID . "')"); while($details_row = mysql_fetch_array($racedetails)) { echo "<tr><td>Race " . $details_row['race_number'] . " at " . $details_row['start_time'] . " " . $details_row['class'] . " over " . $details_row['distance'] . "m</td></tr>"; $racecard = mysql_query("SELECT * FROM race_form INNER JOIN race_info ON race_form.raceID = race_info.raceID WHERE race_form.raceID = ('" . $details_row['raceID'] . "')"); while($rc_row = mysql_fetch_array($racecard)) { echo "<tr><td>" . $rc_row['number'] . "</td><td>" . $rc_row['past10'] . "</td><td>" . $rc_row['horse_name'] . "</td></tr>"; $horses = mysql_query("SELECT * FROM horses WHERE horse_name = ('" . $rc_row['horse_name'] . "')"); while($horse_row = mysql_fetch_array($horses)) { // echo horse details here } } echo "</table><br>"; echo "Testing<br>Testing<br>I wish I could put in some horse form here...<br>"; echo "<table width='990' border='1' cellspacing='2' cellpadding='2'>"; }
Вероятно, вам нужно будет изменить имена некоторых переменных $row
, они могут мешать друг другу.
Например:
while($row_races = mysql_fetch_array($totalraces)){ while($row_details = mysql_fetch_array($racedetails)){ while($row_card = mysql_fetch_array($racecard)){
Теория я мог бы и на практике вы можете, но через некоторое while
в for
некоторого while
кажется немного выше …
Я уверен, что мы можем помочь вам сделать его более эффективным, если вы объясните, что именно вы пытаетесь сделать.