alle resultaten per categorie weergeven behalve huidige id
http://www.tekenbureau-alferink.nl/httpdocs/projecten.php?action=showcat&catid=1
Voor het overzicht van alle projecten per categorie heb ik dan:
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
<?
if(isset($_GET['action'])){
if($_GET['action'] == "showcat"){
$catid = $_GET['catid'];
$categories = $projects->getCategories($catid);
$template->assign('categories',$categories);
$catter = $db->get_var("SELECT omschrijving FROM prj_categorie WHERE cat_id = '".$_GET['catid']."'");
$template->assign('catter',$catter);
$totalrowsindb = $db->get_var("SELECT count(catid) FROM prj_artikel WHERE catid = '".$_GET['catid']."' AND status='1' AND timestamp_end <= '$time' ORDER BY timestamp_end DESC");
$template->assign('totalrowsindb',$totalrowsindb);
}
}
?>
if(isset($_GET['action'])){
if($_GET['action'] == "showcat"){
$catid = $_GET['catid'];
$categories = $projects->getCategories($catid);
$template->assign('categories',$categories);
$catter = $db->get_var("SELECT omschrijving FROM prj_categorie WHERE cat_id = '".$_GET['catid']."'");
$template->assign('catter',$catter);
$totalrowsindb = $db->get_var("SELECT count(catid) FROM prj_artikel WHERE catid = '".$_GET['catid']."' AND status='1' AND timestamp_end <= '$time' ORDER BY timestamp_end DESC");
$template->assign('totalrowsindb',$totalrowsindb);
}
}
?>
http://www.tekenbureau-alferink.nl/httpdocs/cases.php?action=showcase&caseid=1
Voor alle gegevens van het project heb ik dan:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
if(isset($_GET['action'])){
if($_GET['action'] == "showcase"){
$caseid = $_GET['caseid'];
mysql_query("UPDATE prj_artikel SET views=views+1 WHERE id='$caseid'");
$pagetitle = $projects->getTitle($caseid);
$projectitem = $projects->getProjectItem($caseid);
$template->assign('projectitem',$projectitem);
$otheritems = $projects->getOtherItems($projectitem['catid']);
$template->assign('otheritems',$otheritems);
$albuminfo = $projects->getAlbumInfo($projectitem['albumid']);
$template->assign('albuminfo',$albuminfo);
$albumfotos = $projects->getAlbumPhotos($projectitem['albumid']);
$template->assign('albumfotos',$albumfotos);
}
}
?>
if(isset($_GET['action'])){
if($_GET['action'] == "showcase"){
$caseid = $_GET['caseid'];
mysql_query("UPDATE prj_artikel SET views=views+1 WHERE id='$caseid'");
$pagetitle = $projects->getTitle($caseid);
$projectitem = $projects->getProjectItem($caseid);
$template->assign('projectitem',$projectitem);
$otheritems = $projects->getOtherItems($projectitem['catid']);
$template->assign('otheritems',$otheritems);
$albuminfo = $projects->getAlbumInfo($projectitem['albumid']);
$template->assign('albuminfo',$albuminfo);
$albumfotos = $projects->getAlbumPhotos($projectitem['albumid']);
$template->assign('albumfotos',$albumfotos);
}
}
?>
In class_projects heb ik daarnaast de volgende functies staan:
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
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
<?
function getProjectItem($data) { // Haalt alle velden van het project uit de database
global $db;
$time = time();
$projectitem = $db->get_row("SELECT images_albums_images.albumimage_albumid, prj_artikel.titel, prj_artikel.tekst, prj_artikel.plaats, prj_artikel.realisatie, prj_artikel.catid, prj_artikel.fotoid, prj_artikel.albumid, prj_artikel.timestamp_start, prj_artikel.timestamp_end,
COUNT(images_albums_images.albumimage_albumid) AS aantal FROM images_albums_images, prj_artikel WHERE prj_artikel.albumid=images_albums_images.albumimage_albumid AND id='".$data."'",ARRAY_A);
return $projectitem;
}
function getCategories($data){ //Haalt alle projectcategorieën op (excl. ontwerpen)
global $db;
$categories = $db->get_results("SELECT omschrijving, cat_id FROM prj_categorie ORDER BY cat_id ASC LIMIT 10", ARRAY_A);
return $categories;
}
function getSubCaselines() { //Haalt alle actieve projecten op van een bepaalde categorie
global $db;
$time = time();
$subcaselines = $db->get_results("SELECT * FROM prj_artikel, images_albums_base WHERE prj_artikel.albumid=images_albums_base.albumbase_id AND catid = '".$_GET['catid']."' AND status='1' AND timestamp_end <= '$time' ORDER BY timestamp_end DESC", ARRAY_A);
return $subcaselines;
}
function getOtherItems($catid){
global $db;
$otheritems = $db->get_row("SELECT * FROM prj_artikel WHERE id = '$catid' AND status='1'",ARRAY_A);
return $otheritems;
}
function getAlbumInfo($albumid){
global $db;
$albuminfo = $db->get_row("SELECT * FROM images_albums_base WHERE albumbase_id='$albumid'",ARRAY_A);
return $albuminfo;
}
function getAlbumPhotos($albumid){
global $db;
$photos = $db->get_results("SELECT * FROM images_albums_images WHERE albumimage_albumid='$albumid' ORDER BY albumimage_imageid ASC",ARRAY_A);
return $photos;
}
?>
function getProjectItem($data) { // Haalt alle velden van het project uit de database
global $db;
$time = time();
$projectitem = $db->get_row("SELECT images_albums_images.albumimage_albumid, prj_artikel.titel, prj_artikel.tekst, prj_artikel.plaats, prj_artikel.realisatie, prj_artikel.catid, prj_artikel.fotoid, prj_artikel.albumid, prj_artikel.timestamp_start, prj_artikel.timestamp_end,
COUNT(images_albums_images.albumimage_albumid) AS aantal FROM images_albums_images, prj_artikel WHERE prj_artikel.albumid=images_albums_images.albumimage_albumid AND id='".$data."'",ARRAY_A);
return $projectitem;
}
function getCategories($data){ //Haalt alle projectcategorieën op (excl. ontwerpen)
global $db;
$categories = $db->get_results("SELECT omschrijving, cat_id FROM prj_categorie ORDER BY cat_id ASC LIMIT 10", ARRAY_A);
return $categories;
}
function getSubCaselines() { //Haalt alle actieve projecten op van een bepaalde categorie
global $db;
$time = time();
$subcaselines = $db->get_results("SELECT * FROM prj_artikel, images_albums_base WHERE prj_artikel.albumid=images_albums_base.albumbase_id AND catid = '".$_GET['catid']."' AND status='1' AND timestamp_end <= '$time' ORDER BY timestamp_end DESC", ARRAY_A);
return $subcaselines;
}
function getOtherItems($catid){
global $db;
$otheritems = $db->get_row("SELECT * FROM prj_artikel WHERE id = '$catid' AND status='1'",ARRAY_A);
return $otheritems;
}
function getAlbumInfo($albumid){
global $db;
$albuminfo = $db->get_row("SELECT * FROM images_albums_base WHERE albumbase_id='$albumid'",ARRAY_A);
return $albuminfo;
}
function getAlbumPhotos($albumid){
global $db;
$photos = $db->get_results("SELECT * FROM images_albums_images WHERE albumimage_albumid='$albumid' ORDER BY albumimage_imageid ASC",ARRAY_A);
return $photos;
}
?>
Nu wil ik het één en ander combineren, zodat op elke afzonderlijke webpagina van een project de fotoid's van alle overige projecten in dezelfde categorie afgebeeld worden. Ik ben de draad nu wat kwijt en krijg op basis van
{if $projectitem.catid}
{section name=index loop=$otheritems}
<div style="float:left; margin:0px; padding:0px; border:0px;{if $smarty.section.index.rownum is div by 3}margin-left:0px; margin-right:0px; margin-bottom:5px;{elseif $smarty.section.index.rownum eq 1 OR $smarty.section.index.rownum eq 4 OR $smarty.section.index.rownum eq 7 ... OR $smarty.section.index.rownum eq 58}margin-left:0px; margin-right:0px; margin-top:0px;{else}margin-right:0px; margin-top:0px;{/if}">
<img src="photo/75/{$projectitem.fotoid|fotoid2filename}" style="width:73px; margin:0px; padding:0px; border:2px solid #99ccff;" align="left" alt="photo" title="">
</div> {/section}
{/if}
elke keer 13 maal één en dezelfde foto van hetzelfde project. Hoezo geeft hij er telkens 13 weer??? Plus hoe kan ik de koppeling maken tussen huidige 'caseid' en 'catid' zonder de 'fotoid' van de huidige 'caseid' weer te geven??? Volgens mij gaat daarin iets mis. Hopelijk kan iemand mij hier uitleggen wat ik niet goed doe. Bij voorbaat dank.
Gewijzigd op 03/10/2011 18:00:25 door Auke Reimert
Dat leest makkelijker ;)
Ik denk dat het zo inderdaad een stuk makkelijker te lezen is!!
slecht design in chrome
Hier ook in Firefox.
Betreffend SQL-injectie: daar waar de projecten m.b.v. invoervelden toegevoegd worden heb ik bij diverse velden mysql_real_escape_string(stripslashes(trim($data[''] gebruikt. Is dit bij alle type velden nodig en gaat dit SQL-injectie tegen? Daarnaast wordt het veld 'id' automatisch gevuld.
De afhandeling van je relationele datamodel deugt niet. In plaats van een gemikte JOIN gebruik je allerlei functies die onderling allerlei ID's aan elkaar doorgeven.