MatteMedlem sedan aug. 20002 975 inlägg Det som fungerar med äldre typ av kod fungerar för det mesta i nyare versioner av PHP.
Något du inte har, men som du borde ha haft, är länkar, fast de skulle visa fel.
Av någon anledning blir det fel när du ska hämta antalet rader. Vet inte om detta beror på PHP-versionen.
Vi gör några ändringar.
1. Ändra ditt sökformulär till method="get"
2. Ändra följande kod
// Hämta först antalet rader i resultatet
$sql="SELECT COUNT(*) FROM trehjulinggb WHERE namn LIKE '%$namn%'
AND mail LIKE '%$mail%' AND datum LIKE '%$datum%'";
$result=mysql_query($sql);
$rows_tot = mysql_result($result, 0);
Till
// Hämta först antalet rader i resultatet
$sql="SELECT COUNT(*) AS row_tot FROM trehjulinggb WHERE namn LIKE '%$namn%'
AND mail LIKE '%$mail%' AND datum LIKE '%$datum%'";
$result=mysql_query($sql);
$rows_tot = mysql_result($result, 0, 'row_tot');
3. Ändra funktionen paginglinks till:
function paginglinks($page, $pages_tot) {
global $HTTP_SERVER_VARS['QUERY_STRING'];
// Paging-länkar, ta bort/ändra det du inte vill ha
// Hämtar QUERY_STRING och tar bort page från den
$getvar = $HTTP_SERVER_VARS['QUERY_STRING'];
$search = "/(^page=\\d*&?|&page=\\d*)/i";
$getvar = preg_replace($search, "", $getvar);
if ($getvar != "" && $page != 0) $getvar = "&".$getvar;
// Skriv ut vilken sida man är på
echo "Sidan ".($page + 1)." av ".($pages_tot + 1)." <br>\n";
if ($page > 0) { // Om man inte är på första sidan visas dom här länkarna
echo "<a href=\"$PHP_SELF?$getvar\">Första</a> ";
echo "<a href=\"$PHP_SELF?page=" . ($page - 1) . "$getvar\">Föregående</a> | ";
} else {
echo "Första ";
echo "Föregående | ";
}
if($pages_tot > 0) { // Skriver ut länkar till alla sidor om det är fler än 1 sida
for($i = 0; $i <= $pages_tot; $i++) {
if($i == $page) {
echo " " . ($i + 1) . " ";
} else {
echo " <a href=\"$PHP_SELF?page=$i$getvar\">" . ($i + 1) . "</a> ";
}
}
} else {
echo " 1 ";
}
if ($page < $pages_tot) { // Om man inte är på sista sidan visas dom här länkarna
echo " | <a href=\"$PHP_SELF?page=" . ($page + 1) . "$getvar\">Nästa</a> ";
echo "<a href=\"$PHP_SELF?page=$pages_tot$getvar\">Sista</a>";
} else {
echo " | Nästa ";
echo "Sista";
}
} // Slut funktion
[EDIT]
Glömmer alltid lägga på dubbla backslash för att det ska bli enkelt backslash när man sparar. Fixat nu.
RickardMedlem sedan maj 2001287 inlägg ööh...
hmm...
Parse error: parse error, expecting `','' or `';'' in /home/noratx/public_html/ricky/search.php on line 184
Rad 184:
global $HTTP_SERVER_VARS['QUERY_STRING'];
Vad jag kan se så har vi ett semikolon där.. eller är det något annat som är müssli som jag inte kan se? =)
MatteMedlem sedan aug. 20002 975 inlägg Fel av mig. Ska vara
global $HTTP_SERVER_VARS;
RickardMedlem sedan maj 2001287 inlägg mumma mumma...
du är en guldgruva.. vet du det?
Tackar så hemskt mycket för den mycket snabba och fina hjälpen.. =)
RickardMedlem sedan maj 2001287 inlägg det var bara en liten sak till som jag inte har tänkt på... =)
Just nu listar den upp allt från ID 1 och ner (dvs. sista ID't är på sista sidan).. hur tusan ändrar man så den listar allt tvärt om?
Har pillat med det förut... sort by DESC är ju ett sätt.. men för att få det tvärt om, som ovan beskrivet... det mins jag inte... =)
MatteMedlem sedan aug. 20002 975 inlägg Först vill jag rätta till funktionen paginglinks lite:
function paginglinks($page, $pages_tot) {
global $HTTP_SERVER_VARS;
// Paging-länkar, ta bort/ändra det du inte vill ha
// Hämtar QUERY_STRING och tar bort page från den
$getvar = $HTTP_SERVER_VARS['QUERY_STRING'];
$search = "/(^page=\\d*&?|&page=\\d*)/i";
$getvar = preg_replace($search, "", $getvar);
if ($getvar != "") $getvar = "&".$getvar;
// Skriv ut vilken sida man är på
echo "Sidan ".($page + 1)." av ".($pages_tot + 1)." <br>\n";
if ($page > 0) { // Om man inte är på första sidan visas dom här länkarna
echo "<a href=\"$PHP_SELF?page=0$getvar\">Första</a> ";
echo "<a href=\"$PHP_SELF?page=" . ($page - 1) . "$getvar\">Föregående</a> | ";
} else {
echo "Första ";
echo "Föregående | ";
}
if($pages_tot > 0) { // Skriver ut länkar till alla sidor om det är fler än 1 sida
for($i = 0; $i <= $pages_tot; $i++) {
if($i == $page) {
echo " " . ($i + 1) . " ";
} else {
echo " <a href=\"$PHP_SELF?page=$i$getvar\">" . ($i + 1) . "</a> ";
}
}
} else {
echo " 1 ";
}
if ($page < $pages_tot) { // Om man inte är på sista sidan visas dom här länkarna
echo " | <a href=\"$PHP_SELF?page=" . ($page + 1) . "$getvar\">Nästa</a> ";
echo "<a href=\"$PHP_SELF?page=$pages_tot$getvar\">Sista</a>";
} else {
echo " | Nästa ";
echo "Sista";
}
}
Och sedan sorteringen:
// Hämta rader och skriv ut
$sql = "SELECT * FROM trehjulinggb WHERE namn LIKE '%$namn%'
AND mail LIKE '%$mail%' AND datum LIKE '%$datum%'
ORDER BY id DESC LIMIT $start,$limit";
Du kan köra 'ORDER BY datum DESC' som ett alternativ.
[EDIT]
Fixade tillbaka de strippade backslashen i regexpen.
RickardMedlem sedan maj 2001287 inlägg heh...
global $HTTP_SERVER_VARS['QUERY_STRING'];
Den där kom vi ju överäns om att den inte funkade som förväntat... =)
MatteMedlem sedan aug. 20002 975 inlägg
Rickard skrev:
heh...
global $HTTP_SERVER_VARS['QUERY_STRING'];
Den där kom vi ju överäns om att den inte funkade som förväntat... =)
Nu förstår jag inte :q
Hehe, det går lite för fort ibland när man klipper och klistrar :e
RickardMedlem sedan maj 2001287 inlägg titta på sidan ett... sammanlaggt 5 postningar härifrån... =)
global $HTTP_SERVER_VARS['QUERY_STRING'];
bytte vi ut mot :
global $HTTP_SERVER_VARS;
=)
MatteMedlem sedan aug. 20002 975 inlägg
Matte skrev:
Hehe, det går lite för fort ibland när man klipper och klistrar :e
Jodå, jag är medveten om det. Klippte klistrade min gamla kod för ändringar, och missade det. :)
Hur funkar det annars nu?
RickardMedlem sedan maj 2001287 inlägg hehe.. ok... =)
jorå.. det fungerar utmärkt... precis så som jag ville ha det... =)
Nu ska jag bara klippa å klistra lite så föra över det till gästboksdelen där besökarna får skriva...
Just den här delen ingår i ett administrations-gränssnitt... =)
Sen ska jag bara klura ut ett sätt att kunna snabbt och smidigt radera ett inlägg genom att bara knappa in id't i ett fält.. eller ännu bättre, lägga en göra en länk av ID siffran som visas nu för att få inlägget raderat.. =)
Förhoppningsvis klarar jag det på egen hand... =)
MatteMedlem sedan aug. 20002 975 inlägg Parse error: parse error, expecting `']'' in /home/noratx/public_html/ricky/search.php on line 137
Därför jag undrade :)
RickardMedlem sedan maj 2001287 inlägg *heh* jo...
Jag döpte om till html å drog in scriptet i frontpage för en liten omstrukturering på ett par bilder... (ser nästan i kors så jag ser inte reiktigt vad det står på vissa ställen)..
Å tror du inte att frontpage slog runt å ändrade massa grejor, bytte " mot "e etc...
men det funkar nu igen.. reload bara.. =)
är trött som en tok å måste få klart detta så snart som möjligt.. =)
MatteMedlem sedan aug. 20002 975 inlägg Då ska inte jag störa mer :)
Ett litet förslag bara.
Ha dina paginglänkar i överkant också. Då behöver man inte rulla på sidan för att bläddra mellan sidorna.
RickardMedlem sedan maj 2001287 inlägg Hmm.. om du tittar nu i
http://server.midnight-sun.org:82/~noratx/ricky/guestbook/index.phps
så ser du ju hur det är strukturerat där....
Sitter å funderar på var jag kan klämma in pagingen där? För den typ av paging jag har där fullkommligt suger...
iomed att jag inte har några gobala variabler i början där och därmed inte har nånstans att deklarera $page i globals...
*fundera* har du någon ide? =)
RickardMedlem sedan maj 2001287 inlägg heh, du gör allt annat än å stör... =)
Å du behöver absolut inte ta itu med problem nummer två.. det kan jag säkert lösa själv förr eller senare... =)
Men du ska ha ett stort tack för hjälpen... verkligen. =)
MatteMedlem sedan aug. 20002 975 inlägg Ligger det inte i en funktion så behöver du inte globaldeklarera någonting.
Du gör i princip på samma sätt.
1. Räkna antalet rader som du hämtar. Samma kriterier som när du sedan listar
2. Bestäm hur många du vill visa per sida
3. Räkna ut hur många sidor det blir
4. Kolla om du har variabeln $page och att den är i godkännt intervall, annars sätt till 0.
5. Beräkna $start för listningen
6. Använd samma funktion paginglinks() för att skriva ut paginglänkarna.
7. Lista dina utvalda poster
Raden "Sidan 1 av 2" kan du ta väck från funktionen och lägga var och om du vill ha den.
RickardMedlem sedan maj 2001287 inlägg heh... sagt och gjort.. jag löste det faktiskt själv innan jag hant få ett mail om din postning...
Fick använda mig av den lilla logiken jag fortfarande har kvar...
*gäspar*
det logiska sinnet har ju en viss förmåga att minska ju tröttare man blir.. =)
MatteMedlem sedan aug. 20002 975 inlägg Nu går jag och lägger mig.
Godnatt, och ha så roligt med ditt projekt inatt :)
RickardMedlem sedan maj 2001287 inlägg Hmm...
Nånting säger mig att följande kod inte fungerar när jag inte har något sökförmulär:
// Hämtar QUERY_STRING och tar bort page från den
$getvar = $HTTP_SERVER_VARS['QUERY_STRING'];
$search = "/(^page=d*&?|&page=d*)/i";
$getvar = preg_replace($search, "", $getvar);
if ($getvar != "") $getvar = "&".$getvar;
För den visar allt så fint, men pagingen funkar inte som den ska.. trycker jag på sida tv, eller tre eller whatever så visas nada...