Vorige/volgende knop

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • cootje16
  • Registratie: Februari 2009
  • Laatst online: 13-09 09:39
Beste leden ik heb een fotoalbum gemaakt , en het enigste wat ik nog voor elkaar wil krijgen is een vorige/volgende knop. Misschien kunnen jullie mij hierbij helpen. Dit is de code waarmee ik de afbeeldingen laat zien in een table:

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
<?php
    echo"<table width = \"600px\" border =1>";
    echo"<tr>";
                    echo"<td width = 250>";
    $sql = "SELECT * FROM categorie WHERE categorie_id = '" . addslashes($_GET['categorie_id']) . "'";
$resultaat = mysql_query($sql);
while($rij = mysql_fetch_array($resultaat)){
    $sql = "SELECT * from foto WHERE categorie_id = ".$rij['categorie_id'];
        $afbeeldingen = mysql_query($sql);
        if(mysql_num_rows($afbeeldingen)>0){
            while($afb_rij = mysql_fetch_array($afbeeldingen)){
                $bestandsnaam = $sitepad.$afb_rij['afbeelding_id'].$afb_rij['bestandstype'];
            echo"<a href=".$bestandsnaam."><img src =".$bestandsnaam." height=\"100px\" width=\"100px\"></a>&nbsp;";            
            }
            
        }else{
         echo"geen afbeelding gevonden";
        }
    }
    echo"</td>";
    echo"</tr>";
    echo"</table>";
    echo"<a href=view.php><br>Keer terug</a>";
?> 

Acties:
  • 0 Henk 'm!

  • Raynman
  • Registratie: Augustus 2004
  • Laatst online: 00:45
Je hebt per ongeluk op versturen geklikt voordat je klaar was met typen? *

Verder is dat stuk code nogal onoverzichtelijk met willekeurige inspringing en dergelijke. Nog twee dingen: 1) je kunt, als je html echoot, enkele quotes gebruiken, dan hoef je daarbinnen niet de dubbele quotes in je html te escapen (je bent ook niet echt consequent met quotes in html); 2) maak je nou een tabel met slechts één cel? wat heeft dat voor zin? (gewoon een div o.i.d.)

* Mocht het niet duidelijk zijn: er mist nogal wat (edit: ik zie dat dit al vaker opgemerkt is bij vorige topics, dus het zou wel duidelijk moeten zijn). Sowieso dump je alleen een mededeling -- "ik heb dit en ik wil dit nog gaan doen (misschien kan iemand helpen)" -- je stelt geen vraag of zoiets. Bovendien zijn er hier op dit forum dan ook nog regels voor opgeschreven.

Edit: toch maar een tip die echt met het probleem te maken heeft dan: zoek eens op pagination.

En misschien wil je nog even kijken naar mysql_real_escape_string().

[ Voor 13% gewijzigd door Raynman op 20-11-2009 13:33 ]


Acties:
  • 0 Henk 'm!

  • cootje16
  • Registratie: Februari 2009
  • Laatst online: 13-09 09:39
Ok jah ik wilde dus vragen hoe ik een vorige/volgende knop moet maken , ik heb al verschillende scripts bekeken met paginanummering enz maar ik kom er niet uit. Dit is mijn code en heb het wat overzichtelijker gemaakt:

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
$sitepad = 'imgs/'; 
if ($_GET["actie"] == "view" && $_GET["categorie_id"]){
    
    echo'<table width = "550px">';
    echo"<tr>";
                    echo"<td width = 550px>";
    $sql = "SELECT *
                 FROM 
                 categorie 
                 WHERE 
                 categorie_id = '" . addslashes($_GET['categorie_id']) . "'";
                 
$resultaat = mysql_query($sql);
while($rij = mysql_fetch_array($resultaat)){
    
    $sql = "SELECT * 
                from 
                foto 
                WHERE 
                categorie_id = ".$rij['categorie_id'];
                
        $afbeeldingen = mysql_query($sql);
        if(mysql_num_rows($afbeeldingen)>0){
            
            while($afb_rij = mysql_fetch_array($afbeeldingen)){
                $bestandsnaam = $sitepad.$afb_rij['afbeelding_id'].$afb_rij['bestandstype'];
            echo'<a href='.$bestandsnaam.'><img src ='.$bestandsnaam.' height="100px" width="100px"></a>&nbsp;';            
            }
            
        }else{
         echo"geen afbeelding gevonden";
        }
    }
    echo"</td>";
    echo"</tr>";
    echo"</table>";
    echo"<a href=view.php><br>Keer terug</a>";  
    
}

