15. marts 2006 - 21:22Der er
1 kommentar og 1 løsning
Globals slået fra
Efter jeg har slået globals fra har jeg fået et par problemer med min paging og min søgefunktion på denne side.. nogen som kan se hvad der er galt? Den viser ellers annoncerne fint, og den kan godt regne ud at der skal være flere sider til pagingen, men jeg kan bare ikke vælge fx side 2 i pagingen. Tror at det er noget med et par variabler som skal ændres et par steder, men jeg kan ikke finde ud af hvor :( pleace help me..
// Funktion, der "klipper" en tekst over på det mest hensigtsmæssige sted (".", " ", ) // str klip(str tekst, int længde, int tolerance)
function klip($tekst, $laengde = 130, $tolerance = 10) // $laengde og $tolerance kan udelades { $punktum = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), "."); // position af punktum $mellemrum = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), " "); // position af mellemrum $mere = "..."; // punktummer hvis mere tekst
if (strlen($tekst) <= $laengde + $tolerance) { $slut_pos = strlen($tekst); // slutposition = slut på tekst, da denne er kortere end $laengde og $tolerance $mere = ""; // ikke andet } elseif ($punktum !== false) { $slut_pos = $laengde-$tolerance+$punktum; // slutposition = punktum } elseif ($mellemrum !== false) { $slut_pos = $laengde-$tolerance+$mellemrum; // slutposition = mellemrum } else { $slut_pos = $laengde; // slutposition $laengde (ikke noget at gøre - skær ord over) }
$pr_side = "20"; //Definerer antal resultater pr. side
if (!isset($s)) { $s = "0"; //Tjekker om $s - som står for start - er sat, hvis ikke sættes den }
if(!isset($_GET['selectName']) || $_GET['selectName']=="") { $g_total = mysql_query("select count(id) as total from salgAfProdukt WHERE produkt LIKE '%".$_GET['search']."%'") or die(mysql_error()); } else { $g_total = mysql_query("select count(id) as total from salgAfProdukt WHERE produkt LIKE '%".$_GET['search']."%' AND salgAfProdukt.postNr BETWEEN LEFT('".$selectName."',4) AND RIGHT('".$selectName."',4) AND kategori LIKE '%".$_GET['selectKategori']."%'") or die(mysql_error()); } $total = mysql_result($g_total,0); if($total>$pr_side) { if ($total > $s+5){ ## #Find ud af om derskal være et Forrige link ## if ($s >= $pr_side) { //Tjekker om værdien af $s er større eller lig $pr_side $previous_s = $s-$pr_side; //Regner ud hvor mysql skal starte hvis forrige side kaldes echo "<a href='?s=$previous_s'><font color=\"#4682B4\">Forrige</font></a> "; //Udskriver linket }
## #Find ud af hvis/hvor mange sider der er rows til ## $page = 1; //Definerer hvor sidetal skal starte for($start=0; $total > $start; $start=$start+$pr_side){ //For-løkke der kører indtil der ikke er nok rows til en side mere if ($start != $s) { //Tjekker om linket vil komme til at pege på den side man er på echo "<a href='?s=$start&search=$_GET[search]&selectName=$_GET[selectName]'><font color=\"#4682B4\">$page</font></a> "; //...hvis ikke, udskrives link med værdien af $page } else { //Ellers, dvs. hvis linket vil pege på den side man er på.. echo "<font color=\"#000000\">$page </font>"; //...udskrives værdien af $page bare, altså ikke som link } $page++; //Lægger en til $page til næste gang løkken køres }
## #Find ud af om der skal være et næste link ## if ($total > $s+$pr_side) { //Tjekker om der er flere sider $next_s = $s+$pr_side; //Regner ud hvor mysql skal starte hvis næste side kaldes echo "<a href='?s=$next_s&search=$_GET[search]&selectName=$_GET[selectName]'><font color=\"#4682B4\">Næste</font></a>"; //Udskriver linket "næste" } } } echo "</tr></td></table>"; echo " <table width=\"560\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"bgcolor=\"#CAD9EA\"> <tr> <td><span class=\"mini\"> </span></td> </tr> </table>";
if (!isset($_GET['selectName']) || trim($_GET['selectName']) == "") { $sql = "SELECT * FROM salgAfProdukt LEFT JOIN postnr ON salgAfProdukt.postNr = postnr.postnr WHERE produkt LIKE '%" . $_GET['search'] . "%' ORDER BY id DESC LIMIT $s, $pr_side"; } else { $sql = "SELECT * FROM salgAfProdukt LEFT JOIN postnr ON salgAfProdukt.postNr = postnr.postnr WHERE produkt LIKE '%" . $_GET['search'] . "%' AND salgAfProdukt.postNr BETWEEN LEFT('" . $selectName . "', 4) AND RIGHT('".$selectName."', 4) AND kategori LIKE '%" . $_GET['selectKategori'] . "%' ORDER BY id DESC LIMIT $s, $pr_side"; }
$query = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_array($query)) { $sql2 = "SELECT count(*) AS antalBilleder FROM billeder_salgAfProdukt WHERE artikelid=" . $row["Id"]; $query2 = mysql_query($sql2) or die(mysq_error()); $row2 = mysql_fetch_assoc($query2);
$total = mysql_result($g_total,0); if ($total > $pr_side) { ## #Find ud af om der skal være et Forrige link ## if ($s >= $pr_side) { // Tjekker om værdien af $s er større eller lig $pr_side $previous_s = $s-$pr_side; //Regner ud hvor mysql skal starte hvis forrige side kaldes echo "<a href='?s=$previous_s&search=$_GET[search]&selectName=$_GET[selectName]'><font color='#4682B4'>Forrige</font></a> "; // Udskriver linket }
## #Find ud af hvis/hvor mange sider der er rows til ## $page = 1; // Definerer hvor sidetal skal starte for ($start = 0; $total > $start; $start += $pr_side) { // For-løkke der kører indtil der ikke er nok rows til en side mere if ($start != $s) { // Tjekker om linket vil komme til at pege på den side man er på echo "<a href='?s=$start&search=$_GET[search]&selectName=$_GET[selectName]'><font color='#4682B4'>$page</font></a> "; //...hvis ikke, udskrives link med værdien af $page } else { // Ellers, dvs. hvis linket vil pege på den side man er på.. echo "<font color='#000000'>$page </font>"; // ...udskrives værdien af $page bare, altså ikke som link } $page++; //Lægger en til $page til næste gang løkken køres }
## #Find ud af om der skal være et næste link ## if ($total > $s+$pr_side) { // Tjekker om der er flere sider $next_s = $s + $pr_side; // Regner ud hvor mysql skal starte hvis næste side kaldes echo "<a href='?s=$next_s&search=$_GET[search]&selectName=$_GET[selectName]'><font color='#4682B4'>Næste</font></a>"; // Udskriver linket "næste" } }
når globals er sat til off er det vigtigt at have styr på sine variabler. Derfor kan du ikke længere bruge $selectName, men skal bruge $_GET['selectName']. Du har også flere steder i din kode forkert syntaks. Du bruger bla. $_GET[search] - det skal være $_GET['search']. Kan du se forskellen ?
Her er en tilrettet kode. Skulle det mod forventning ikke virke, har jeg sikkert overset en af de nævnte variabler....
// Funktion, der "klipper" en tekst over på det mest hensigtsmæssige sted (".", " ", ) // str klip(str tekst, int længde, int tolerance)
function klip($tekst, $laengde = 130, $tolerance = 10) // $laengde og $tolerance kan udelades { $punktum = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), "."); // position af punktum $mellemrum = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), " "); // position af mellemrum $mere = "..."; // punktummer hvis mere tekst
if (strlen($tekst) <= $laengde + $tolerance) { $slut_pos = strlen($tekst); // slutposition = slut på tekst, da denne er kortere end $laengde og $tolerance $mere = ""; // ikke andet } elseif ($punktum !== false) { $slut_pos = $laengde-$tolerance+$punktum; // slutposition = punktum } elseif ($mellemrum !== false) { $slut_pos = $laengde-$tolerance+$mellemrum; // slutposition = mellemrum } else { $slut_pos = $laengde; // slutposition $laengde (ikke noget at gøre - skær ord over) }
$pr_side = "20"; //Definerer antal resultater pr. side
if (!isset($s)) { $s = "0"; //Tjekker om $s - som står for start - er sat, hvis ikke sættes den }
if(!isset($_GET['selectName']) || $_GET['selectName']=="") { $g_total = mysql_query("select count(id) as total from salgAfProdukt WHERE produkt LIKE '%".$_GET['search']."%'") or die(mysql_error()); } else { $g_total = mysql_query("select count(id) as total from salgAfProdukt WHERE produkt LIKE '%".$_GET['search']."%' AND salgAfProdukt.postNr BETWEEN LEFT('".$_GET['selectName']."',4) AND RIGHT('".$_GET['selectName']."',4) AND kategori LIKE '%".$_GET['selectKategori']."%'") or die(mysql_error()); } $total = mysql_result($g_total,0); if($total>$pr_side) { if ($total > $s+5){ ## #Find ud af om derskal være et Forrige link ## if ($s >= $pr_side) { //Tjekker om værdien af $s er større eller lig $pr_side $previous_s = $s-$pr_side; //Regner ud hvor mysql skal starte hvis forrige side kaldes echo "<a href='?s=$previous_s'><font color=\"#4682B4\">Forrige</font></a> "; //Udskriver linket }
## #Find ud af hvis/hvor mange sider der er rows til ## $page = 1; //Definerer hvor sidetal skal starte for($start=0; $total > $start; $start=$start+$pr_side){ //For-løkke der kører indtil der ikke er nok rows til en side mere if ($start != $s) { //Tjekker om linket vil komme til at pege på den side man er på echo "<a href='?s=$start&search=$_GET['search']&selectName=$_GET['selectName']'><font color=\"#4682B4\">$page</font></a> "; //...hvis ikke, udskrives link med værdien af $page } else { //Ellers, dvs. hvis linket vil pege på den side man er på.. echo "<font color=\"#000000\">$page </font>"; //...udskrives værdien af $page bare, altså ikke som link } $page++; //Lægger en til $page til næste gang løkken køres }
## #Find ud af om der skal være et næste link ## if ($total > $s+$pr_side) { //Tjekker om der er flere sider $next_s = $s+$pr_side; //Regner ud hvor mysql skal starte hvis næste side kaldes echo "<a href='?s=$next_s&search=$_GET['search']&selectName=$_GET['selectName']'><font color=\"#4682B4\">Næste</font></a>"; //Udskriver linket "næste" } } } echo "</tr></td></table>"; echo " <table width=\"560\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"bgcolor=\"#CAD9EA\"> <tr> <td><span class=\"mini\"> </span></td> </tr> </table>";
if (!isset($_GET['selectName']) || trim($_GET['selectName']) == "") { $sql = "SELECT * FROM salgAfProdukt LEFT JOIN postnr ON salgAfProdukt.postNr = postnr.postnr WHERE produkt LIKE '%" . $_GET['search'] . "%' ORDER BY id DESC LIMIT $s, $pr_side"; } else { $sql = "SELECT * FROM salgAfProdukt LEFT JOIN postnr ON salgAfProdukt.postNr = postnr.postnr WHERE produkt LIKE '%" . $_GET['search'] . "%' AND salgAfProdukt.postNr BETWEEN LEFT('" . $_GET['selectName'] . "', 4) AND RIGHT('".$_GET['selectName']."', 4) AND kategori LIKE '%" . $_GET['selectKategori'] . "%' ORDER BY id DESC LIMIT $s, $pr_side"; }
$query = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_array($query)) { $sql2 = "SELECT count(*) AS antalBilleder FROM billeder_salgAfProdukt WHERE artikelid=" . $row["Id"]; $query2 = mysql_query($sql2) or die(mysq_error()); $row2 = mysql_fetch_assoc($query2);
$total = mysql_result($g_total,0); if ($total > $pr_side) { ## #Find ud af om der skal være et Forrige link ## if ($s >= $pr_side) { // Tjekker om værdien af $s er større eller lig $pr_side $previous_s = $s-$pr_side; //Regner ud hvor mysql skal starte hvis forrige side kaldes echo "<a href='?s=$previous_s&search=$_GET['search']&selectName=$_GET['selectName']'><font color='#4682B4'>Forrige</font></a> "; // Udskriver linket }
## #Find ud af hvis/hvor mange sider der er rows til ## $page = 1; // Definerer hvor sidetal skal starte for ($start = 0; $total > $start; $start += $pr_side) { // For-løkke der kører indtil der ikke er nok rows til en side mere if ($start != $s) { // Tjekker om linket vil komme til at pege på den side man er på echo "<a href='?s=$start&search=$_GET['search']&selectName=$_GET['selectName']'><font color='#4682B4'>$page</font></a> "; //...hvis ikke, udskrives link med værdien af $page } else { // Ellers, dvs. hvis linket vil pege på den side man er på.. echo "<font color='#000000'>$page </font>"; // ...udskrives værdien af $page bare, altså ikke som link } $page++; //Lægger en til $page til næste gang løkken køres }
## #Find ud af om der skal være et næste link ## if ($total > $s+$pr_side) { // Tjekker om der er flere sider $next_s = $s + $pr_side; // Regner ud hvor mysql skal starte hvis næste side kaldes echo "<a href='?s=$next_s&search=$_GET['search']&selectName=$_GET['selectName']'><font color='#4682B4'>Næste</font></a>"; // Udskriver linket "næste" } }
Har fået det til at virke nu.. der var nogle variabler som skulle ændres.. nedenfor vises koden som virker.. $s i pagingen skulle ændres til $_GET['s'] + at $selectName skulle ændres til $_GET['selectName'], som wetdog poienterede. Takker for hjælpen:)
// Funktion, der "klipper" en tekst over på det mest hensigtsmæssige sted (".", " ", ) // str klip(str tekst, int længde, int tolerance)
function klip($tekst, $laengde = 130, $tolerance = 10) // $laengde og $tolerance kan udelades { $punktum = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), "."); // position af punktum $mellemrum = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), " "); // position af mellemrum $mere = "..."; // punktummer hvis mere tekst
if (strlen($tekst) <= $laengde + $tolerance) { $slut_pos = strlen($tekst); // slutposition = slut på tekst, da denne er kortere end $laengde og $tolerance $mere = ""; // ikke andet } elseif ($punktum !== false) { $slut_pos = $laengde-$tolerance+$punktum; // slutposition = punktum } elseif ($mellemrum !== false) { $slut_pos = $laengde-$tolerance+$mellemrum; // slutposition = mellemrum } else { $slut_pos = $laengde; // slutposition $laengde (ikke noget at gøre - skær ord over) }
$pr_side = "20"; //Definerer antal resultater pr. side
if (!isset($s)) { $s = "0"; //Tjekker om $s - som står for start - er sat, hvis ikke sættes den }
if(!isset($_GET['selectName']) || $_GET['selectName']=="") { $g_total = mysql_query("select count(id) as total from salgAfProdukt WHERE produkt LIKE '%".$_GET['search']."%'") or die(mysql_error()); } else { $g_total = mysql_query("select count(id) as total from salgAfProdukt WHERE produkt LIKE '%".$_GET['search']."%' AND salgAfProdukt.postNr BETWEEN LEFT('".$_GET['selectName']."',4) AND RIGHT('".$_GET['selectName']."',4) AND kategori LIKE '%".$_GET['selectKategori']."%'") or die(mysql_error()); } $total = mysql_result($g_total,0); if($total>$pr_side) { if ($total > $_GET['s']+5){ ## #Find ud af om derskal være et Forrige link ## if ($_GET['s'] >= $pr_side) { //Tjekker om værdien af $s er større eller lig $pr_side $previous_s = $_GET['s']-$pr_side; //Regner ud hvor mysql skal starte hvis forrige side kaldes echo "<a href='?s=$_GET[previous_s]'><font color=\"#4682B4\">Forrige</font></a> "; //Udskriver linket }
## #Find ud af hvis/hvor mange sider der er rows til ## $page = 1; //Definerer hvor sidetal skal starte for($start=0; $total > $start; $start=$start+$pr_side){ //For-løkke der kører indtil der ikke er nok rows til en side mere if ($start != $_GET['s']) { //Tjekker om linket vil komme til at pege på den side man er på echo "<a href='?s=$start&search=$_GET[search]&selectName=$_GET[selectName]'><font color=\"#4682B4\">$page</font></a> "; //...hvis ikke, udskrives link med værdien af $page } else { //Ellers, dvs. hvis linket vil pege på den side man er på.. echo "<font color=\"#000000\">$page </font>"; //...udskrives værdien af $page bare, altså ikke som link } $page++; //Lægger en til $page til næste gang løkken køres }
## #Find ud af om der skal være et næste link ## if ($total > $_GET['s']+$pr_side) { //Tjekker om der er flere sider $next_s = $_GET['s']+$pr_side; //Regner ud hvor mysql skal starte hvis næste side kaldes echo "<a href='?s=$next_s&search=$_GET[search]&selectName=$_GET[selectName]'><font color=\"#4682B4\">Næste</font></a>"; //Udskriver linket "næste" } } } echo "</tr></td></table>"; echo " <table width=\"560\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"bgcolor=\"#CAD9EA\"> <tr> <td><span class=\"mini\"> </span></td> </tr> </table>";
if (!isset($_GET['selectName']) || trim($_GET['selectName']) == "") { $sql = "SELECT * FROM salgAfProdukt LEFT JOIN postnr ON salgAfProdukt.postNr = postnr.postnr WHERE produkt LIKE '%" . $_GET['search'] . "%' ORDER BY id DESC LIMIT $s, $pr_side"; } else { $sql = "SELECT * FROM salgAfProdukt LEFT JOIN postnr ON salgAfProdukt.postNr = postnr.postnr WHERE produkt LIKE '%" . $_GET['search'] . "%' AND salgAfProdukt.postNr BETWEEN LEFT('".$_GET['selectName']."', 4) AND RIGHT('".$_GET['selectName']."', 4) AND kategori LIKE '%" . $_GET['selectKategori'] . "%' ORDER BY id DESC LIMIT $s, $pr_side"; }
$query = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_array($query)) { $sql2 = "SELECT count(*) AS antalBilleder FROM billeder_salgAfProdukt WHERE artikelid=" . $row["Id"]; $query2 = mysql_query($sql2) or die(mysq_error()); $row2 = mysql_fetch_assoc($query2);
$total = mysql_result($g_total,0); if ($total > $pr_side) { ## #Find ud af om der skal være et Forrige link ## if ($_GET['s'] >= $pr_side) { // Tjekker om værdien af $s er større eller lig $pr_side $previous_s = $_GET['s']-$pr_side; //Regner ud hvor mysql skal starte hvis forrige side kaldes echo "<a href='?s=$previous_s&search=$_GET[search]&selectName=$_GET[selectName]'><font color='#4682B4'>Forrige</font></a> "; // Udskriver linket }
## #Find ud af hvis/hvor mange sider der er rows til ## $page = 1; // Definerer hvor sidetal skal starte for ($start = 0; $total > $start; $start += $pr_side) { // For-løkke der kører indtil der ikke er nok rows til en side mere if ($start != $_GET['s']) { // Tjekker om linket vil komme til at pege på den side man er på echo "<a href='?s=$start&search=$_GET[search]&selectName=$_GET[selectName]'><font color='#4682B4'>$page</font></a> "; //...hvis ikke, udskrives link med værdien af $page } else { // Ellers, dvs. hvis linket vil pege på den side man er på.. echo "<font color='#000000'>$page </font>"; // ...udskrives værdien af $page bare, altså ikke som link } $page++; //Lægger en til $page til næste gang løkken køres }
## #Find ud af om der skal være et næste link ## if ($total > $_GET['s']+$pr_side) { // Tjekker om der er flere sider $next_s = $_GET['s'] + $pr_side; // Regner ud hvor mysql skal starte hvis næste side kaldes echo "<a href='?s=next_s&search ]=$_GET[search]&selectName=$_GET[selectName]'><font color='#4682B4'>Næste</font></a>"; // Udskriver linket "næste" } }
echo "</tr></td></table>"; ?> </body>
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.