[PHP]Door array lopen wil niet lukken

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Razr
  • Registratie: September 2005
  • Niet online
Ik haal van een aantal artikelen de id's op uit een database. Vervolgens wil ik het eerste artikel laten zien, en dan een vorige/volgende knop laten zien.

Met de volgende code haal ik de id's op en plaats ik deze in een array:
PHP:
1
2
3
4
5
6
7
$artikelQuery = 'SELECT id FROM tbl_portfolio WHERE categorie = '.$cat;
$artikelObject = mysql_query($artikelQuery);

while($artikelIds = mysql_fetch_object($artikelObject))
    {
        $bladerIds[] = $artikelIds->id;
    }


Nu gaan we dus eventueel een vorige en volgende knop laten zien. Als prev() geen FALSE returned dan kan de pointer dus een plek terug en is er een waarde. In dat geval komt er een <a href=.. om een link te maken met behulp van current().
En word er daarna een next() aangeroepen om weer op de huidige positie te komen. Hetzelfde geld voor de volgende knop, alleen dan word er ipv prev() natuurlijk gekeken of next() geen FALSE retourneerd.

De code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    //Vorige
    if(prev($bladerIds) != FALSE)
    {
        $vorige = '<a href="index.php?p=portfolio&cat='.$catRequest.'&id='.current($bladerIds).'">&lt;&lt;</a>';
        next($bladerIds);
    }
    else
    {
        $vorige = '';
    }
        //Volgende
    if(next($bladerIds) != FALSE)
    {
        $volgende = '<a href="index.php?p=portfolio&cat='.$catRequest.'&id='.current($bladerIds).'">&gt;&gt;</a>';
        prev($bladerIds);
    }
    else
    {
        $volgende = '';
    }


Als er geen $artikelId is, of deze is leeg word het eerste element uit de array gehaalt, dat gebeurd met onderstaande code

PHP:
1
2
3
4
5
6
7
8
9
10
11
if($artikelId == "" || !is_numeric($artikelId))
{
    //Er is geen gezet Id
    $artikelId = reset($bladerIds);

    if(!$artikelId)
    {
        echo "Geen objecten gevonden."; 
    }
        
}


Om de zorgen dat de pointer altijd op de juiste plek staat, dus op de INDEX van het ELEMENT wat op dat moment word gebruikt is er de volgende code

PHP:
1
2
3
4
5
6
7
if($artikelId != "" && $artikelId > 0)
{
    while( current($bladerIds) != $artikelId )
    {
        next($bladerIds);
    }
}


Het probleem:
Ik zie dus gewoon geen volgende en vorige knop verschijnen als ik dit script aanroep. Het eerste artikel word wel gewoon netjes uit de db gehaalt. De array word ook gevuld, met count() komt er gewoon het goede aantal uit. Alleen met het bladeren schijnt er iets mis te gaan. Ik zal wel iets simpels over het hoofd zien maar kom er even niet meer uit, ben er al iets te lang mee bezig gok ik :+

Acties:
  • 0 Henk 'm!

  • razor-x
  • Registratie: Februari 2001
  • Laatst online: 30-07 08:33
Waarom geen foreach loopje? :)

Acties:
  • 0 Henk 'm!

  • Razr
  • Registratie: September 2005
  • Niet online
Omdat bovenstaande toch ook zou moeten werken (nee het werkt nu niet :+ ). Heb echt het idee dat ik iets simpels over het hoofd zie..

Acties:
  • 0 Henk 'm!

  • razor-x
  • Registratie: Februari 2001
  • Laatst online: 30-07 08:33
Razr schreef op vrijdag 23 maart 2007 @ 21:08:
[...]

Omdat bovenstaande toch ook zou moeten werken (nee het werkt nu niet :+ ). Heb echt het idee dat ik iets simpels over het hoofd zie..
Waarom makkelijk doen als het moeilijk kan? ;)

PHP:
1
2
3
4
5
6
7
8
foreach($bladerlds as $key=>$item)
{
        $next = $bladerlds[$key+1];
        if($next != "")
        {
              echo "<a href='link.php?id=".$next."'> Volgende </a>".
        }
}


oid? :)

Acties:
  • 0 Henk 'm!

  • Gwaihir
  • Registratie: December 2002
  • Niet online
Begin 'ns met != FALSE te verbeteren. Je bedoelt waarschijnlijk !== FALSE, zodat je gedonder met de waarde 0 vermijdt.

Daarna zou ik bij wijze van debuggen 'ns her en der de waarde van current($bladerIds) bekijken (echo-en uit je debugger vissen, whatever).

[ Voor 76% gewijzigd door Gwaihir op 24-03-2007 00:29 . Reden: Oops.. verstuur != bekijk ]