[PHP/SMARTY] Loop gaat niet goed

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Heey,

Ik ben een pagina navigatie aan het schrijven nou stuit ik op het volgende probleem:
Afbeeldingslocatie: http://www3.whatsnow.nl/probleem.JPG


alleen weet ik niet hoe ik deze opgelost kan krijgen, |:( heb zelf al dingen geprobeerd zoals andere loops en opnieuw bouwen van de code. kom er niet uit.
De volgende code gebruiker in php:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    DBConnect();
    $QueryB = mysql_result(mysql_query("SELECT COUNT(Id),CatId FROM user_bericht WHERE CatId = '".$_GET['CatId']."' ORDER BY Id"),0)or die(mysql_error());
    $pages = ceil($QueryB / $max);
    
    
    for ($i = 1; $i <= $pages; $i++) {
        
        $smarty->assign('i',$i);
        $smarty->assign('pages',$pages);
        $smarty->assign('page',$page);  
    }

$previous = $page - 1;
$next      = $page + 1;
    
$smarty->assign('Empty',mysql_num_rows($Query));
$smarty->assign('page',$page);
$smarty->assign('pages',$pages);
$smarty->assign('previous',$previous);
$smarty->assign('CatId',$_GET['CatId']);
$smarty->assign('next',$next);
$smarty->display('bericht.tpl');

En gebruik hier het volgende stukje html code voor:
HTML:
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
{if $pages >  1}
<a href="categorie.php?CatId={$CatId}&page={$previous}"> < </a>
{/if}
{section name=datapages loop=$pages}
{section name=dataI loop=$i}
{section name=datapage loop=$page}

{if $page == $i}

{if $i == $pages}
    <b>{$i}</b>
    {else}
    <b>{$i}</b>
{/if}
    {else}
{if $i == $pages}
    <a href="bericht.php?CatId{$CatId}&page={$i}">{$i}</a>
    {else}
    <a href="bericht.php?CatId{$CatId}&page={$i}">{$i}</a>
{/if}
{/if}
{/section}
{/section}
{/section}
    { if $page < $pages}
    <a href="bericht.php?CatId={$CatId}&page={$next}"> > </a>
    {/if}

Acties:
  • 0 Henk 'm!

  • FireDrunk
  • Registratie: November 2002
  • Laatst online: 20-09 11:06
code:
1
2
3
4
5
6
for ($i = 1; $i <= $pages; $i++) { 
         
        $smarty->assign('i',$i); 
        $smarty->assign('pages',$pages); 
        $smarty->assign('page',$page);     
    }


Hierin overschrijf je toch 'i' in je template steeds opniew?
Totdat je display() aanroept kan je alles toch gewoon weer opniew toewijzen?

Edit: Hmm, je gebruikt wel een loop in Smarty... Vaag....

[ Voor 8% gewijzigd door FireDrunk op 08-02-2009 14:39 ]

Even niets...


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:51

Creepy

Tactical Espionage Splatterer

In je forloop doe je een $smarty->assign('pages' en een $smarty->assign('page en dat doe je buiten je forloop nog een keer. Dat lijkt me niet te kloppen. Het is niet zo dat met elke smarty->assign smarty aan de slag gaat.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Heb de assign van $page er uit gehaald ook de {section} van de page er uit gehaald, maar het probleem/bug blijft terug komen. iemand een idee?
PHP:
1
2
3
4
5
 <?for ($i = 1; $i <= $pages; $i++) { 
         
        $smarty->assign('i',$i); 
        $smarty->assign('pages',$pages); 
        }?> 

Acties:
  • 0 Henk 'm!

  • --MeAngry--
  • Registratie: September 2002
  • Laatst online: 19-09 16:35

--MeAngry--

aka Qonstrukt

Lees nu eens goed wat je doet. :)

Voor elke $pages ga je $i en $pages opnieuw toewijzen aan Smarty... Rara wat klopt daar niet? :P

Tesla Model Y RWD (2024)


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
owww, ja ik snap wat je bedoel _/-\o_ .. nu ik de loop uit het php scritp gehaald heb doet hij nu wat meer. dat was echt **** van me zelf.... :o


nu doet hij alleen nog maar dit, dit is een kwestie van debuggen:
< 2 3 3 4 4 4 >

iemand een idee, ben zelf aan het puzzelen maar kom er niet uit!

[ Voor 52% gewijzigd door Verwijderd op 08-02-2009 16:41 ]


Acties:
  • 0 Henk 'm!

  • dev10
  • Registratie: April 2005
  • Laatst online: 18-09 19:18
En
PHP:
1
mysql_query("SELECT COUNT(Id),CatId FROM user_bericht WHERE CatId = '".$_GET['CatId']."' ORDER BY Id")
is heel gevaarlijk.

Zoek maar eens op SQL injection.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
dev10 schreef op zondag 08 februari 2009 @ 16:56:
En
PHP:
1
mysql_query("SELECT COUNT(Id),CatId FROM user_bericht WHERE CatId = '".$_GET['CatId']."' ORDER BY Id")
is heel gevaarlijk.

Zoek maar eens op SQL injection.
Dat weet ik, script is een test/bouwe fase. :9~

Acties:
  • 0 Henk 'm!

  • dev10
  • Registratie: April 2005
  • Laatst online: 18-09 19:18
Verwijderd schreef op zondag 08 februari 2009 @ 17:22:
[...]

Dat weet ik, script is een test/bouwe fase. :9~
Zelfs in test/bouw fase hoor je dat nog niet te doen. Net zoiets als een huis bouwen zonder deuren en ramen er in. 'Ja, dit is in test/bouw fase, dus die ramen maken we er later wel in.'

Acties:
  • 0 Henk 'm!

  • vdvleon
  • Registratie: Januari 2008
  • Laatst online: 08-06-2023
Je kan in smarty een array assigen. In je template kan je dan deze array uitlezen.

Uitleg staat hier:

http://www.smarty.net/man...uage.function.foreach.php

Acties:
  • 0 Henk 'm!

  • PainkillA
  • Registratie: Augustus 2004
  • Laatst online: 26-08 19:26
of je gebruikt gewoon geen smarty en gebruikt er php voor wat op zichzelf hetzelfde kan als smarty en ook een templating taal is?

Acties:
  • 0 Henk 'm!

Verwijderd

Ik ben het wel met painkilla eens in deze, het is beetje nutteloos om dit soort dingen met smarty te doen. Smarty is een leuke template taal, maar het lijkt me voor relatief 'simpele' zaken als dit soort loops een forse overkill.

Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 19:24

Patriot

Fulltime #whatpulsert

dev10 schreef op zondag 08 februari 2009 @ 17:34:
[...]


Zelfs in test/bouw fase hoor je dat nog niet te doen. Net zoiets als een huis bouwen zonder deuren en ramen er in. 'Ja, dit is in test/bouw fase, dus die ramen maken we er later wel in.'
Ja, dat is natuurlijk een heel slecht voorbeeld :P
Verwijderd schreef op maandag 09 februari 2009 @ 10:20:
Ik ben het wel met painkilla eens in deze, het is beetje nutteloos om dit soort dingen met smarty te doen. Smarty is een leuke template taal, maar het lijkt me voor relatief 'simpele' zaken als dit soort loops een forse overkill.
Dat is niet helemaal wat PainkillA bedoelde. Smarty is een soort vervanging voor PHP, maar is dusdanig ingewikkeld dat het eigenlijk nergens op slaat om het te gebruiken. Je kunt hier ook gewoon een PHP file gebruiken. Het zit allemaal wel wat anders als je de caching functies gebruikt, maar als je dat zelf kunt maken dan kun je dat beter doen dan Smarty gebruiken.

[ Voor 49% gewijzigd door Patriot op 09-02-2009 10:54 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Smarty gebruik ik voornamelijk voor de caching functie. Gebruikte eerst template power maar die bevat geen cache functie. En ik ga misschien wel even kijken naar een include in smarty template;) is wel opzich een mooie oplossing.

Acties:
  • 0 Henk 'm!

  • cyberstalker
  • Registratie: September 2005
  • Niet online

cyberstalker

Eersteklas beunhaas

Je maakt het veel ingewikkelder dan nodig. Als je gewoon de huidige pagina en het aantal pagina's doorgeeft aan smarty kun je daar makkelijk paginanavigatie mee maken. Hier een copy/paste van een stukje uit een applicatie van mij, $page is de huidige pagina, $page_count is het aantal pagina's:

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{if $page > 1}
                                <li><a href="{$base_dir}person/page/1" title="Ga naar eerste pagina">eerste</a></li>
                                <li><a href="{$base_dir}person/page/{$page-1}" title="Ga naar vorige pagina">vorige</a></li>
{else}
                                <li>eerste</li>
                                <li>vorige</li>
{/if}
{section name=page start=1 loop=$pagecount+1}
{if $smarty.section.page.index == $page}
                                <li>{$smarty.section.page.index}</li>
{else}
                                <li><a href="{$base_dir}person/page/{$smarty.section.page.index}">{$smarty.section.page.index}</a></li>
{/if}
{/section}
{if $page == $pagecount}
                                <li>volgende</li>
                                <li>laatste</li>
{else}
                                <li><a href="{$base_dir}person/page/{$page+1}" title="Ga naar volgende pagina">volgende</a></li>
                                <li><a href="{$base_dir}person/page/{$pagecount}" title="Ga naar laatste pagina">laatste</a></li>
{/if}

Ik ontken het bestaan van IE.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
super dat werkt ook goed.... probleem is opgelost bedankt voor jullie hulp. _/-\o_

[ Voor 4% gewijzigd door Verwijderd op 09-02-2009 20:28 ]

Pagina: 1