RickardMedlem sedan maj 2001284 inlägg
Tjenix!
Jag vet att detta ämne har diskuterats fram och tillbaka...
http://server.midnight-sun.org/~noratx/ricky/search.phps
Här har jag ett problem...
PHP koden i domkumentet har jag provat å flytta lite här och var i filen för att kunna få min paginfunktion att fungera.. men icke...
I tabellen så ligger en bläddra länk som skall få sitt värde efter att PHP har sökt igenom databasen, ligger mysql querryn nedanför får den paginlänken inget värde, ligger querryn ovanför, så visas inte sidan.
Finns det någon som vet vad jag kan göra åt problemet?
Jag sliter snart av mitt hår om jag inte lyckas få det att fungera.. =(
MatteMedlem sedan aug. 20002 970 inlägg
Jag kommer inte åt den sidan, så jag kan inte se hur din kod ser ut, men principen för pagingen brukar byggas upp utifrån 2 SQL-frågor.
Först en som räknar antalet rader med ett visst kriterie. Med hjälp av denna fråga bygger man upp sin länkning.
Sedan en SQL-fråga för själva hämtningen, med samma kriterier.
Ett exempel har du här: http://www.phpportalen.net/wiki/index.php?page=Hur+delar+jag+upp+resultatet+fr�n+MySQL+p�+flera+sidor%3F
Ett annat här: http://www.a-kok.com/php/paging.php
Kanske något av dessa kan ge dig en idé hur du kan bygga upp dina paging-länkar.
RickardMedlem sedan maj 2001284 inlägg
Jag som hade skrivit lite fel i länken...
http://server.midnight-sun.org:82/~noratx/ricky/search.phps
Så ska det stå... =)
LaspMedlem sedan juli 200010 197 inlägg
Du får nog försöka en tredje gång Rickard.
RickardMedlem sedan maj 2001284 inlägg
ehh?
verkar mysko...
jag kan klicka å få länken att funka här... å samma länk kan andra också använda...
http://server.midnight-sun.org:82/~noratx/ricky/search.phps
MatteMedlem sedan aug. 20002 970 inlägg
Jag kom fram nu :)
Men jag såg också att första länkningen i mitt tidigare inlägg förstördes av webForum. Testa här så kommer du rätt: http://member.webforum.nu/818/link-paging.html
Ta en titt på hur det är löst där, så förstår du ungefär hur du ska lösa ditt problem.
Däremot förstår jag inte din while-slinga. Som jag läser den så har du utskriften av sökformuläret för varje rad du hittar, fast endast första träffen kommer att skrivas ut, sedan avbryter du med mysql_close().
Eller läser jag helt galet?
RickardMedlem sedan maj 2001284 inlägg
mjopp, måste du göra...
Den listar upp ALLT jag sökt på...
Fast så länge pagingen inte funkar så visar den endast 5... =)
RickardMedlem sedan maj 2001284 inlägg
Tog förresten en titt på din länk...
Jag är rätt nybörjare på PHP, har fått mycket hjälp härifrån och på annat håll för att göra mina sidor (och det jag hålle rpå med nu är ett stort ihopkok av allt jag tidigare fått hjälp med)...
så all den koden där är som rena grekiskan för mig... *fattar nada* =)
MatteMedlem sedan aug. 20002 970 inlägg
Hade visst missat en klammer :)
Något liknande det här skulle kanske fungera. Jag har utgått från exemplet från PHPportalen.
function matain() {
// Globaldeklarera även $page
global $namn, $inlagg, $mail, $datum, page;
// Anslut till databas
$link = mysql_connect ("localhost","user","pass");
$databas = mysql_select_db("wheelbook");
// 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);
// Bestäm antalet rader per sida
$limit = 5;
// Beräkna antalet sidor
$pages_tot = (ceil($rows_tot / $limit) - 1);
// Kontrollera variabeln $page
if(!isset($page) || $page > $pages_tot || $pages < 0){
$page = 0;
}
// Nedan denna rad går det bra att skriva ut paginglänkar
// Beräkna första posten
$start = $limit * $page;
// Hämta rader och skriv ut
$sql="SELECT * FROM trehjulinggb WHERE namn LIKE '%$namn%'
AND mail LIKE '%$mail%' AND datum LIKE '%$datum%'
LIMIT $start,$limit";
$result=mysql_query($sql);
while($rad=mysql_fetch_array($result)){
// Utskrift av raderna
}
// Skriv ut paging
paginglinks($page, $pages_tot);
} // Slut funktion
function paginglinks($page, $pages_tot) {
// Paging-länkar, ta bort/ändra det du inte vill ha
if ($page > 0) { // Om man inte är på första sidan visas dom här länkarna
echo "<a href=\"{$_SERVER['PHP_SELF']}\">Första</a> ";
echo "<a href=\"{$_SERVER['PHP_SELF']}?page=" . ($page - 1) . "\">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=\"{$_SERVER['PHP_SELF']}?page=$i\">" . ($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=\"{$_SERVER['PHP_SELF']}?page=" . ($page + 1) . "\">Nästa</a> ";
echo "<a href=\"{$_SERVER['PHP_SELF']}?page=$pages_tot\">Sista</a>";
} else {
echo " | Nästa ";
echo "Sista";
}
} // Slut funktion
Jag har inte provkört koden, så något galet kan du kanske stöta på.
RickardMedlem sedan maj 2001284 inlägg
Tackar...
ett mysko fel dök dock upp som jag inte har en aning om varför det dyker upp...
Warning: Supplied argument is not a valid MySQL-Link resource in /home/noratx/public_html/ricky/search.php on line 215
Och rad 215 är:
mysql_close ($link);
.phps är uppdaterad med det nya också, så det går att kolla däri också.. =)
MatteMedlem sedan aug. 20002 970 inlägg
Om jag såg rätt så har du anslutningen till mysql inne i funktionen och mysql_close() utanför funktionen.
Du får antingen lägga in mysql_close i funktionen eller ta bort mysql_close().
Manualen säger så här om mysql_close:
Using mysql_close() isn't usually necessary, as non-persistent open links are automatically closed at the end of the script's execution.
MatteMedlem sedan aug. 20002 970 inlägg
Fungerade det förresten i övrigt ?
RickardMedlem sedan maj 2001284 inlägg
Det vet jag inte eftersom mysql_close funktionen stör ut det.. ska ta bort close å kolla...
RED:
Nix, funkade icke...
den verkar inte söka av databasen... eller iaf så visar den ingenting när jag söker...
testa görna du å se.. =)
ta bort s i slutet av phps så kommer du rätt.. =)
Sök på TB så ska det komma upp minst 10 inlägg..
MatteMedlem sedan aug. 20002 970 inlägg
För det första så skriver du inte ut något:
while($rad=mysql_fetch_array($result)){
// Utskrift av raderna
}
Där det står '// Utskrift av raderna' ska du lägga in din kod som skriver ut det du hittar.
Men du får i vilket fall inga paginglänkar, så koden kan överhuvudtaget inte gå in i funktionen matain().
Vad har du för inställning på register_globals ?
Vilken PHP-version kör du?
Är du osäker, skapa en fil med följande innehåll, och kör den:
<?php phpinfo(); ?>
Sedan för att du ska kunna bläddra mellan sidorna bör du skicka ditt formulär med method="get" istället.
Dessutom måste vi för detta lägga på lite saker till dina paging-länkar. Men det är en sak vi tar sedan när du fått det andra att fungera.
Testa om du går in i funktionen med:
function matain() {
// Globaldeklarera även $page
global $namn, $inlagg, $mail, $datum, $page;
echo "Gick in i funktionen";
RickardMedlem sedan maj 2001284 inlägg
Jag kör version 4.0.4pl1 (har inte orkat uppdatera versionen)
register_globals är i både local och mastervalue på on.
RickardMedlem sedan maj 2001284 inlägg
usha...
här är mannen som verkligen hata funktionen echo...
Kolla i phps filen... jag får fel på rad 164 å jag kan fan aldrig få till en echo rad riktigtt klokt...
Felet:
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in /home/noratx/public_html/ricky/search.php on line 164
MatteMedlem sedan aug. 20002 970 inlägg
Testa
echo " <td width=\"125\" height=\"87\"><center><b>E-mail/namn:<br><a href=\"mailto:{$rad['mail']]}\"> {$rad['namn']}</a><br></center></td> ";
echo " <td width=\"509\" height=\"87\"><b>Meddelande:<br> {$rad['inlagg']}</td> ";
echo " <td width=\"140\" height=\"87\"><center><b>Datum/tid:<br>{$rad['datum']}<br>{$rad['id']}</center></td> ";
RickardMedlem sedan maj 2001284 inlägg
tackar..
det avgjorde det felet... men det visas fortfarande nada vid sökning... *.phps fil uppdaterad*
MatteMedlem sedan aug. 20002 970 inlägg
Ta en titt på dessa rader:
<!-- <?
if(isset($search)) {
matain();
}
?>
Tag bort avmarkeringen:
<?
if(isset($search)) {
matain();
}
?>
Sedan med tanke på din stenåldersversion av PHP får du ändra {$_SERVER['PHP_SELF']} till $PHP_SELF i funktionen paginglinks.
RickardMedlem sedan maj 2001284 inlägg
ahh... well.. vad säger man... jag KANSKE hade upptäckt det där om det inte vore för att jag varit igång sen 04.30.. =)
4 ögon är bättre än två... =)
å vad gäller stenåldersversionen så börjar jag ju märka vad den gammla versionen gör för skit... =)
Hur är det med den nya? funkar de gammla variablerna (så som ovan nämnt) i den nya versionen?
Annars är det nog en hel del jag får ta reda på å försöka hitta sen när grejorna förs över till rätt server men nya frächa databaser... =)
Denna burk är ju bara utvecklingsmaskin där jag testar nya script... =)
RED:
Jag bytte ut till $PHP_SELF som du sa.. men det blev precis som med {$server['PHP_SELF' ]} länkarna dyker upp... men dom funkar inget vidare... =(