Multidimensionale array maken voor Smarty
Nu heb ik tot nu toe al dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$result = mysql_query("
SELECT ID, title
FROM news_categories
");
if($result) {
while($newscat = mysql_fetch_assoc($result)) {
$news_categories[] = $newscat;
}
} else {
// fout enzo
}
?>
$result = mysql_query("
SELECT ID, title
FROM news_categories
");
if($result) {
while($newscat = mysql_fetch_assoc($result)) {
$news_categories[] = $newscat;
}
} else {
// fout enzo
}
?>
Dit selecteert dus de categorieën. Maar nu wil ik dus ook de items bij de categorieeën tonen, en dit in een multidimensionale array verwerken.
Deze items komen uit de tabel news.
Iemand die even een opzet kan maken hoe ik verder moet?
Gewijzigd op 06/04/2011 17:36:04 door - Ariën -
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
[nieuwscategory-1]
[newsmessage1]
[title]
[text]
[date]
[newsmessage2]
[title]
[text]
[date]
[newsmessage2]
[title]
[text]
[date]
[nieuwscategory-2]
[newsmessage1]
[title]
[text]
[date]
[newsmessage2]
[title]
[text]
[date]
[newsmessage2]
[title]
[text]
[date]
[nieuwscategory-3]
[newsmessage1]
[title]
[text]
[date]
[newsmessage2]
[title]
[text]
[date]
[newsmessage2]
[title]
[text]
[date]
[newsmessage1]
[title]
[text]
[date]
[newsmessage2]
[title]
[text]
[date]
[newsmessage2]
[title]
[text]
[date]
[nieuwscategory-2]
[newsmessage1]
[title]
[text]
[date]
[newsmessage2]
[title]
[text]
[date]
[newsmessage2]
[title]
[text]
[date]
[nieuwscategory-3]
[newsmessage1]
[title]
[text]
[date]
[newsmessage2]
[title]
[text]
[date]
[newsmessage2]
[title]
[text]
[date]
Gewijzigd op 06/04/2011 16:29:38 door Mar cel
Enig idee?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
$result = mysql_query("
SELECT
i.id,
i.title,
i.pubdate,
c.id as cat_id,
c.title as cat_title
FROM
news_items as i
RIGHT JOIN news_categories as c ON
i.cat_id = c.id
");
$data = array();
while ($item = mysql_fetch_assoc($result))
$data[$item['cat_title']][] = $item;
/*
$data = array(
'nieuws' => array(
0 => array(
'id' => 1,
'title' => 'PHP 6 is uit!'
'pubdate' => '2012-12-21'
),
1 => array(
'id' => 3,
'title' => 'Zend neemt MySQL over van Oracle',
'pubdate' => '2011-12-32'
),
'onzin' => array(
0 => array(
'id' => 6,
'title' => 'Man steekt mes in broncode',
'pubdate' => '2011-01-03'
)
);
*/
?>
$result = mysql_query("
SELECT
i.id,
i.title,
i.pubdate,
c.id as cat_id,
c.title as cat_title
FROM
news_items as i
RIGHT JOIN news_categories as c ON
i.cat_id = c.id
");
$data = array();
while ($item = mysql_fetch_assoc($result))
$data[$item['cat_title']][] = $item;
/*
$data = array(
'nieuws' => array(
0 => array(
'id' => 1,
'title' => 'PHP 6 is uit!'
'pubdate' => '2012-12-21'
),
1 => array(
'id' => 3,
'title' => 'Zend neemt MySQL over van Oracle',
'pubdate' => '2011-12-32'
),
'onzin' => array(
0 => array(
'id' => 6,
'title' => 'Man steekt mes in broncode',
'pubdate' => '2011-01-03'
)
);
*/
?>
Hartelijk bedankt, ik ga het eens inbouwen.
Ik krijg heel leuk ALLE items eruit, en ik wil 5 recente per categorie.
Dus twee queries lijken me echt onvermijdelijk.
Dus hoe kan ik er dan voor zorgen dat ik zo een array krijg?
En kan iemand me vertellen hoe ik deze in Smarty kan verwerken?
Het lijkt er dus op dat ik {foreach} twee keer genest moet gaan gebruiken.
Kan iemand me nog een goed advies geven over hoe verder? Ik zit er al enige tijd mee te stoeien en raak echt geen meter verder..........
Gewijzigd op 07/04/2011 21:43:00 door - Ariën -
ORDER BY recentdateortimeofzo LIMIT 0,5 ofzo? Kan je dit niet gebruiken?
Dat wil ik dus niet.
Ik wil steeds de laatste 5 per categorie
Het ziet er echt naar uit dat ik twee queries moet gebruiken, eentje voor de categorieën, en eentje voor de items.
Wat ik nu dus weer heb (globaal gezien):
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
$result_cats = mysql_query("SELECT ID, title FROM news_categories");
while($newscat = mysql_fetch_assoc($result_cats)) {
$data = array();
$sql = "SELECT * FROM news WHERE catID ='".$newscat['ID']."' ORDER BY date_posted DESC LIMIT 5";
echo $sql;
$result_items = mysql_query($sql);
while($item = mysql_fetch_assoc($result_items)) {
$data[$newscat['title']][] = $item;
}
}
while($newscat = mysql_fetch_assoc($result_cats)) {
$data = array();
$sql = "SELECT * FROM news WHERE catID ='".$newscat['ID']."' ORDER BY date_posted DESC LIMIT 5";
echo $sql;
$result_items = mysql_query($sql);
while($item = mysql_fetch_assoc($result_items)) {
$data[$newscat['title']][] = $item;
}
}
Maar ja, de array $data geeft maar één categorie met 5 laatste items, en niet alle categorieën?
Gewijzigd op 07/04/2011 22:58:31 door - Ariën -
gefixxed...