PHP 및 출력을 많은 결과
-
23-08-2019 - |
문제
나만을 처리하는 관계에서 php 지금까지,하지만 내가 붙어에 문제를 포함하는 하나의 관계.내가 앉아 있었어에서 이를 위해 며칠 수 없습니다 그래서 나는 절망적인 사람에서 단계 및 표시기 전에 해결책 내 마음입니다.
에서 내 데이터베이스가 있는 시리즈의 url 을 받는 선택을 쿼리와 함께 다양한 분야에서 다른 테이블이 있습니다.모든 url 는 적어도 하나 이상의 카테고리와 연결하지만,여러 개 있을 수 있습니다.그래서 나는 결과를 볼 수 있습니다 보이는 것과는 다음과 같이 비트:
link_id = 3 url= 'http://www.somesite1.com' category = 'uncategorised'
link_id = 4 url= 'http://www.somesite2.com' category = 'travel'
link_id = 4 url= 'http://www.somesite2.com' category = 'fun'
link_id = 4 url= 'http://www.somesite2.com' category = 'misc'
link_id = 3 url= 'http://www.somesite3.com' category = 'uncategorised'
내가 이 작업을 합니다.때 나는 루프를 통해 그들을 인쇄,사용하는 동안 반복하고 mysql 가 배열의 결과를 똑같이 보이지 않다.그게 좋은 제외하고,내가 무슨 필요한 것은 그것을 읽을 다음과 같습니다.
link_id = 4 url = 'http://www.somesite2.com' category = 'travel fun misc'
그래서 그 기본적으로 모든 범주에 대한 각각의 url 을 결합 얻을 어떻게든 그들을 출력한다.첫 시도 나를 지도하려고 중첩된 루프 동안,하지만 그것은 작동하지 않았고 나는 확실하지 않으면 이것이 가능합니다.에서 떨어져 나가는지 궁금하면 내가 필요할 수 있습니다 다차원 어레이(전체 추측,나는 결코 하나를 사용하기 전에).
나는 주문 이러한 결과로 링크 id 위와 같이,그래서 내가 알고 있는 경우 이 링크를 id 에는 현재 루프 반복과 일치하는 마지막에 반복한 다음 나는 뭔가가있는 하나 이상의 카테고리..나는 정말 가까운,그러나 나는 단지 그것을 알아낼 수 없습니다.
어떤 아이디어가?
해결책
또한"GROUP_CONCAT 는 기능"에서 mysql.해야 하는지 정확히 무엇을 달성 할 수 있습니다.
다음과 같습니다.
SELECT url, GROUP_CONCAT(category) AS categories FROM yourtable GROUP BY url
다른 팁
당신이 사용해야의 연결이다.
1 당신의 테이블 링크
id = 1 url = something
id = 2 url = something else
다음 테이블의 카테고리
id = 1 category = something
id = 2 category = something else
다음은 연결되어 있는 테이블
url_id = 1 category_id = 1
url_id = 1 category_id = 2
url_id = 2 category_id = 1
이 적어도 당신은 시작합니다.
당신을 사용할 필요가 제어 알고리즘이 있습니다.
set last_link variable to null
set combined_category to null
exec query
loop over result set {
if last_link == null {
last_link=fetch_link
}
if fetch_link==last_link {
set combined_category+=ltrim(' '.fetch_category)
} else {
display html for last_link and combined_category
set last_link=fetch_link
set combined_category=fetch_category
}
}//loop
display html for last_link and combined_category
내가 사용하는"표시 html"일반적인"작업"이벤트할 수 있습이 밀어를 배열 구조,등등.대...
배열을 사용하여 키 id 및 url 을 반복을 통해 값을 추가하고 다음과 같다:
$link_categories[ $id ] .= $category." ";
$result = mysql_query("SElECT * FROM LINKS");
$link_categories = array();
while ($row = mysql_fetch_array($result,MYSQL_ASSOC))
{
if (!isset($link_categories[$row['link']]))
$link_categories[$row['link']] = " ";
else
$link_categories[$row['link']] .= " ";
$link_categories[$row['link']] .= $row['category'];
}
print_r($link_categories);
결과:
Array
(
[http://a.com] => test evaluate performance
[http://b.com] => classify reduce
[http://c.com] => allocate
)
이것은 오른쪽'의 방법으로 이 일을 정말로의 관계를 정의해야 하에 별도의 테이블과 함께 1 많은 관계이다.