Gjest Slettet+6132 Skrevet 1. mars 2006 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
kakkle Skrevet 2. mars 2006 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
Gjest Slettet+6132 Skrevet 2. mars 2006 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
kakkle Skrevet 2. mars 2006 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...)
Gjest Slettet+6132 Skrevet 2. mars 2006 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
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å