2014-11-01 2 views
1

저는 문자 그대로이 사이트와 웹을 여러 시간 동안 검색하고 있었지만, 정답을 찾지 못하는 것 같습니다.
내가 달성하려고하는 것은 데이터베이스에서 테이블을 가져 오는 것입니다. 주어진 열의 동일한 값을 가진 행을 다차원 배열로 결합하십시오.키 값이 동일한 다차원 배열로 배열을 결합하십시오.

내 표는 다음과 같습니다
http://i.imgur.com/DkNaw61.png

내가 원하는 것은 setting_group_id이 동일 다차원 배열을 만드는 것입니다.
그래서이 빌드 어레이를 사용하여 관리 패널의 설정 섹션을 표시 할 수 있습니다. 이처럼 :
http://i.imgur.com/VxMsWHk.png

나는이이 코드는 멀리 : 나는 무엇을 얻을

$query = "SELECT * FROM bmp_settings"; 
$mysqli = new mysqli($hostname, $username, $password, $database); 

// Check connection 
if ($mysqli->connect_errno) { 
    printf("Connect failed: %s\n", $mysqli->connect_error); 
    exit(); 
} 

if ($result = mysqli_query($mysqli,$query)) { 

     while($bmp_setting_groups = mysqli_fetch_assoc($result)) { 
      echo "<pre>"; 
      print_r ($bmp_setting_groups); 
      echo "</pre>"; 
     } 
} 

/* free the results */ 
mysqli_free_result($result); 

/* close connection */ 
$mysqli->close(); 

12 개 연관 배열입니다.

누가 나를 도울 수 있습니까?

+2

'SELECT * FROM bmp_settings GROUP BY setting_group_id ORDER BY setting_group_id' 그게 당신이 원하는 ...? – Ohgodwhy

+0

그건 내가 원했던 것이지만 모든 행을 하나로 병합하고 그로부터 유일한 설정을 추출 할 수 없었다. 그것은 나에게 이것을 돌려 준다 : http://i.imgur.com/8YN5aah.png – Fonta

+0

아! 테이블을 뒤집겠습니까? – Tivie

답변

0

는 전체 코드이를 참조하십시오 http://hastebin.com/rakeceqefi.xml


그래서, 당신이 뭔가를 원하는?

array(1) { 
    'TeamSpeak' => 
    array(2) { 
    'teamspeak_filetransfer_port' => 
    array(6) { 
     'setting_label' => 
     string(17) "Filetransfer Port" 
     'setting_helpblock' => 
     NULL 
     'setting_type' => 
     string(4) "text" 
     'setting_value' => 
     int(30033) 
     'setting_options' => 
     NULL 
     'setting_weight' => 
     int(4) 
    } 
    'teamspeak_port' => 
    array(0) { 
    } 
    } 
} 

그럼 당신은 이런 식으로 작업을 수행 할 수 있습니다

$conn = new PDO('mysql:host=localhost;dbname=test_a', 'test', 'test'); //replace this with your credentials 

$q1 = $conn->prepare('SELECT DISTINCT `setting_group_id` FROM `bmp_settings`'); 
$q1->execute(); 
$groups = array_fill_keys($q1->fetchAll(PDO::FETCH_COLUMN, 0), array()); 

$q2 = $conn->prepare("SELECT * FROM `bmp_settings`"); 
$q2->execute(); 
$result = $q2->fetchAll(PDO::FETCH_ASSOC); 

foreach ($result as $r) { 
    $gName = $r['setting_group_id']; 
    $sKey = $r['setting_key']; 
    $groups[$gName][$sKey] = $r; 
    unset($groups[$gName][$sKey]['setting_group_id']); // not really needed 
    unset($groups[$gName][$sKey]['setting_key']); // not really needed 
} 

이 위의 당신에게 배열을 가져옵니다.

+0

사실 내가 원하는 것처럼 보입니다! 왜냐하면 나는 arrray 당 뭔가를 할 수 있고 설정 그룹에 의해 주어진 변수를 사용할 수 있기 때문이다. – Fonta

+0

와우, 멋져 보인다! 그러나 지금 당신은 나를 잃어 버렸습니다 : P 그룹을 어떻게 사용해야합니까? 방금 PHP로 스크립팅을 시작했습니다. 이미 많이 배우는 동안, 이것에 관해서는 아직 배워야 할 부분입니다. – Fonta

+0

@ 폰타 "그룹을 어떻게 사용해야합니까?" – Tivie

관련 문제