Gjest Slettet+6132 Skrevet 1. mars 2006 Del Skrevet 1. mars 2006 (endret) Jeg sitter her og soser med mitt lille prosjekt, men "paging"-funksjonen min er ikke helt habil <? function dvd_get($start = 0) { global $config, $lng; $start = str_replace("-", "", $start); $start = htmlspecialchars($start); $start = mysql_real_escape_string($start); $start = intval($start); if(!isset($start)) { $start = 0; } if(!isset($next)) { // Et tall satt i config som sier hvor mange dvder det skal på hver side $next = $config['dvd_count']; } $query = mysql_query("SELECT * FROM dvd WHERE owner= '{$_SESSION['id']}' ORDER BY `collection` ASC, `colnum` ASC, `title` ASC LIMIT {$start},{$next}") or die('Query failed: ' . mysql_error()); if(mysql_num_rows($query) < $config['dvd_count']) { $count_to = mysql_num_rows($query); $nonext = 1; } else { $count_to = $config['dvd_count']; } if(!isset($start)) { $start = 0; $count = $count_to; } else { if(is_numeric($start)) { $count = $count_to + $start; } } if(is_numeric($start)) { $previous = $start - $count_to; $next = $count_to + $start; } $started = $start; // Her er det noe output før uthenting av data if(mysql_num_rows($query) > 0) { while($start < $count) { $row = mysql_fetch_assoc($query); // Her printes alt ut $start++; } } else { // Output hvis det ikke er noe info å printe } echo " </table>\n\n"; echo " <div class=\"text\">\n"; echo " <p style=\"margin-top: 10px;\">\n"; if($started != 0) { echo " <a href=\"{$config['baseurl']}index.php?module=dvd&action=read&target=all&start={$previous}\"><< Previous</a> -\n"; } else { echo " << Previous -\n"; } if($nonext != 1) { echo " <a href=\"{$config['baseurl']}index.php?module=dvd&action=read&target=all&start={$next}\">Next >></a>\n"; } else { echo " Next >>\n"; } echo " </p>\n"; echo " </div>\n"; } ?> Noen forslag til endringer? Jeg står helt fast :/ EDIT: Slik den er nå fungerer den flott med "neste", men det begynner å krølle seg når jeg kommer til siste siden og trykker "tilbake" Endret 1. mars 2006 av Slettet+6132 Lenke til kommentar
Gjest Slettet+6132 Skrevet 2. mars 2006 Del Skrevet 2. mars 2006 Bumper tråden litt jeg Lenke til kommentar
kakkle Skrevet 2. mars 2006 Del Skrevet 2. mars 2006 (endret) Okei.. Kan komme med noen kommentarer, ihvertfall... 1. Denne er vel strengt tatt unødvendig: if(!isset($start)) { $start = 0; } $start vil jo alltid være satt, i og med at den blir satt til 0, dersom den ikke blir satt i kallet til funksjonen... 2. Denne snutten skjønner jeg ikke helt heller vitsen med: if(!isset($start)) { $start = 0; $count = $count_to; } else { if(is_numeric($start)) { $count = $count_to + $start; } } $started = $start; Som sagt så vil vel alltid $start være satt... Kan du gi et eksempel på hvordan du kaller denne funksjoen ? EDIT: Ble mye krøll her.. Endret 2. mars 2006 av kakkle Lenke til kommentar
Gjest Slettet+6132 Skrevet 2. mars 2006 Del Skrevet 2. mars 2006 Okei..Kan komme med noen kommentarer, ihvertfall... 1. Denne er vel strengt tatt unødvendig: *snip* $start vil jo alltid være satt, i og med at den blir satt til 0, dersom den ikke blir satt i kallet til funksjonen... 2. Denne snutten skjønner jeg ikke helt heller vitsen med: *snip* Som sagt så vil vel alltid $start være satt... Kan du gi et eksempel på hvordan du kaller denne funksjoen ? EDIT: Ble mye krøll her.. 5689796[/snapback] Jeg vet det er mye unødvendig der, jeg skrev funksjonen for veldig lenge siden da mine php-kunnskaper var meget mindre enn i dag Funksjonen kalles fra index.php som er hele hovedfila i systemet. (Om du vil ta en titt på hele opplegget i sin helhet kan du sjekke ut linken i signaturen min.) *snip* case "dvd": if(auth()) { switch($_GET['action']) { case "read": switch($_GET['target']) { case "all": if(isset($_GET['msg'])) { echo page($_GET['msg']); } dvd_searchform(); dvd_get($_GET['start']); break; *snip* Det er en del av index.php hvor funksjonen blir brukt. Har også prøvd å søke meg frem til andre måter å gjøre paging-funksjonen på, men problemet kommer i det med å få hente ut så og så mange rader samtidig som å finne ut hvilken side det skal være o.l. Jeg har en tendens til å tenke for avansert slik at jeg bare kalger krøll for meg selv Lenke til kommentar
kakkle Skrevet 2. mars 2006 Del Skrevet 2. mars 2006 Okei... Skal prøve å endre litt på funksjonen din: <? function dvd_get($start = 0) { global $config, $lng; $start = intval($start); if(!isset($next)) { // Et tall satt i config som sier hvor mange dvder det skal på hver side $next = $config['dvd_count']; } $sql = "SELECT COUNT(*) AS ant FROM dvd WHERE owner='{$_SESSION['id']}"; $query = mysql_query($sql) or die ("ERROR in query: $sql<br>".mysql_error()); $row = mysql_fetch_array($query); $ant = $row["ant"]; // antall dvder totalt for den aktuelle eier $sql = "SELECT * FROM dvd WHERE owner= '{$_SESSION['id']}' ORDER BY `collection` ASC, `colnum` ASC, `title` ASC LIMIT {$start},{$next}"; $query = mysql_query($sql) or die('Query failed: $sql<br>' . mysql_error()); // Her er det noe output før uthenting av data if($ant > 0) { while($row = mysql_fetch_assoc($query)){ // Her printes alt ut } //while } //if else { // Output hvis det ikke er noe info å printe } echo " </table>\n\n"; echo " <div class=\"text\">\n"; echo " <p style=\"margin-top: 10px;\">\n"; if($start > 0) { $previous = $start - $next; echo "<a href=\"{$config['baseurl']}index.php?module=dvd&action=read&target=all&start={$previous}\"><< Previous</a> -\n"; } else { // Her trenger du vel forsåvidt ingenting ? } if($ant > ($next+$start)) // Dersom det er flere dvd enn det som skal være pr side { $nestestart = $start+$next; echo "<a href=\"{$config['baseurl']}index.php?module=dvd&action=read&target=all&start={$nestestart}\">Next >></a>\n"; } else { //Her trenger du vel heller ingenting ? } echo " </p>\n"; echo " </div>\n"; } ?> Koden er slett ikke testet... Det forutsetter at $config["dvd_count"] inneholder hvor mange dvd'er som skal vises pr side.. Spør hvis du lurer på... Kan være masse småfeil i koden (Er litt vanskelig å få oversikten i et lite tekstfelt...) Lenke til kommentar
Gjest Slettet+6132 Skrevet 2. mars 2006 Del Skrevet 2. mars 2006 Okei... Skal prøve å endre litt på funksjonen din:*snip* Koden er slett ikke testet... Det forutsetter at $config["dvd_count"] inneholder hvor mange dvd'er som skal vises pr side.. Spør hvis du lurer på... Kan være masse småfeil i koden (Er litt vanskelig å få oversikten i et lite tekstfelt...) 5690723[/snapback] Takk for tilbakemelding, skal prøve litt senere. $config["dvd_count"] forteller hvor mange dvder som skal vises per side ja Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå