2014-02-08 6 views
0

PHP를 처음 사용했습니다. 중첩 된 for 루프를 사용하여 여러 테이블을 인쇄 할 수있는 문제가 있습니다. 그래서 현재 코드에서는 중첩 된 for 루프가 있는데, 이는 for 루프를 외부로 가져올 때와 같은 하나의 테이블 만 출력합니다. 배열에 하드 코딩 된 데이터가 있고 중첩 된 for 루프가 동일한 테이블 중 4 개를 인쇄 할 수있게하려고합니다. 웬일인지 이것은 내가 가지고있는 것에 기초하여 작동하지 않고 그것이 왜 아닌지를 파악할 수없는 것처럼 보입니다.PHP에서 중첩 된 for 루프를 사용하여 여러 테이블 인쇄

결국 하드 코딩 된 데이터 대신 DB에서 가져옵니다. 회의를 기반으로 올바르게 주문을 채우기 위해 필요한 데이터베이스 하나를 가져와야하고 현재의 논리에 따라 이것이 내가 직접 지시하는 방식을 기반으로 한 가능성이 있는지 알고 싶었습니다. 나는 이것을 알아 내려고 정말로 노력하고 있으며 그것이 왜 효과가 없었는지에 대한 설명을 고맙게 생각할 것입니다. 미리 감사드립니다.

PHP 코드 :

<?php print('<?xml version = "1.0" encoding = "utf-8"?>') ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
     <title>User selection page</title> 
    </head> 


    <?php 
     /* 
     Version 1.1: Instead of printing the teams in different cells we are going to print the 
     games in one row and we select the game itself to see if an upset will occur. 
     */ 

     require_once('Conference.php'); 

     for ($i = 0; $i<4; $i++) 
     {  
      $loadGameClass = new Conference(); 
      $loadGameClass->loadTeams(array("(1)Gonzaga vs (16)Southern U", "(8)Pittsburgh vs (9)Wichita St", "(5)Wisconsin vs (12)Ole Miss", "(4)Kansas st vs (13)Boise St", "(6)Arizona vs (11)Belmont", "(3)New Mexico vs (14) Harvard", "(7)Notre Dame vs (10)Iowa St", "(2)Ohio St vs (15) Iona")); 
      $teams = $loadGameClass->getTeams(); 

      echo '<table border="1">'; 

      for ($i = 0; $i < 8; $i++) 
      { 
       $highSeed = $teams[$i]; 
       echo '<tr><td>'.$highSeed.'</td><tr>'; 
      } 

      echo '</table>'; 
      echo "\n"; 
     } 
    ?> 

    <body> 
    </body> 
</html> 

답변

2

당신은 내부 및 외부 루프에 $i를 사용합니다. 예를 들어 내부 루프 반복자를 바꿉니다. $j에 의해 귀하의 코드가 작동합니다.

+0

고마워요! 그게 효과가 있었고 아마도 코드를 100 번 스캔했지만 그 작은 버그를 알지 못했습니다. – user2522055

0

이 코드는 당신을 위해 잘 작동합니다 : 당신은 외부 및 내부 루프 같은 변수 이름을 사용했기 때문에

<?php print('<?xml version = "1.0" encoding = "utf-8"?>') ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
     <title>User selection page</title> 
    </head> 
<body> 
<?php 
//added the php in the body tag because you can't add content between </head> and <body> 
      /* 
     Version 1.1: Instead of printing the teams in different cells we are going to print the 
     games in one row and we select the game itself to see if an upset will occur. 
     */ 

     require_once('Conference.php'); 

     for ($i = 0; $i<4; $i++) 
     {  
      $loadGameClass = new Conference(); 
      $loadGameClass->loadTeams(array("(1)Gonzaga vs (16)Southern U", "(8)Pittsburgh vs (9)Wichita St", "(5)Wisconsin vs (12)Ole Miss", "(4)Kansas st vs (13)Boise St", "(6)Arizona vs (11)Belmont", "(3)New Mexico vs (14) Harvard", "(7)Notre Dame vs (10)Iowa St", "(2)Ohio St vs (15) Iona")); 
      $teams = $loadGameClass->getTeams(); 

      echo '<table border="1">'; 

      for ($x = 0; $x < 8; $x++) //replaced $i by $x 
      { 
       $highSeed = $teams[$x];//replaced $i by $x 
       echo '<tr><td>'.$highSeed.'</td><tr>'; 
      } 

      echo '</table>'; 
      echo "\n"; 
     } 
    ?> 
</body> 
</html> 

귀하의 코드가 작동하지 않았다. 외부 루프의 $ i는 매번 두 번째 루프로 덮어 씁니다. 그러므로 당신은 올바른 표를 얻지 못했습니다.

나는 데이터베이스에서 테이블의 결과를 인쇄하고 대부분의 회의 항목으로 주문 하시겠습니까? 당신은 $ 팀에 $의 loadGameClass를 교체하고이 그것을 대체했습니다 :

$loadGame = mysql_query('SELECT * FROM teams ORDER BY most_conferenced ASC'); 

을 당신은 내부 루프가 있어야합니다 위치 :

while($row = mysql_fetch_array($loadGame)){ 
    print '<tr><td>'.$row['match_text'].'</td></tr>'; 
} 

그리고 데이터베이스의 뜻은 다음과 같다 :

Teams: 
id:int primary key ai 
match_text:string 
conferenced:int 

이게 당신이 찾고 있는게 있나요?

+0

답장을 보내 주셔서 감사합니다! 데이터베이스를 가져 오는 논리가 어떻게 작동하는지 잘 모르겠습니다. 링크는 다음과 같습니다. http://espn.go.com/mens-college-basketball/tournament/bracket 4 개의 컨퍼런스가 있습니다. 가장 바깥 쪽 게임은 내가 지금하고있는 일이다. 각 회의를 8 경기짜리 테이블에 인쇄하고 싶습니다. 우리는 데이터를 올바르게 가져 와서 각 컨퍼런스의 테이블에있는 괄호 안의 내용을 위에서 아래로 순서대로 나열해야합니다. PHP와 논리적으로 가능한지 궁금하다. 전에 MySQL과 PHP로 한 번도 해본 적이 없기 때문이다. – user2522055

관련 문제