Построение HTML для вывода набора чисел 5 в строке - PullRequest
1 голос
/ 08 февраля 2011

Я действительно застрял с частью моего PHP-кода!У меня есть диапазон чисел от 1 до 40, скажем, что я вытащил из таблицы в моей базе данных и вывел на экран, используя цикл while!с этими числами я использую кнопку отправки, которую я заменю кнопкой изображения позже!Сейчас я могу получить их только в одну строку, используя таблицу, но я хочу собрать их в группы, скажем, около 5 столбцов, а затем перейти к следующей строке и напечатать следующие 5 столбцов!Я пробовал петли, но они печатают 1111, 2222, 3333, 4444 и т. Д. В разных строках, а это не то, что я хочу!Я хочу,

 1  2  3  4  5 
 6  7  8  9 10
11 12 13 14 15 
etc

Пожалуйста, помогите мне, я был озадачен этим целую вечность, это мой код до сих пор!

<?     
  $q3 = "SELECT * FROM tblgame";
  $r3 = mysql_query($q3);
  while($row2 = mysql_fetch_array($r3))
  {
    $game_cost = $row2['game_cost'];      

    echo "<p>Game ID: ".$row2['game_id'];
    echo "<br>Game Day: ".$game_day;
    echo "<br>Next Game Date: ".$row2['game_date_day']."/".$row2['game_date_month']."/".$row2['game_date_year'];

    $fyear = $row2['game_date_year'];
    $fmonth = $row2['game_date_month'];
    $fday = $row2['game_date_day'];
    $tmonth = $date_month;
    $tyear = $date_year;
    $tday = $date_day;
    $days_between = abs((mktime ( 0, 0, 0, $fmonth, $fday, $fyear) - mktime ( 0, 0, 0, $tmonth, $tday, $tyear))/(60*60*24)); 

    echo "<br>Days till next draw: ". $days_between;
    echo "<br />Game Cost: £".$row2['game_cost']."</p>";
 ?>
 <table>
 <tr>
 <?   
    $q4 = "SELECT * FROM tblnewgameitem WHERE game_id = $row2[game_id] ORDER BY 'game_number' ";
    $r4 = mysql_query($q4);
    $n1 = mysql_num_rows($r4);
    $i=0;
    while($row3 = mysql_fetch_array($r4))
    {
    ?>
     <td>
     <?
       if($row3['user_email'] == "")
       { 
       ?>
           <form action="buyanumber.php" method="POST">
             <input type="hidden" name="game_id" value="<?echo $row2['game_id'];?>">
             <input type="hidden" name="num" value="<? echo $row3['game_number']; ?>">
             <input type="submit" value="<?echo $row3['game_number'];?>" name="submit">
           </form>                                
       <?
       }
       else
       {
         $n = $n + 1;
         echo " ".$row3['game_number']." ";       
       }
       ?>
     </td>
     <?
   }
   ?>
 </tr>
 </table>

Пожалуйста, помогите мне, я застрял на этой проблеме длядоброе количество дней и это сводит меня с ума!

Спасибо, Стивен

Ответы [ 2 ]

0 голосов
/ 08 февраля 2011

Я предполагаю, что «реальная» проблема лежит где-то между <table> и </table> и что вы хотите поместить значения, возвращенные четвертым запросом (по некоторым причинам сопоставленные с $row3), в таблицу с5 колонок.

Используя оператор PHP по модулю ('%'), вы можете сделать что-то вроде этого:

<?php
    $r4 = <your mysql_query>
    $i = 0;
    while ($row3 = mysql_fetch_array($r4)) {
        if ($i % 5 == 0) { // true for 0, 5, 10, ...
            echo "<tr>";
        }
        echo "<td>";
        // what you want to put between your <td> tags comes here
        echo "</td>";
        if (($i+1) % 5 == 0) { // true for 4, 9, 14, ...
            echo "</tr>";
        }
        $i++;
    }
    // if the number of rows is not a multiple of 5, we must clean up after ourselves:
    if ($i % 5 != 0) {
        echo "<td colspan=\"" + (5-($i % 5)) + "\">&nbsp;</td></tr>";
    }
?>

Я сам не проверял код.

ДляРади ясности, пожалуйста, подумайте об использовании правильного отступа и согласованного именования переменных в вашем коде.Также обратите внимание, что использование правильного заголовка и меньшего количества восклицательных знаков в вашем вопросе улучшило бы его ясность.

0 голосов
/ 08 февраля 2011

вложенные циклы for - это ключ:

$list=array();
while($row2 = mysql_fetch_array($r3)) $list[] = $row2;

$countList = count($list);
$cols = 5;
$rows = ceil($countList / $maxPerRow);

for ($i=0; $i<$rows; $i++) {
    echo 'opening stuff per row... <tr> or something';
    for ($j=0; $j<$rows; $j++) {
        echo 'your stuff per item... might be somthing like <td>s';
    }

    echo 'closing stuff per row... </tr> or something';
}

как-то так

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...