2012-07-17 2 views
0

저는 여기 MySQL의 초보자입니다. A1에서 C22까지의 행과 열의 실제 플레이트와 비슷한 테이블을 만들려고합니다 (이 좌표를 웰이라고 부름).두 배열 사이에 존재하는 경우 요소를 기울임 꼴로 표시합니다.

A1 A2 A3 A4 A5 A6 A7을 : 아래 그림과 같이 배열 (I 실제로 각이 잘 설명을 목적으로 셀을 점유하지만이 할 수있는 여기 표를 그리려)처럼 MySQL의 스크립트의 결과는 비슷 A8 A9 A10 A11 A12 A13 A14 A15 A16 A17 A18 A19 A20 A21 A22

B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12 B13 B14 B15 B16 B17 B18 B19 B20 B21 B22

C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15 C16 C17 C18 C19 C20 C21 C22

실제 데이터베이스에서 A1에서 A22 & C1에서 C22까지를 포함하는 데이터가 존재하므로, 위의 표에 표시된대로 이탤릭체 형태로 표시해야합니다. 나는 A1 ~ C22를 포함하는 배열을 만들려고 노력했다. 그리고 그 배열을 A1에서 A22 & C1에서 C22까지 (나는 $ result라고 부름)를 포함하는 다른 데이터베이스 배열과 비교하려고한다. array_intersect을 사용하여 $ arr의 요소와 데이터베이스의 배열 사이의 교차점을 찾습니다. 존재하는 경우 $ arr의 해당 요소는 기울임 꼴로 표시되어야합니다.

내 스크립트는 다음과 같습니다. 나는 쓰레기 알고 있지만 나는 시도 .. 그 키가 배열에 존재하는지

<?php 
$con = mysql_connect("localhost","root","1234"); 

mysql_select_db("inhouse_collection", $con) or die (mysql_error()); 

$result = mysql_query("SELECT * from ft7 ORDER BY SUBSTRING(Plate_Loc, 1, 1) ,SUBSTRING(Plate_Loc, 2)+0"); 

$arr=array("A1","A2","A3","A4","A5","A6","A7","A8","A9","A10","A11","A12","A13","A14","A15","A16","A17","A18","A19","A20","A21","A22","B1","B2","B3","B4","B5","B6","B7","B8","B9","B10","B11","B12","B13","B14","B15","B16","B17","B18","B19","B20","B21","B22","C1","C2","C3","C4","C5","C6","C7","C8","C9","C10","C11","C12","C13","C14","C15","C16","C17","C18","C19","C20","C21","C22"); 

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

echo "<tr>"; 

$z= 0; 

for($i=0; $arr[$z++]; $i = ($i+1)) { 
    if(array_intersect($arr[$z-1], $result(Plate_Loc)) { 
     echo "<td><i>". $arr[$z-1] ."</i></td>"; 
    } 
    else 
     echo "<td>" . $arr[$z-1] . "</td>"; 

    if($i == 21) 
     echo "</tr><tr>"; 
} 

echo "</tr>"; 

echo "</table>"; 
?> 
</div> 
</html> 

답변

0

먼저 자체에 isset()을 사용하여 다음 배열에있는 모든 데이터를 가져, 그리고

/* Fetch all data in to an array */ 
$result = mysql_query("SELECT Plate_Loc from ft7 ORDER BY SUBSTRING(Plate_Loc, 1, 1) ,SUBSTRING(Plate_Loc, 2)+0"); 
$list = array(); 
while($row = mysql_fetch_assoc($result)) 
{ 
    $list[$row['Plate_Loc']] = TRUE; 
} 

echo "<table>"; 

/* loop trough all rows */ 
foreach(array('A','B','C') as $row_char) 
{ 
    echo "<tr>"; 

    /* loop trough all columns */ 
    foreach(range(1, 22) as $col_nr) 
    { 
     /* check if this cell was in database */ 
     if(isset($list[$row_char . $col_nr])) 
     { 
      echo "<td><i>{$row_char}{$col_nr}</i></td>"; 
     } 
     else 
     { 
      echo "<td>{$row_char}{$col_nr}</td>"; 
     } 
    } 

    echo "</tr>"; 
} 

echo "</table>"; 
관련 문제