Acties:
  • 0 Henk 'm!

  • Mike2k
  • Registratie: Mei 2002
  • Laatst online: 22-08 11:59

Mike2k

Zone grote vuurbal jonge! BAM!

Ik heb ook zoiets gemaakt....weet alleen niet meer hoe..zal vanavond even de code nakijken...

You definitely rate about a 9.0 on my weird-shit-o-meter
Chuck Norris doesn't dial the wrong number. You answer the wrong phone.


Acties:
  • 0 Henk 'm!

  • Raynman
  • Registratie: Augustus 2004
  • Laatst online: 00:45
Maar heb je al wel iets concreets geprobeerd? of iets van een idee wat je ongeveer zou moeten aanpassen? Wat verwacht je: dat iemand hier het helemaal voor je oplost? Er zijn volgens mij echt heel veel artikelen (dus ook met uitleg, niet alleen een script; men neemt je aan het handje) over dit soort dingen, met soms een wat verschillende aanpak natuurlijk, maar stappen als aantal berichten/foto's tellen en met LIMIT bijv. 20 stuks selecteren en dat afdrukken zie je overal. Dan moet je nog een OFFSET hebben om de juiste twintig te selecteren en de links naar andere pagina's beheren e.d., maar dat is ook niet zo ingewikkeld.

Er zijn ook wel functies of classes te vinden die je voor willekeurige systemen kunt gebruiken om het meeste werk voor je te doen, daar zou je ook nog naar kunnen kijken.

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:27

Creepy

Tactical Espionage Splatterer

Wat Raynman zegt dus. Hier in PRG draait het om het zelf programmeren en niet om je code te dumpen en te wachten totdat wij dat voor je gaan doen. De vraag over vorige/volgende knoppen is hier al vaker voorbij gekomen en ook met google is er wel het 1 en ander te vinden. Dus wat heb je zelf al gevonden? Wat heb je zelf al geprobeerd? En wat lukte daar niet mee? Zie ook PRG Beleid voor wat hier nu wel en niet kan.

Dat is je overigens al eens eerder vertelt ;)

[ Voor 12% gewijzigd door Creepy op 20-11-2009 13:58 ]

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

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Wil je nou naar de vorige/volgende categorie???

"The shell stopped unexpectedly and Explorer.exe was restarted."


Acties:
  • 0 Henk 'm!

  • Johnny
  • Registratie: December 2001
  • Laatst online: 17-09 16:59

Johnny

ondergewaardeerde internetguru

Wat is de volgende en vorige? Dat is afhankelijk van waarop je de foto's sorteert. Het makkelijkst is het om het op het ID te doen. Je kan er alleen niet vanuit gaan dat deze altijd oplopend is, je zal dus de grootste ID die kleiner is dan het huidige ID moeten vinden voor de vorige foto en de laagste ID die groter is dan de huidige voor de volgende foto.

Dat wordt dan zoiets in SQL:

SQL:
1
2
SELECT MAX(id) FROM foto WHERE id < 123;
SELECT MIN(id) FROM foto WHERE id > 123;


ID's zijn echter niet heel logisch vanuit de gebruiker gezien. Chronologisch sorteren ligt meer voor de hand maar technisch ingewikkelder omdat meerdere foto's dezelfde datum en tijd kunnen hebben. Het makkelijkste is om de SQL-server het sorteren te laten doen met een query zoals deze waarbij je de gewenste volgorde van de foto's hebt en de eerste, vorige, huidige, volgende en laatste er makkelijk uit kan vissen.

SQL:
1
SELECT id FROM foto ORDER BY date, id ASC

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


Acties:
  • 0 Henk 'm!

  • cootje16
  • Registratie: Februari 2009
  • Laatst online: 13-09 09:39
