[PHP/Yapter] For-loop werkt niet goed (fotoalbum)

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • f.grijze
  • Registratie: Augustus 2002
  • Laatst online: 28-05 15:07
Ik gebruik al enige tjd de Yapter template-engin naar tevredenheid. Heb nog nooit echt problemen ermee gehad waar ik niet uit kwam. Nu heb ik echter wel zo'n probleempje... ik heb een fotoalbum script geschreven in een los PHP-bestand. Hier werkt die prima. Nu ik deze heb omgezet voor gebruik met de Yapter engin, werkt het niet meer (goed).

Het probleem is: als er bijvoorbeeld 25 foto's in een map staan, dan pakt die alleen de eerste 5 foto's (1 rij). Ik maak gebruik van een for-loop, dus denk dat daar het probleem in zit. Heb voor een nieuwssysteem gebruik gemaakt van een while-loop en deze werkt wel goed, en is op precies dezelfde manier opgebouwd.

Deel van het bestand waar de thumbnail getoond wordt
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
for ($x = $min - 1; $x > $min, $x < $max, $x < sizeof($files); $x++) {
    $file = $files[$x];
    $ext = substr($file, -4);
    $size = GetImageSize("$_dir/$file");

    //if ($x < sizeof($files)) {
        $columns++;
        $count++;

        $tpl->set("THUMBNAIL", "  <td width=\"110\" height=\"85\" align=\"center\">
            <a href=\"#\" onClick=\"window.open('foto.php?img=$_dir/$file','','width=$size[0],height=$size[1]');\">[img]\"$_dir/thumbs/$file\"></a>[/img]");

        $tpl->parse("thumbs");
    //}

    if ($columns == $max_columns) {
        $tpl->parse("rows");
        $tpl->clear("thumbs");
        //$columns = 0;
    }


In de template staat het volgende
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
<table cellspacing="0" cellpadding="0">
[BLOCK rows]
<tr>
[BLOCK thumbs AS thumbs]
{THUMBNAIL}
[END thumbs]
</tr>
[END rows]
<tr>
  <td align="center" colspan="5">
    {NAVIGATION}</td>
</tr>
</table>
Als ik dus alles in één PHP-bestand heb staan, waar ik nog geen gebruik maak van de templates, dan werkt het dus wel goed.

De pagina's
Zonder templates: http://www.grijze.nl/album.php?gallery=20050529-001
Met templates: http://www.grijze.nl/fotoalbum.php?gallery=20050529-001

Iemand die een oplossing voor mijn probleem weet?

[ Voor 34% gewijzigd door f.grijze op 30-05-2005 10:30 . Reden: Schoonheidsfoutje in script ]


Acties:
  • 0 Henk 'm!

Verwijderd

Frank-2k schreef op maandag 30 mei 2005 @ 09:27:
PHP:
1
for ($x = $min - 1; $x > $min, $x < $max, $x < sizeof($files); $x++) {
$x stel je gelijk aan $min - 1. Dat betekent dat $x dus kleiner is dan $min. Ik weet niet precies hoe het zit met die condities die je daar stelt, maar $x > $min kan aan het begin al nooit natuurlijk.

Betekent die komma & of ||?

Ziet er erg raar uit zo.

Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

PHP:
5
6
    $size[0] = $size[0];
    $size[1] = $size[1];


Waar is dit voor?

[ Voor 3% gewijzigd door LuCarD op 30-05-2005 10:04 ]

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • f.grijze
  • Registratie: Augustus 2002
  • Laatst online: 28-05 15:07
Verwijderd schreef op maandag 30 mei 2005 @ 09:55:
[...]


$x stel je gelijk aan $min - 1. Dat betekent dat $x dus kleiner is dan $min. Ik weet niet precies hoe het zit met die condities die je daar stelt, maar $x > $min kan aan het begin al nooit natuurlijk.

Betekent die komma & of ||?

Ziet er erg raar uit zo.
$min is de eerste foto die die mag laten zien. Omdat de fotonummering bij 0 begint, en de nummering van $min bij 1, heb ik er $min - 1 neergezet. De komma betekent &, zoals gewoonlijk in PHP.

Acties:
  • 0 Henk 'm!

  • f.grijze
  • Registratie: Augustus 2002
  • Laatst online: 28-05 15:07
LuCarD schreef op maandag 30 mei 2005 @ 10:03:
PHP:
5
6
    $size[0] = $size[0];
    $size[1] = $size[1];


Waar is dit voor?
Die haalt de breedte en hoogte van het plaatje op, en bepaalt zo de grootte van de popup-window voor de foto.

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Frank-2k schreef op maandag 30 mei 2005 @ 10:24:
[...]
Die haalt de breedte en hoogte van het plaatje op, en bepaalt zo de grootte van de popup-window voor de foto.
Die waarden staan daar toch al in? 8)7

Acties:
  • 0 Henk 'm!

  • f.grijze
  • Registratie: Augustus 2002
  • Laatst online: 28-05 15:07
Maar het probleem zit hem hier niet in denk ik, omdat die in een los PHP-bestand wel gewoon werkt, waar die dus niet met templates werkt. De code op zich is niets aan verandert, behalve dan dat ik hem in een template heb geduwd.

Acties:
  • 0 Henk 'm!

  • f.grijze
  • Registratie: Augustus 2002
  • Laatst online: 28-05 15:07
djluc schreef op maandag 30 mei 2005 @ 10:25:
[...]
Die waarden staan daar toch al in? 8)7
Oh ja, nu zie ik het :) Maar daar zit het probleem dus niet in. Das gewoon een schoonheidsfoutje wat verder niks mee te maken heeft... Maar in ieder geval bedankt voor het melden :)

