Extra $var waarder aan Pagination function toevoegen.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Remco schrubben

remco schrubben

07/09/2012 00:15:27
Quote Anchor link
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.

Post eerst even hier de code's:
function.php
pagination.php

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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
index.php?p=top40_artiest&id=10&artiest=Jannes&week=36&page=5

Deze url geld dus voor navigation button 5
Alleen hoe vraag ik dit op in de pagination.php of function.php en hoe verwerk ik dit in de url.
 
PHP hulp

PHP hulp

19/04/2024 11:11:33
 
Flip --

Flip --

07/09/2012 03:05:50
Quote Anchor link
Eerste wat ik even kwijt moet:
Waarder -> waarde
Waarders -> waardes

"In de SELECT staat welke waarders eigenlijk mee gegeven moet worden aan de juiste navigation button."
Dus
top40_optie.id, top40_optie.positie_h, top40_optie.artiest, top40_optie.titel
moet meegegeven worden aan de navigatie knop die op dit moment geactiveerd is ?!
of anders welke waardes heb je het over ?

"Ook zal er dan 40 buttons gemaakt worden met een page= waarde".
Welke waarde?

"Navigatie button 10 = Positie 10"
Blijkbaar de positie waarde. Dus top40_optie.positie_h uit je select ...

"Nu moet de door de function gemaakte url overige waarde worden toegevoegd om de juiste gegevens te verkrijgen bij de weergave."
Overige waardes? top40_optie.artiest, top40_optie.titel misschien?
Waaraan moeten deze worden toegevoegd ? Aan een knop?


De gegevens zijn niet beschikbaar in je pagination functie omdat je ze simpelweg nooit beschikbaar stelt.
Je doet eerst voordat je je pagination functie aanroept alle resultaten ophalen inclusief gegevens.
Daarna in je pagination functie doe je dezelfde query nog eens maar dan alleen om het aantal resultaten te tellen.

Je moet gewoon 1x alle gegevens ophalen, deze beschikbaar stellen in je pagination functie (bijvoorbeeld door het $result door te geven).
En dan om het aantal rijen te krijgen niet weer dezelfde query doen. Je kan het aantal rijen halen uit je $result of anders mysql_num_rows.

---

Je code is lastig te begrijpen en je vraagstelling & uitleg is ook lastig te begrijpen.
Wat je hier hebt gemaakt is echt super omslachtig. Je doet er goed aan om verschillende onderdelen van je code beter te scheiden.

---

Laat anders je HTML zien, je database structuur (en ook voorbeelden van data), je volledige query. Misschien als ik zin heb maak ik wel een script.
Gewijzigd op 07/09/2012 03:10:42 door Flip --
 
Eddy E

Eddy E

07/09/2012 09:11:26
Quote Anchor link
Flip -- op 07/09/2012 03:05:50:
Eerste wat ik even kwijt moet:
Waarder -> waarde
Waarders -> waardes


Doe het dan goed:

Waarder = waarde
Waarders = waarden. Ook al is waardes ook goed, waarden heeft de voorkeur.

Zie http://www.vandale.nl/opzoeken?pattern=waarde&lang=nn
Gewijzigd op 07/09/2012 09:12:14 door Eddy E
 
Ozzie PHP

Ozzie PHP

07/09/2012 09:28:45
Quote Anchor link
Eddy, misschien eerst even je huiswerk goed doen? (jij bent leraar toch?)

Het gaat hier om "waarde" als zijnde een waarde die je ergens aan toekent. Waardes is dan een prima meervoudsvorm. Sterker nog, bij de link die jij geeft zie je bij de 4e definitie als eerste meervoudsvorm "waardes" staan.

Kortom: je slaat de plank behoorlijk mis.
 
Eddy E

Eddy E

07/09/2012 09:40:22
Quote Anchor link
Huiswerk gedaan: heb zelfs opgezocht wat de voorkeur heeft: waarden ;).
En niet alleen in het geval van de normen en waarden of de herbergier ;).

Dat het bij Van Dale vooraan staat zegt niets, aldus Van Dale.
Groene boekje zet waarden vooraan: http://woordenlijst.org/zoek/?q=waardes&w=w
Gewijzigd op 07/09/2012 09:42:43 door Eddy E
 
Ozzie PHP

Ozzie PHP

07/09/2012 09:47:22
Quote Anchor link
Groene boekje zet waarden vooraan, Van Dale zet waardes vooraan? Dus....