De bedoeling is dus dat ik zegmaar naar de volgende afbeelding kan gaan , dus als ik nu klik op een afbeelding opent hij in een nieuw venster de afbeelding op ware grootte, daaronder moeten dus de woorden vorige en volgende komen om zo naar de vorige of volgende afbeelding te switchen. Nu heb ik ook al wat dingetjes gelezen over pagination (bedankt raynman) en ben daar wat dingen over door aan het lezen.

Acties:
  • 0 Henk 'm!

  • JefSnare
  • Registratie: Augustus 2007
  • Laatst online: 09-11-2020
Je kunt ook gewoon DESC of ASC je foto's sorteren op een id en dan een limit maken. Bijvoorbeeld onderstaande code die ik heb gebruikt voor paginatie.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function makePages($countqu, $current, $bb, $pagg){
    $num = mysql_fetch_array(
                   mysql_query("SELECT COUNT(*) FROM ".$countqu.""));
  if($num[0] > $pagg){
    $maxpage = round($num[0] / 2) -1;
        else{
            $varsort = '';
             }
        print '<p>Er zijn '.$num[0].' artikelen gevonden.<br/>';
        if($current > 1){
            $ter = $current - $pagg;
            print '<a href="/'.$bb.'&amp;arp='.$ter.''.$varsort.'">vorige</a> &bull; ';}
        if($current <= $maxpage){
            $vol = $current + $pagg;
            print '<a href="/'.$bb.'&amp;arp='.$vol.''.$varsort.'">volgende</a></p>';}
        else{ print 'Einde</p>';}
        }
}


In de functie wordt het aantal records berekend en gekeken hoeveel pagina's er nodig zijn, je kunt bijvoorbeeld een max aantal pagina's meegeven en dan wordt het maximaal te weergeven items weergeven en dan wordt automatisch de volgende pagina gemaakt. Alleen...deze functie is van een tijdje terug dus weet niet of het meteen werkt :X

Twitter Flickr


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 01:33

MueR

Admin Tweakers Discord

is niet lief

cootje16 schreef op vrijdag 20 november 2009 @ 13:36:
PHP:
1
2
3
4
5
$sql = "SELECT *
                 FROM 
                 categorie 
                 WHERE 
                 categorie_id = '" . addslashes($_GET['categorie_id']) . "'";
Addslashes? But why?! Ik neem tenminste aan dat je ID een nummer is. Intval volstaat dan prima hoor. Ook de SELECT * als je alleen maar bestandsnaam en id wil hebben? Why??

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • Raynman
  • Registratie: Augustus 2004
  • Laatst online: 00:45
cootje16 schreef op vrijdag 20 november 2009 @ 14:14:
De bedoeling is dus dat ik zegmaar naar de volgende afbeelding kan gaan , dus als ik nu klik op een afbeelding opent hij in een nieuw venster de afbeelding op ware grootte, daaronder moeten dus de woorden vorige en volgende komen om zo naar de vorige of volgende afbeelding te switchen. Nu heb ik ook al wat dingetjes gelezen over pagination (bedankt raynman) en ben daar wat dingen over door aan het lezen.
Dat is dus niet bepaald wat men met pagination bedoelt. Maar hierover heb je dus helemaal niets gezegd in de startpost. Hoe moeten wij dat dan weten? Je postte een stukje van een script dat alle foto's van een bepaalde categorie laat zien, dus dan is het logisch te denk dat je in dat overzicht iets met vorige/volgende wilt, wat dus tot een zogenaamd pagination-systeem leidt.

Nu blijkt dus dat je op een heel andere plek in je script iets wilt/moet wijzigen. Johnny zat wel in die richting te denken, dus kijk even naar zijn post, maar vergeet de term pagination voorlopig weer even. En als je dan nog hulp wilt, post wat relevante code en doe in elk geval zelf even een poging met wat je tot nu toe hebt.

Edit: je linkt nu zo te zien direct naar de foto's. Je wilt daar dan nog een HTML-pagina omheen bouwen, daarin zet je dan ook die vorige/volgende links.

[ Voor 5% gewijzigd door Raynman op 20-11-2009 14:28 ]

Pagina: 1