2010-05-02 5 views
0

오늘의 질문에 이어이 답변을 통해 데이터를 배열로 읽어서 차량 유형을 인쇄 한 다음 각 차량에 대한 데이터로 구분합니다.테이블에 넣기위한 mysql 데이터 포맷하기

<?php 
$sql = "SELECT * FROM apparatus ORDER BY vehicleType"; 
$getSQL = mysql_query($sql); 
// transform the result set: 
$data = array(); 
while ($row = mysql_fetch_assoc($getSQL)) { 
$data[$row['vehicleType']][] = $row;  
} 
?> 
<?php foreach ($data as $type => $rows): ?> 
<h2><?php echo $type?></h2> 
<ul> 
    <?php foreach ($rows as $vehicleData):?> 
    <li><?php echo $vehicleData['name'];?></li> 
    <?php endforeach ?> 
    </ul> 
<?php endforeach ?> 

이 내가하고 싶은 것을 거의 완벽하지만 두 번째 foreach 루프에 가기 전에 데이터베이스 즉, 포드 몬데오에서 두 개의 열을 인쇄 할 필요가있다. print $ rows [ 'model']과 내가 생각할 수있는 다른 모든 조합을 시도했지만 작동하지 않습니다. 어떤 도움을 많이 주신

+0

를 수행하면'$ vehicleData' 배열이 기계를 포함 깨닫지 세부? 따라서 모델은 $ rows –

+0

이 아니라이 배열에 저장되어야합니다. 별개의 배열을 의미합니까? 배열에 대해 정말 고심하여 어떤 설명을해도 괜찮습니다. – bsandrabr

답변

0

질문에 혼란 스럽지만 SQL 문의 SELECT *는 데이터베이스의 모든 열이 $ row 배열의 key => value 쌍으로 나타나야한다는 것을 의미합니다. 따라서 여기에 HTML 목록 요소 <li>에 다른 "열"이 필요하면 해당 열 이름을 배열 키로 표시합니다 (메모 : "인쇄"하지 않음). 당신이 이름을 "모델"과 열에있는 자동차 컬럼의 종류를 필요에 따라서 당신은이 작업을 수행 할 것 :

<?php 
$sql = "SELECT * FROM apparatus ORDER BY vehicleType"; 
$getSQL = mysql_query($sql); 
// transform the result set: 
$data = array(); 
while ($row = mysql_fetch_assoc($getSQL)) { 
$data[$row['vehicleType']][] = $row;  
} 
?> 
<?php foreach ($data as $type => $rows): ?> 
<h2><?php echo $type?></h2> 
<ul> 
    <?php foreach ($rows as $vehicleData):?> 
    <li><?php echo $vehicleData['name'];?></li> 
    <li><?php echo $vehicleData['model'];?></li> 
    <?php endforeach ?> 
    </ul> 
<?php endforeach ?> 

편집 : 난 아직도 당신의 질문에 불분명 합니다만, 모든 차의 경우 같은 vehicleType을 가지고, 당신은 그냥 한 번 모든 결과를 통해 반복하기 전에, 나는이 그것을 할 것 같은데요 잡아 찾고 :

<?php 
// Set up a SQL query to grab one row 
$query_to_grab_only_vehicle_type = "SELECT vehicleType FROM apparatus WHERE 1 LIMIT 0,1"; 
// Fetch that row and turn it into an array 
$vehicle_type_array = mysql_fetch_array(mysql_query($query_to_grab_only_vehicle_type)); 
// Initialize a variable with the array value that came from the vehicleType column 
$vehicle_type = $vehicle_type_array['vehicleType']; 
// You could uncomment and use the following to echo out the variable 
// echo "Vehicle type: $vehicle_type"; 

$sql = "SELECT * FROM apparatus ORDER BY vehicleType"; 
$getSQL = mysql_query($sql); 
// transform the result set: 
$data = array(); 
while ($row = mysql_fetch_assoc($getSQL)) { 
$data[$row['vehicleType']][] = $row;  
} 
?> 
<?php foreach ($data as $type => $rows): ?> 
<h2><?php echo $type?></h2> 
<ul> 
    <?php foreach ($rows as $vehicleData):?> 
    <li><?php echo $vehicleData['name'];?></li> 
    <li><?php echo $vehicleData['model'];?></li> 
    <?php endforeach ?> 
    </ul> 
<?php endforeach ?> 
+0

고마워요. 데이터가 있습니다. 내가 제안한대로 반향시킬 수는 있지만 모델 에코가 많이 있습니다. 루프 전에 필요하기 때문에 한번 밖에 echo'd하고, $ rows까지는 vehicleData가 존재하지 않습니다. – bsandrabr

+0

while 루프는 "많은 에코"를 제공합니다. 한 번 배열. 그 경우 위에 while this this : "$ singleRow = mysql_fetch_array ($ getSQL)" 행의 각 항목에 대해 배열을 초기화하는 것과는 달리 하나의 배열을 초기화합니다. 필요하지 않은 행을 가져 오지 않도록 LIMIT 0,1과 함께 호출 할 수 있습니다. – buley

+0

while 루프는 mondeo, blue hardtop, ford mondeo, red softtop과 같은 모든 데이터를 추출합니다. 주어진 응답은 ford, blue hardtop, ford, red softop을 제공합니다. 내가 필요로하는 것은 포드 몬데, 파란 하드 톱, 빨간 소프트이다. – bsandrabr