2011-01-05 2 views
0

저는 잠시 동안이 두뇌를 고수했습니다.데이터를 검색하고 보여주는 단순한 PHP/MYSQL 문제가 있습니다.

단지 예입니다
ID | TYPE | DATA 
1 | TXT | TEST 
2 | PHP | php 
3 | JS | JAVASCRIPT 

이 테이블에 걸쳐 TXT, PHP와 JS 여러 목록이 있습니다 : 여기 예제로 SQL 데이터베이스에있는 데이터입니다. 내가하고 싶은 일은 모든 데이터를 검색하고 그것을 모두 드롭 다운/선택 상자에 표시하는 것입니다. 의미, 선택 상자 하나는 TXT 유형의 모든 데이터를 나열하고 상자 2는 PHP 유형의 모든 데이터를 나열하고 상자 3은 JS 유형의 모든 데이터를 나열합니다. 이 작업을 수행하는 유일한 방법은 각기 다른 유형에 대해 개별 SQL 쿼리를 수행하는 것입니다. 나는 1 개의 질문에서 그것을 전부하는 방법이 있고 그 때 그것을 나가 원하는 방법으로 표시한다 그러나 나는 다만 어떻게 알아내는 것을 보일 수없고 누군가가 원조 할 때 나가 견과를 몰 것이다 그것의가는가는 알고있다 그리고 나는 어떻게 그들은 그것을했다.

답변

1

있는 유일한 방법은 일반적인 SELECT * FROM tbl을 할 그냥 다음을 수행 할 수 있습니다 결과에 "foreach"를 사용하여 루프를 만들고, 유형이 preivous와 다른 경우 선택 상자를 변경합니다.

이런 식으로 배열을 한 번만 반복하면됩니다.

+0

나는 그것이 지금하고 싶은 정확하게 haha ​​thats 인 지금 나는 거짓 인 것 같은 기분이 든다! 감사! – envoys

0
당신이 가지 '유형으로 ORDER "로 그룹화 할 수

: 당신은 현재의 유형을 추적하고, 한 번 변경 유형의 또 다른 선택 상자 구축 할 수 있습니다 데이터 출력 루프,

SELECT id, data 
FROM table 
ORDER BY type; 

다음 :

$currentType = "no type"; 
while($row = mysql_fetch_assoc($res)) { 
    if ($currentType != $row['type']) { 
     $currentType = $row['type']; 
     // start new select box here 
    } 
    // do some other work here 
} 

그런 접근 방식은 해킹 같은 것 같습니다 :)

0

그냥 PHP를 사용하여 모든 레코드를 검색하고 루프를 통과시킵니다. 너무 많은 메모리 사용을 막기 위해 레코드 세트가 커질 경우 반복기를 사용하십시오.

$lists = array(); 

foreach($recordset as $record) { 
    $lists[$record['type']][$record['id']] = $record['data']; 
} 

모든 데이터가 포함 된 배열인지 확인합니다.

$res = mysqli_query('SELECT * FROM tbl'); 

$data = array(); 
while($row = mysql_fetch_assoc($res)) { 
    $type = $row['type']; 
    $data[$type][] = $row; 
} 

// $data contains all of the record, grouped by the TYPE column 

foreach($data as $type => $records) { 
    echo "records for $type: <select>"; 
    foreach($records as $record) { 
     echo "<option value='$id'>$id</option>"; 
    } 
    echo "</select>"; 
} 
0

그냥 입력하여 주문 : 코드의 그룹을 하나 개의 쿼리에서 모든 데이터를 얻을 내가 아는

관련 문제