2013-11-24 4 views
0

나는 php에 상당히 익숙하다. 그리고 나는 배열을 잘 다루는 방법을 모른다. 여기 거래가 있습니다. 데이터베이스에서 얻은 세 개 이상의 값을 다차원 배열에 추가하고 타임 스탬프 (값 중 하나)를 기준으로 정렬하려고합니다. 그 후, 모든 정렬 된 값을 표시하려고합니다. 이 코드는 여기에 표시되지 않습니다.어떻게 다차원 배열에 값을 삽입하고 표시합니까?

$queryWaitingPatients = 'SELECT ArrivalTime, TargetTime, Order, Classification FROM exams WHERE (CurrentState = "Pending")'; 

    $results = mysql_query($queryWaitingPatients) or die(mysql_error()); 

    if (mysql_num_rows($results) == 0) { 
     echo '<p>There\'s currently no patient on the waiting list.</p>'; 
     return; 
    } 
    while ($rows = mysql_fetch_array($results)) { 
     extract($rows); 
    //now is the part that I don't know, putting the values into an array 
    } 
    // I'm also not sure how to sort this according to my $TargetTime 
    asort($sortedTimes); 

    //the other part I don't know, showing the values, 

도움 주셔서 감사합니다!

+1

** 참고 : ** 주문은 [예약어] (http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html)입니다. 예를 들어, Backticks로 감싸거나 다른 단어 인 'Orders'를 사용하십시오. –

+0

SQL 쿼리에서 ORDER BY를 사용하지 않는 이유는 무엇입니까? 이렇게하면 데이터가 이미 정렬됩니다. –

답변

0

자, 코드를 살펴 보겠습니다. 먼저 결과 집합을 반환하는 쿼리가 있습니다. deprecated (대신 mysqli 함수 사용)이 아니기 때문에 mysql_fetch_array을 사용하지 않는 것이 좋지만 잘못된 코드를 사용하는 경향이 있습니다. 모든 키가 숫자 일 때 참조하는 항목을 파악하기 란 쉽지 않습니다. 그래서 mysqli_fetch_assoc는 정말 추출물을 사용하여 싫어

초 (완전히 mysql_connectmysqli_query처럼, 먼저 mysqli 기능으로 전환하고 있는지 수) 좋습니다. 배열과 직접 작업해야합니다. 방법은 다음과 같습니다.

$myarray = array(); 
while ($rows = mysqlI_fetch_assoc($results)) { 
    $myarray[] = $rows; 
} 
echo $myarray[0]['ArrivalTime']; 

그럼이 단계를 건너 뜁니다. 첫째, 배열의 배열을 만들고 있습니다. 따라서 전체적으로 array을 초기화합니다. 그런 다음이 배열에 행을 푸시하고자합니다. 그게 $myarray[]입니다. 마지막으로, 우리가 추진하고있는 배열은 연관성이 있습니다. 즉, 행의 모든 ​​키가 쿼리의 필드 이름과 일치한다는 의미입니다.

이제 조회에서 정렬 작업을 수행해야합니다. 그럼 쿼리

$queryWaitingPatients = 'SELECT ArrivalTime, TargetTime, `Order`, Classification 
    FROM exams 
    WHERE CurrentState = "Pending" 
    ORDER BY TargetTime'; 

이 방법, 당신의 PHP 실행시 데이터베이스 이제 배열에 대한 올바른 순서로 그들을 괴로워을 조정할 수 있습니다. 정렬 코드가 필요하지 않습니다.

+0

고마워요! 그것은 정말로 통찰력 있고 상세한 것이 었습니다. 저는 아직 많은 기능을 모르기 때문에 초보자입니다. 다소 다소 제한적입니다. 정렬에 관해서는 나중에 $ myarray를 변경 한 후에 필요할 것입니다. – user3026275

0
$arr = array(); 
while ($rows = mysql_fetch_array($results)) { 
    array_push ($arr, $row); 
} 

print_r($arr); 
0
<?php 
$queryWaitingPatients = ' SELECT ArrivalTime, TargetTime, Order, Classification, CurrentState 
          FROM exams 
          WHERE CurrentState = "Pending" 
          ORDER BY TargetTime '; 

$results = mysql_query($queryWaitingPatients) or die(mysql_error()); 
    if ($results -> num_rows < 1) 
    { 
     echo '<p>There\'s currently no patient on the waiting list.</p>'; 
    } 
    else 
    { 
    while ($rows = mysqli_fetch_array($results)) 
     { 
     $arrivaltime = $row['ArrivalTime']; 
     $targettime = $row['targettime']; 
     $order = $row['Order']; 
     $classification = $row['Classification']; 
     echo "Arrival: ".$arrivaltime."--Target time: ".$targettime."--Order: ".$order."--Classification: ".$classification; 
     } 
    } 
echo "Done!"; 
//or you could put it in a json array and pass it to client side. 
?> 
관련 문제