Acties:
  • 0 Henk 'm!

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

Creepy

Tactical Espionage Splatterer

En als je aan het debuggen gaat? Druk eens de waarde van X, min en max af elke iteratie van je loop en kijk eens of dat blijft kloppen. Kijk eens in de bron van je uiteindelijke HTML of je daar geen vreemde zaken in ziet. Zie ook : P&W FAQ - Leer **** debuggen!!

"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!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Frank-2k schreef op maandag 30 mei 2005 @ 10:23:
[...]

$min is de eerste foto die die mag laten zien. Omdat de fotonummering bij 0 begint, en de nummering van $min bij 1, heb ik er $min - 1 neergezet. De komma betekent &, zoals gewoonlijk in PHP.
Lees zijn opmerking nog eens ietsje beter. Je gaat op alle dingen in, behalve de belangrijkste.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • f.grijze
  • Registratie: Augustus 2002
  • Laatst online: 28-05 15:07
Creepy schreef op maandag 30 mei 2005 @ 10:35:
En als je aan het debuggen gaat? Druk eens de waarde van X, min en max af elke iteratie van je loop en kijk eens of dat blijft kloppen. Kijk eens in de bron van je uiteindelijke HTML of je daar geen vreemde zaken in ziet. Zie ook : P&W FAQ - Leer **** debuggen!!
Dit heb ik dus allemaal al gedaan, alleen het helpt niet helaas... Dit blijft allemaal kloppen.

Acties:
  • 0 Henk 'm!

  • f.grijze
  • Registratie: Augustus 2002
  • Laatst online: 28-05 15:07
Janoz schreef op maandag 30 mei 2005 @ 10:37:
[...]

Lees zijn opmerking nog eens ietsje beter. Je gaat op alle dingen in, behalve de belangrijkste.
Verwijderd schreef op maandag 30 mei 2005 @ 09:55:
[...]


$x stel je gelijk aan $min - 1. Dat betekent dat $x dus kleiner is dan $min. Ik weet niet precies hoe het zit met die condities die je daar stelt, maar $x > $min kan aan het begin al nooit natuurlijk.

Betekent die komma & of ||?

Ziet er erg raar uit zo.
Hoezo kan $x > $min in het begin nooit dan? $min is dus de eerste foto die die mag laten zien. Alle foto's staan namelijk in een array, genaamd $files[]. Hij moet dus op pagina 2 bijvoorbeeld de foto's 25 t/m 50 pakken. Dus dan moet $x groter zijn dan $min (25).

Volgens mij kan het dus wel...

Acties:
  • 0 Henk 'm!

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

Creepy

Tactical Espionage Splatterer

$x = $min - 1; $x > $min

Stel $min = 1. $min - 1 is dus 0. $x is dus 0 en $min 1. 0 > 1 is niet waar.
Dit moet je ook opgevallen zijn tijdens het debuggen ;)
Anyway, bij het debuggen wordt je loop dus wel helemaal doorgelopen, of maar 5 keer? Je zou nu moeten weten waarom je maar 5 items krijgt. Als het niet je loop is, en deze wel volledig alle foto's afgaat dan zit de fout waarschijnlijk in je uiteindelijke HTML. Maar deze heb je ook al bekeken?

"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!

  • f.grijze
  • Registratie: Augustus 2002
  • Laatst online: 28-05 15:07
Moet je die 2 pagina's eens gaan bekijken. De code is in beide gevallen hetzelfde, alleen is de ene omgezet voor gebruik met templates. De code zelf is niets aan verandert. Je zou toch zeggen dat het gewoon zou moeten werken?

De volledige code van de pagina zonder templates is: http://www.grijze.nl/album.phps. De volledige code van de pagina met templates is: http://www.grijze.nl/fotoalbum.phps.

Ik zie de fout nog niet, Creepy. Hoe het nu dan precies zit met die for-lus, weet ik ook niet precies meer. Heb hem ooit gemaakt, maar toen werkte die niet goed. Ik heb toen allerlei dingen aangepast, net zolang tot het wel werkt. Dit is er uitgekomen. Maar nu ik hem dus wil omzetten naar templates, werkt het weer niet...

De HTML heb ik ook al bekeken, maar daar komen alleen maar de eerste 5 foto's in te staan. Ik zou echt niet meer weten wat ik fout heb gedaan.

Acties:
  • 0 Henk 'm!

  • f.grijze
  • Registratie: Augustus 2002
  • Laatst online: 28-05 15:07
Het is inmiddels opgelost. Het was een hele domme, kleine fout. Ik was vergeten $columns weer op 0 te zetten, nadat het maximum aantal foto's in een rij was bereikt. |:(
Pagina: 1