Extra $var waarder aan Pagination function toevoegen.
Remco schrubben op 09/09/2012 13:45:27:
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.
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.
Ik maak hier uit op dat je meer dingen moet doen dan alleen pagination.
Ik ben heel nieuwsgierig naar het complete dbmodel (met name naar de top40_opties tabel).
Want, als ik (met enig cynisme) het volgende stel:
'Sjek Shag & Vloeikes' met 'Waarom Makkelijk Doen Als het Moelijk kan' staan 16 weken lang in de top 40 dus komen 16 keer met artiest en songtitle (en wellicht nog meer) in de top40_opties te staan.
Ik denk dat ik er dan niet ver naast zit.
Je zegt zelf dat je ook nog een beheer gedeelte gaat/moet maken, en ik weet niet of je veel moet omzetten (moet je bestaande tabellen gevuld met gegevens werken, dan zijn die zo omgezet), maar het levert je uiteindelijk een hoop voordelen op.
Tot slot,
Het maakt voor een transaction niets uit hoeveel tabellen er binnen die transaction gewijzigd worden. Daarnaast heb je ze in webapps bijna nooit nodig, het bezorgt je alleen maar extra werk en kost je performance.
Ger, je zet er niet ver naast. Admin is in eerder project al gedaan.Ik kan het snel genoeg ombouwen als ik een goed voorbeeld zou hebben hoe ik met meerdere tabellen kan werken. Als ik dat zou hebben kan ik de eigenaar wel overtuigen dat de uitloop voordeel kan opleveren. Het zou dan puur een INSERT voorbeeld hoeven zijn.
Gewijzigd op 09/09/2012 20:03:48 door Ger van Steenderen
Het hoeft dan niet persee met transaction, als er maar en terug val is als er een insert niet lukt op tabel zoals bij transactions.
1 tabel met alle artiesten/nummers (mocht er een nieuwe komen: toevoegen)
1 tabel met daarin jaar/week/lied-id/positie
En.... euh, nog meer? Nee, denk het niet. Wellicht een eigen tabel voor de artiesten.
Hoe voer je dit in? Ik neem aan toch wel geautomatiseerd vanaf de officiele Top40 vandaan? API of RSS oid.
En daar vraag ik een voorbeeld INSERT TO voor of eventueel een goede tut die over meerdere tabellen gaan. Tevens heeft Ger mij al een opzet gegeven voor een genormaliseerde DB.
--------------------------------------------------------------
Flip, Bedankt voor de stukjes code. Ik heb deze even getest, echter zie ik nergens een spoor van navigatie buttons op mijn scherm. Ook krijg ik geen error meldingen terug.
UP-date:
Zie dat hij helemaal niks meer weer geeft. Ook niet dat ik alles terug zet naar voor ik jou code probeerde in te voegen. Ik ga het even uitzoeken nog.
Toevoeging op 10/09/2012 05:30:34:
Op het moment iets verder gekomen met de code van Flip.
Alleen ik krijg de volgende notice:
Notice: Undefined offset: 21 in ../function/function.php on line 67
Notice: Undefined offset: 21 in ../function/function.php on line 68
Notice: Undefined offset: 21 in ../function/function.php on line 69
De code die hier bij hoort is:
Code (php)
1
2
3
2
3
$arg['jaar'] = $data[$counter-1]['top40.jaar'];
$arg['week'] = $data[$counter-1]['top40.weeknr'];
$arg['artiest'] = $data[$counter-1]['top40_optie.artiest'];
$arg['week'] = $data[$counter-1]['top40.weeknr'];
$arg['artiest'] = $data[$counter-1]['top40_optie.artiest'];
Tevens zie ik dat de url niet wordt opgebouwd.
De url die nu word gemaakt is:
Gewijzigd op 10/09/2012 05:39:42 door remco schrubben
Heeft iemand misschien nog enig idee hoe bovenstaande op te lossen?
En waarmee maak je de link/url? Daar moet je het zelf even zoeken.
Ga wat echoën om te kijken of je gegevens er zijn. Zo niet: zorg daar voor.
Code (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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<?php
function altPagination($sql, $url, $curpos, $query) {
/* $query is een assoc array
waarvan de key de waarde is die in de url komt
en de value de naam van het veld in de database
bv $query = array('page' => 'position_h', 'artiest' => 'artiest')
--------------------------------------------------------------------
$sql is de volledige query
--------------------------------------------------------------------
$url = 'index.php?' o.i.d.
*/
$result = mysql_query($sql);
if ($result !== false && mysql_num_rows($result) > 0) {
$arrResults = array();
while ($row = mysql_fetch_assoc($result)) {
$arrResults[] = $row;
}
$ul = '<ul class="pagination">';
$max = count($arrResults);
if ($curpos > 4) {
$ul .= '<li><a href="' . $url;
$amp = '';
foreach ($query as $key => $field) {
$ul .= $amp . $key . '=' . urlencode($arrResults[0][$field]);
$amp = '&';
// met dank aan Erwin H
}
$ul .= '">Eerste</a></li>';
}
if ($curpos > 1) {
$ul .= '<li><a href="' . $url;
$amp = '';
foreach ($query as $key => $field) {
$ul .= $amp . $key . '=' . urlencode($arrResults[$curpos-2][$field]);
$amp = '&';
}
$ul .= '">Vorige</a></li>';
}
$start = ($curpos - 5 > 0) ? $curpos - 5 : 1;
$end = $start + 8;
if ($end > $max) {
$end = $max;
$start = $end - 8;
}
for ($i = $start; $i <= $end; $i++) {
$ul .= '<li><a href="' . $url;
$amp = '';
foreach ($query as $key => $field) {
$ul .= $amp . $key . '=' . urlencode($arrResults[$i-1][$field]);
$amp = '&';
}
$ul .= '"' . ($i == $curpos) ? ' class="current"' : '' . '>' .
$i . '</a></li>';
}
if ($curpos < $max) {
$ul .= '<li><a href="' . $url;
$amp = '';
foreach ($query as $key => $field) {
$ul .= $amp . $key . '=' . urlencode($arrResults[$curpos][$field]);
$amp = '&';
}
$ul .= '">Volgende</a></li>';
}
if ($curpos < $max - 8) {
$ul .= '<li><a href="' . $url;
$amp = '';
foreach ($query as $key => $field) {
$ul .= $amp . $key . '=' . urlencode($arrResults[$max - 1][$field]);
$amp = '&';
}
$ul .= '">Laatste</a></li>';
}
$ul .= '</ul>';
return $ul;
}
return false;
}
?>
function altPagination($sql, $url, $curpos, $query) {
/* $query is een assoc array
waarvan de key de waarde is die in de url komt
en de value de naam van het veld in de database
bv $query = array('page' => 'position_h', 'artiest' => 'artiest')
--------------------------------------------------------------------
$sql is de volledige query
--------------------------------------------------------------------
$url = 'index.php?' o.i.d.
*/
$result = mysql_query($sql);
if ($result !== false && mysql_num_rows($result) > 0) {
$arrResults = array();
while ($row = mysql_fetch_assoc($result)) {
$arrResults[] = $row;
}
$ul = '<ul class="pagination">';
$max = count($arrResults);
if ($curpos > 4) {
$ul .= '<li><a href="' . $url;
$amp = '';
foreach ($query as $key => $field) {
$ul .= $amp . $key . '=' . urlencode($arrResults[0][$field]);
$amp = '&';
// met dank aan Erwin H
}
$ul .= '">Eerste</a></li>';
}
if ($curpos > 1) {
$ul .= '<li><a href="' . $url;
$amp = '';
foreach ($query as $key => $field) {
$ul .= $amp . $key . '=' . urlencode($arrResults[$curpos-2][$field]);
$amp = '&';
}
$ul .= '">Vorige</a></li>';
}
$start = ($curpos - 5 > 0) ? $curpos - 5 : 1;
$end = $start + 8;
if ($end > $max) {
$end = $max;
$start = $end - 8;
}
for ($i = $start; $i <= $end; $i++) {
$ul .= '<li><a href="' . $url;
$amp = '';
foreach ($query as $key => $field) {
$ul .= $amp . $key . '=' . urlencode($arrResults[$i-1][$field]);
$amp = '&';
}
$ul .= '"' . ($i == $curpos) ? ' class="current"' : '' . '>' .
$i . '</a></li>';
}
if ($curpos < $max) {
$ul .= '<li><a href="' . $url;
$amp = '';
foreach ($query as $key => $field) {
$ul .= $amp . $key . '=' . urlencode($arrResults[$curpos][$field]);
$amp = '&';
}
$ul .= '">Volgende</a></li>';
}
if ($curpos < $max - 8) {
$ul .= '<li><a href="' . $url;
$amp = '';
foreach ($query as $key => $field) {
$ul .= $amp . $key . '=' . urlencode($arrResults[$max - 1][$field]);
$amp = '&';
}
$ul .= '">Laatste</a></li>';
}
$ul .= '</ul>';
return $ul;
}
return false;
}
?>
Eigenlijk tegen mijn gewoonte in om het op die manier te doen.