나는 12 개월 기간을 표시하는 간단한 PHP 달력을 만들었습니다. 달력 이벤트를 보유하고있는 MySQL 데이터베이스가 있습니다. 내 일정에 내 일정을 채우고 싶습니다. 당연히 매일 MySQL 쿼리를 실행할 수 있지만 365 개의 쿼리는 단일 MySQL 쿼리를 실행하고 결과를 365 번 반복하는 것과 같이 매우 비효율적 인 것처럼 보입니다. 대체 무엇입니까? 이 작업을 수행하는 간단하고 효율적인 방법이 있습니까?캘린더를 채우는 가장 효율적인 방법은 무엇입니까?
0
A
답변
0
$query = "SELECT idEvent, day, hour , event from calendar where year = 2014 order by day, hour ";
$calendarEvents = array();
if ($result = $mysqli->query($query)) {
/* fetch associative array */
while ($row = $result->fetch_assoc()) {
$calendarEvents[ $row["day"] ][ $row["idEvent"] ] = $row;
}
/* free result set */
$result->free();
}
그런 다음 2014 년 1 개의 검색어로 데이터를 가져와 배열 $ calendarEvents에 액세스합니다. 매일 당신이
for($i = 1; $i < 365 ; $i++){
$date = date("Y-m-d" , strtotime("2013-12-31 + $i day"));
foreach($calendarEvents[ $date ] as $idEvent => $c){
echo $idEvent . " -- ".$date." - ". $c["hour"]." - ".$c["event"];
}
}
0
당신에게 올해의 하루에 한 행과 결과 집합을 제공하기 위해 질의 순서와 동일한 순서로 그 날의 모든 이벤트를 가져 foreach 루프를 가진, 그래서 당신은 ID를 기준으로 모든 이벤트를 그 날의 모든 이벤트 (있는 경우)를 다른 열에 연결하면 다음과 같이 할 수 있습니다. -
SELECT DateSub.aDay, GROUP_CONCAT(CONCAT_WS(':', SomeCalendarTable.eventName, SomeCalendarTable.startTime, SomeCalendarTable.endTime)) AS DaysEvents
FROM
(
SELECT DATE_ADD('2014/01/01', INTERVAL (Units.DayNo + Tens.DayNo * 10 + Hundreds.DayNo * 100) DAY) AS aDay
FROM
(SELECT 1 AS DayNo UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 0) Units,
(SELECT 1 AS DayNo UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 0) Tens,
(SELECT 1 AS DayNo UNION SELECT 2 UNION SELECT 3 UNION SELECT 0) Hundreds
HAVING YEAR(aDay) = '2014'
) DateSub
LEFT OUTER JOIN SomeCalendarTable
ON DateSub.aDay = SomeCalendarTable.calendarDate
GROUP BY DateSub.aDay
관련 문제
- 1. listview를 채우는 가장 효율적인 방법은 무엇입니까?
- 2. Java에서지도를 채우는 가장 효율적인 방법
- 3. auto_increment로 테이블을 채우는 가장 효율적인 방법
- 4. 불완전한 MySQL 데이터 세트의 갭을 채우는 가장 효율적인 방법은 무엇입니까?
- 5. Javascript의 다른 정보를 기반으로 배열을 채우는 가장 효율적인 방법은 무엇입니까?
- 6. PHP를 사용하여 테이블을 채우는 가장 효율적인 방법은 무엇입니까?
- 7. 시간 (또는 시간 범위)을 채우는 가장 효율적인 방법은 무엇입니까?
- 8. 지정된 시간 간격으로 페이지를 채우는 가장 효율적인 방법은 무엇입니까?
- 9. 바이트 배열에 데이터를 채우는 가장 효율적인 방법은 무엇입니까?
- 10. jQuery에서 가장 효율적인 버튼을 선택하는 가장 효율적인 방법은 무엇입니까?
- 11. 가장 효율적인 방법은 프로그램을
- 12. 가장 효율적인 방법은 PHP
- 13. 가장 효율적인 방법은
- 14. 가장 효율적인 방법은
- 15. 가장 효율적인 방법은 PyQt4
- 16. 가장 효율적인 방법은
- 17. 가장 효율적인 방법은
- 18. 가장 효율적인 방법은
- 19. 가장 효율적인 방법은 무작위로
- 20. 가장 효율적인 쿼리는 무엇입니까?
- 21. 템플릿의 데이터를 채우는 가장 좋은 방법은 무엇입니까?
- 22. SQLite에서 테이블을 채우는 가장 빠른 방법은 무엇입니까?
- 23. JTable을 객체로 채우는 가장 좋은 방법은 무엇입니까?
- 24. jQuery로 양식을 채우는 가장 좋은 방법은 무엇입니까?
- 25. 기본 속성을 채우는 가장 좋은 방법은 무엇입니까?
- 26. 사진을 디스크에 저장하는 가장 효율적인 효율적인 방법은 무엇입니까?
- 27. 문자열 비교를 수행하는 가장 효율적인 방법은 무엇입니까?
- 28. 코어 데이터를 사용하는 가장 효율적인 방법은 무엇입니까?
- 29. Python에서 동시성을 구현하는 가장 효율적인 방법은 무엇입니까?
- 30. Java - ArrayList를 동기화하는 가장 효율적인 방법은 무엇입니까?
모두는 출력에 따라 다릅니다. – andrewb
요일을 키로 사용하여 배열을 만든 다음 1..365 루프 내에서 사용합니다. – Vatev
테이블 구조는 무엇입니까? – Kickstart