Ik heb een Pagination function die wel goed werkt.
Ik had eerst een probleem om de positie mee te geven om zo de juiste navigation button current te krijgen. Na dit opgelost te hebben kom ik nu niet verder met overige waarders.
Op pagination.php zien we een query staan die enige info ophaalt uit de url met de $_GET waarder. In de SELECT staat welke waarders eigenlijk mee gegeven moet worden aan de juiste navigation button. Alleen weet ik niet hoe ik dit voor elkaar moet krijgen. Dit is mede omdat ik niet zoveel met functions heb gewerkt.
Wat er eigenlijk zal moeten gebeuren is het volgende.
De function zal altijd 40 row's tellen van de huidige week.
Ook zal er dan 40 buttons gemaakt worden met een page= waarde. Deze page= waarde is gelijk aan de positie van het nummer.
Dus voorbeeld:
Navigatie button 10 = Positie 10
Navigatie button 36 = Positie 36
Nu moet de door de function gemaakte url overige waarde worden toegevoegd om de juiste gegevens te verkrijgen bij de weergave.
De url die eigenlijk zou gemaakt moeten worden is:
Flip, ik zal zodra ik weer achter de pc zit een overzicht maken van wat de function aan html maakt. Deze post ik dan weer even op plaatscode.be voor de duidelijkheid er van.
Titel is ook nog niet heel erg noodzakelijk om mee te geven in url. Alleen de Artiest zou ik wel graag mee hebben in de url. Altans de artiest naam zal zichtbaar moeten zijn op het moment de info pagina van die artiest ook zichtbaar is, dit voor de google enz...
Zodra ik dus achter thuis pc zit zal ik code posten.
Je neemt aan dat meer GET variabelen in je URL je gaat helpen bij SEO. Ik betwijfel dit ten zeerste. Verder vind ik het persoonlijk geen best practise om redundante informatie in je url te zetten.
Daar ben ik deels met je eens. Ik ga er niet vanuit dat het mij gaat helpen bij SEO, want hoe meer GET je in url zet hoe minder hier op ingesprongen word door Google enz... Alleen voor netheid en het eventueel duidelijkheid bij delen van de url kan dit wel handig zijn. Vandaar ik dan ook eigenlijk die gegevens in de url mee wil laten lopen.
Zoals gezegd zal ik zodra ik thuis ben de html posten die de functie nu maakt en eventueel gewenste html code die ik zou willen krijgen.
Flip, ten eerste even mijn excuses voor het late reageren op het probleem.
Door even drukte kon ik niet eerder reageren.
Maar zoals besproken heb ik even op plaatscode.be 2 voorbeelden gezet.
Voorbeeld HTML code:
1e is het HTML deel die nu wordt gemaakt door de function.php Klik
2e is het HTML deel zoals ik hem zou verwachten/willen. Klik
Overige uitleg:
Zoals je ziet in het 2e voorbeeld zijn er extra $vars in de url.
jaar - week en artiest. Deze komen overeen met de velden in de database.
We zien ook de $var &page=39 staan. De page= wordt gebruikt voor de funtion.php om de pagina nummer te achter halen. Maar.... die 39 heeft eigenlijk 2 functie's.
- Functie 1 - Voor de function.php is dit de pagina nummer.
- Functie 2 - Voor de query en de database betekend de 39 de positie van de artiest in de week 36 en jaar 2012.
Voorbeeld database table:
Hier even een uit geklede database model. Ik heb alleen relevante velden laten staan.
Ik hoop dat je hiermee iets meer info en inzicht hebt gekregen van het geen wat ik wil bereiken. Mocht je nog wat info nodig zijn, laat het mij weten en ik regel de info.
Je kan zelfs de twee eerste tabellen kunnen samenvoegen tot één (als de eerste tabel alleen die informatie bevat die je nu toont):
Tabel top40
- week(PK)
- jaar(PK)
- pos_h(PK)
- song_id
Je krijgt dan deze query om de top 40 van een bepaald week/jaar op te halen:
SELECT
t.week,
t.jaar,
t.pos_h,
s.song_title,
a.artist_name
FROM
top40 AS t
INNER JOIN
songs AS s ON t.song_id = s.song_id
INNER JOIN
artists AS a ON s.artist_id = a.artist_id
WHERE
week = 36
AND
jaar = 2012
ORDER BY
t.pos_h
Met een beetje slimme SQL kan je zelfs die 'pagination' ook in de query samenstellen.
[/code]
Ger, bedankt voor de reactie.
Alleen ik ben al blij dat ik kan werken met 2 table. Laat staan dat ik met 4 moet gaan werken. Mijn kennis is daar helaas niet goed genoeg voor om jou voorbeeld te kunnen uitwerken.
Je bent er toch om te leren? Verdiep je eens erin en ga eens rustig af wat ger zegt, dan moet je er wel uit komen.
Als je aan alles in het leven begint met 'kan ik niet' zul je nooit ergens komen, ga de uitdaging aan en probeer het gewoon! Queries heeft GER al bijna gegeven, ga elk keyword die je niet begrijpt (JOIN bijv. of ORDER BY) opzoeken en zo leren dat je het wel gaat begrijpen.
Ik heb de query aangepast want er stonden 2 fouten in :(
Ik heb ook de JOIN voorwaarden anders uitgeschreven, maakt het iets duidelijker (denk ik).
Ik ben bij de query trouwens gebaseerd op het model met 3 tabellen, dus de eerste twee heb ik samengevoegd.
Dit heet dus normaliseren, heel belangrijk bij het gebruik van databases.
Het gaat er niet om dat ik niet snap hoe die query werkt.
Het gaat er om, dat ik alleen een pagination moet maken voor de eigenaar en dus niet een heel script kan gaan herschrijven.
Ook gaat het er om dat ik in een korte tijd nooit kan leren hoe ik de gegevens in de tabellen ga krijgen zodra ik deze met een admin ga invoeren. Ik heb net het gebruik van transaction onder de knie voor 2 tabellen.
Kort gezegd: Gaat het niet om het stukje leren van nieuwe dingen, maar gaat het er om dat ik de tijd en ruimte niet heb van de eigenaar om alles om te gooien.
Regel 2 veranderen in:
<?php
function pagination($data, $query, $per_page = 10,$page = 1, $url = '?')
?>
Regel 29, 41, 57, 73 vervangen door de volgende regels:
<?php
$arg['jaar'] = $data[$counter-1]['top40.jaar'];
$arg['week'] = $data[$counter-1]['top40.weeknr'];
$arg['artiest'] = $data[$counter-1]['top40_optie.artiest'];
$arg['page'] = $counter;
$url2 = http_build_query($arg, '', '&');
$pagination.= '<li><a href="'.$url.$url2.'">'.$counter.'</a></li>';
?>
----
Echt een vieze oplossing dit,
echt echt ECHT slecht.
Dit is pruts werk.
Zou wel moeten werken.
Waarom is dit een slechte oplossing?
1. onnodige queries
2. geen database normalisatie
3. langere URL's terwijl dit niet nodig is
4. code ziet er niet uit (valt slecht te begrijpen / slecht te onderhouden)
5. pagination functie van het internet halen -> je hebt het zelf niet geschreven, je snapt het niet
6. ...
7. .. etc ..