alle resultaten per categorie weergeven behalve huidige id

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Auke Reimert

Auke Reimert

03/10/2011 16:09:27
Quote Anchor link
Ik ben bezig met een site voor een tekenbureau. Daar zijn alle projecten per categorie en alle projecten afzonderlijk te bekijken, zie bijv.:

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)
PHP script in nieuw venster Selecteer het PHP script
1
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);
        }
    }

?>


http://www.tekenbureau-alferink.nl/httpdocs/cases.php?action=showcase&caseid=1
Voor alle gegevens van het project heb ik dan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
        }
    }

?>


In class_projects heb ik daarnaast de volgende functies staan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?
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
 
PHP hulp

PHP hulp

21/11/2024 12:44:38
 
Maikel  B

Maikel B

03/10/2011 16:19:46
Quote Anchor link
Zou je als eerste even al je code tussen de code-tags te zetten.
Dat leest makkelijker ;)
 
Auke Reimert

Auke Reimert

03/10/2011 18:01:33
Quote Anchor link
Ik denk dat het zo inderdaad een stuk makkelijker te lezen is!!
 
PHP Scripter

PHP Scripter

03/10/2011 18:04:15
Quote Anchor link
SQL Injectie is mogelijk. Kijk hier eens!
Gewijzigd op 03/10/2011 18:05:24 door PHP Scripter
 
Victor -

Victor -

03/10/2011 18:42:57
Quote Anchor link
slecht design in chrome
 
PHP Scripter

PHP Scripter

03/10/2011 18:57:57
Quote Anchor link
Hier ook in Firefox.
 
Auke Reimert

Auke Reimert

03/10/2011 19:32:05
Quote Anchor link
Dat van de laatste 2 wist ik. Prio is eerst de inhoud daarna de css-styles aanpassen voor diverse browsers.

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.
 
Ward van der Put
Moderator

Ward van der Put

03/10/2011 20:23:56
Quote Anchor link
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.