Waar staat dat "waarden" de voorkeur heeft? Ik kan dat nergens vinden...
 
Eddy E

Eddy E

07/09/2012 11:34:34
Quote Anchor link
Ik heb het Groene Boekje hier liggen en daarin staat dat de "n" klank in dit soort gevallen vaak de voorkeur heeft, puur omdat het het meeste wordt gebruikt. Denk aan "Waarden en normen" wat je goed kan vertalen naar "Inhouden en normen" en dus niet naar "Herbergiers en normen".

Helaas kan ik dat stukje niet online vinden :(


Maar goed: laten we het weer even over het PHP-script hebben...... ook al geeft Flip heel wat goede punten aan. Zonder reactie van de topicstarter kan ik (en wil ik) er ook niet veel verder mee gaan.

Toevoeging op 07/09/2012 11:35:16:

Nog wel een puntje: http://translate.google.nl/#en/nl/values :D
 
Remco schrubben

remco schrubben

07/09/2012 11:43:14
Quote Anchor link
Voor op stellend. Vind dat er te veel gehamert word op kleine spellings fouten. Er word totaal geen rekening gehouden met mensen die misschien wel dislectie hebben. En die mensen juist hun best doen im in de code of uitleg de fouten zo minimaal nodig proberen te houden.

On-Topic:
Ik heb deze script niet zelf gemaakt, ook vind ik de html uitkomst niet van belang in deze vraag stelling. Omdat het een vraag is over php en niet html.

Flip, ik bedoel idd de waarden die jij opnoemt in je topic.
Deze moeten aan de url mee gegeven worden. De waarde die page= heeft staan gelijk aan de positie van de track.
 
Eddy E

Eddy E

07/09/2012 11:50:22
Quote Anchor link
Er wordt wellicht veel gehamerd op spellingsfouten omdat dit tegenwoordig (op werkwoordsspelling na dan) niet meer nodig is. Alle browers hebben een goede spellingscontrole. Waarders zal dan als foutief worden aangegeven. Dit is ook geen schrijf- of stelfout, maar een verkeerde woordkeus.
Er wordt toch van iedereen verwacht dat hij/zij correct schrijft? Hier ging het wel heel ver over een goede s of n. Daar heb je wel een punt in.


Als tip: kijk eens naar http_build_query(). Daarmee maak je redelijk makkelijk complexere URL's. Gooi al je waarden in een array (als die daar nog niet in staan) en gooi die eens door de functie.
Let wel dat er een maximumlengte is aan de URL. Ik dacht (uit mijn hoofd) 256 tekens.
 
Ozzie PHP

Ozzie PHP

07/09/2012 11:51:31
Quote Anchor link
Eddy Erkelens op 07/09/2012 11:34:34:
Denk aan "Waarden en normen" wat je goed kan vertalen naar "Inhouden en normen" en dus niet naar "Herbergiers en normen".

Waarden heeft in bovengenoemde context een andere betekenis dan jij doet suggereren.

Eddy Erkelens op 07/09/2012 11:34:34:
Helaas kan ik dat stukje niet online vinden :(

Scannen! Ik ben benieuwd naar jouw onomstotelijk bewijs :)

Remco schrubben op 07/09/2012 11:43:14:
Voor op stellend. Vooropgesteld, Vind ik vind dat er te veel gehamert gehamerd word wordt op kleine spellings fouten spelfouten. Er word wordt totaal geen rekening gehouden met mensen die misschien wel dislectie hebben. En die mensen juist hun best doen doen juist hun best im om in de code of uitleg de fouten zo minimaal nodig proberen mogelijk te houden.

On-Topic:
Ik heb deze dit script niet zelf gemaakt, ook. Ook vind ik de html uitkomst niet van belang in deze vraag stelling vraagstelling. Omdat het een vraag is over php en niet html.

Flip, ik bedoel idd de waarden die jij opnoemt in je topic.
Deze moeten aan de url mee gegeven meegegeven worden. De waarde die page= heeft staan gelijk aan de positie van de track.

Ach je kunt het ook overdrijven he? Dit is echt niet allemaal aan mogelijke dislectie te wijten. Lees je stukje gewoon eerst even goed door, voordat je het definitief plaatst.
Gewijzigd op 07/09/2012 11:52:22 door Ozzie PHP
 
Flip --

Flip --

07/09/2012 11:52:43
Quote Anchor link
remco, wat die function allemaal uitpoept aan html code dat is voor mij niet te volgen. Ik ga ook niet kijken welke condities waar zijn of niet en dan bedenken hoe de html er uiteindelijk uit moet komen te zien. Je gewenste resultaat in html zou als nog van pas komen.

Ik zou de artiest en de titel niet meegeven in je url want, ik neem aan, dat als je de week weet en je weet de positie dat deze twee gegevens voldoende zijn om op te zoeken welke artiest en titel hierbij horen.

Verder blijft mijn vorige punt overeind:
Je gebruikt twee queries terwijl dit onnodig is.
Gewijzigd op 07/09/2012 11:55:04 door Flip --
 
Remco schrubben

remco schrubben

07/09/2012 12:54:11
Quote Anchor link
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.
 
Flip --

Flip --

07/09/2012 12:57:13
Quote Anchor link
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.
 
Remco schrubben

remco schrubben

07/09/2012 13:08:43
Quote Anchor link
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.
 
Remco schrubben

remco schrubben

09/09/2012 01:57:24
Quote Anchor link
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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
index.php?jaar=2012&week=36&artiest=Dana_Winner&page=39

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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
+------------------------+
|       table top40      |
+--------+------+--------+
| t40_id | jaar | weeknr |
+--------+------+--------+
|    1   | 2012 |   36   |
+--------+------+--------+

+---------------------------------------+
|          table top40_optie            |
+----+--------+-----------+-------------+
| id | t40_id | positie_h |   artiest   |
+----+--------+-----------+-------------+
| 39 |    1   |    39     | Dana Winner |
+----+--------+-----------+-------------+


Uit eindelijke URL:
De url die de pagination uit schrijft in HTML is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
index.php?jaar=2012&week=36&artiest=Dana_Winner&page=39

Gewenste url die ik door .htaccess omzet is
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
http://www.website.nl/top40/2012/36/Dana_Winner/39

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.
Gewijzigd op 09/09/2012 02:45:22 door remco schrubben
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

09/09/2012 10:35:30
Quote Anchor link
Remco schrubben op 09/09/2012 01:57:24:
Hier even een uit geklede database model. Ik heb alleen relevante velden laten staan.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
+------------------------+
|       table top40      |
+--------+------+--------+
| t40_id | jaar | weeknr |
+--------+------+--------+
|    1   | 2012 |   36   |
+--------+------+--------+

+---------------------------------------+
|          table top40_optie            |
+----+--------+-----------+-------------+
| id | t40_id | positie_h |   artiest   |
+----+--------+-----------+-------------+
| 39 |    1   |    39     | Dana Winner |
+----+--------+-----------+-------------+

Ik denk dat je beter wat verder kunt door normaliseren:
Tabel top40
- t40_id
- jaar
- week

Tabel top40_pos
- t40_id(PK)
- pos_h(PK)
- song_id

Tabel songs
- song_id
- artist_id
- song_title

Tabel artists
- artist_id
- artist_name

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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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.
Gewijzigd op 09/09/2012 13:19:17 door Ger van Steenderen
 
Remco schrubben

remco schrubben

09/09/2012 12:53:15
Quote Anchor link
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.
 
Wouter J

Wouter J

09/09/2012 12:56:03
Quote Anchor link
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.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

09/09/2012 13:38:11
Quote Anchor link
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.
Gewijzigd op 09/09/2012 13:39:22 door Ger van Steenderen
 
Remco schrubben

remco schrubben

09/09/2012 13:45:27
Quote Anchor link
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.
 
Flip --

Flip --

09/09/2012 14:30:16
Quote Anchor link
http://plaatscode.be/141899/

hier invoegen tussen regel 25 en 26:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
top40.jaar,
top40.weeknr,


tussen regel 48 en 49:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$data
= array();
while ($data[] = mysql_fetch_assoc($result)) {};
?>


Regel 53 veranderen in:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$pagination
= pagination($data, $statement,$limit,$page);
?>


----

http://plaatscode.be/141900/

Regel 2 veranderen in:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
function pagination($data, $query, $per_page = 10,$page = 1, $url = '?')
?>


Regel 29, 41, 57, 73 vervangen door de volgende regels:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?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, '', '&amp;');
$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 ..
Gewijzigd op 09/09/2012 14:48:09 door Flip --
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.