webForumDet fria alternativet

Paging som räknar fel när man har valt en sida.

PHP

1 svar · 248 visningar · startad av jiggan

Medlem sedan juni 2003175 inlägg
Frågan#1

Jag håller på att koda en sök funktion till ett forum i php och när man har sökt så visas resultaten som en länk till en tråd. Sökningen fungerar bra. Om man som exempel får 2 träffar och där finns 3 trådar totalt och den skall visa 1 träff per sida, funkar detta innan man har valt vilken sida man vill se. Om man t.ex. väljer sida 2 för att se den andra tråden får man se den första igen och sen skrivs där ut att där finns 3 sidor. Alltså skrivs alla trådar ut när man har valt sida.
Jag hoppas att jag har förklarat begripligt nu annars får ni fråga. Här kommer min kod också iaf!

    $databas = $_GET['section'];
   $link = mysql_connect("XXX", "XXX", "XXX");
   mysql_select_db("XXX", $link);
   $sql_common = "FROM " . $databas . "_start
   WHERE rubrik LIKE '%".$_POST['sok']."%'";
 
   $limit = 1;
   if (isset ($_GET['sida']))
   {
      $sida = ($_GET['sida']);
   }
   else
   {
      $sida = 0;
   }
   $offset = $sida * $limit;
   $sql = "SELECT COUNT(*) AS rows_tot " . $sql_common;
   $resultat = mysql_query($sql)
   or die(mysql_error());
   $rad = mysql_fetch_array ($resultat);
   if ($rad['rows_tot'] >0 )
   {
        $sidor_totalt = (ceil($rad['rows_tot'] / $limit) - 1);
   }
   $sql2 = "SELECT DISTINCT * $sql_common ORDER by id ASC LIMIT $offset, $limit ";
   $resultat = mysql_query($sql2) or die(mysql_error());
    while ($rad = mysql_fetch_assoc($resultat))
   {
                
$bgcolor = $bgcolor == '#E0E0E0' ? '#FAFAFA' : '#E0E0E0';
      echo "<tr>". "<td style=\"background-color:$bgcolor\" width=315 height=60 align=left valign=top>".
       "<a href=\"read.php?section=".$_GET['section']."&id=".$rad['id']."\">". $rad['rubrik']."</a> ". "<br>". "</td>";
 
       echo "<td style=\"background-color:$bgcolor\" width=40 height=60 align=left valign=top>";
 
      if ($rad['antal_svar'] == "")
      {
         echo "<b>". "0". "</b>";
      }
      else
      {
         echo "<b>". $rad['antal_svar']. "</b>". "</td>";
      }
 
      echo "<td style=\"background-color:$bgcolor\" width=65 height=60 align=left valign=top>".
      "<a href=\"user_info.php?uid=".$rad['startad_av_id']."\">". $rad['startad_av_nick']."</a> ". "<br>". "<br>".
      "<i>". $rad['startad_datum']. "<br>". "</i>". "</td>";
 
       echo "<td style=\"background-color:$bgcolor\" width=50 height=60 align=left valign=top>";
      if ($rad['antal_visningar'] == "")
      {
         echo "<b>". "0". "</b>";
      }
      else
      {
         echo "<b>". $rad['antal_visningar']. "</b>". "</td>";
      }
 
      echo "<td style=\"background-color:$bgcolor\" width=93 height=60 align=left valign=top>";
      if ($rad['antal_svar'] != "")
      {
         echo "<a href=\"user_info.php?uid=".$rad['svar_senast_id']."\">". $rad['svar_senast_nick']."</a>". "<br>". "<br>".
          "<i>". $rad['svar_senast_datum']. "<br>". "</i>". "</td>". "</tr>";
      }
           "</table>";
}
      if((mysql_num_rows($resultat)==0))
      {
         echo "<tr>". "<td bgcolor=#E0E0E0 width=315 height=60 align=left valign=top>". "<b>". "Detta forumet är tomt. ". "</b>".
         "</td>". "</tr>";
      }
 
echo "</table>". "<tr>". "<td align=right valign=top>". "<b>". "Sida ". ($sida + 1) . " / " . ($sidor_totalt + 1) . "</b>". "<br>";
if ($sida > 0)
{
   echo "<a href=\"forum.php?sok=".$_GET['sok']."&section=".$_GET['section']."&sida=" . ($sida - 1) . "\">« Förra</a> ";
}
else
{
   echo "";
}
if($sidor_totalt > 0)
{
    for($i = 0; $i <= $sidor_totalt; $i++)
   {
        if($i == $sida)
      {
            echo " " . ($i + 1) . " ";
        }
      else
      {
            echo " <a href=\"forum.php?sok=".$_GET['sok']."&section=".$_GET['section']."&sida=$i\">" . ($i + 1) . "</a> ";
        }
    }
}
else
{
    echo "";
}
if ($sida < $sidor_totalt)
{
    echo "<a href=\"forum.php?sok=".$_GET['sok']."&section=".$_GET['section']."&sida=" . ($sida + 1) . "\">Nästa »</a> ";
}
else
{
    echo "";
}
echo "</td>". "</tr>";
}
?>
Medlem sedan mars 20025 907 inlägg
#2
$sql_common = "FROM " . $databas . "_start WHERE rubrik LIKE '%".$_POST['sok']."%'";

Där har du ditt fel skulle jag tro. $_POST['sok'] innehåller inget värde när du valt sida. Därmed kommer den plocka ut alla värden som uppfyller villkoret "rubrik LIKE '%%'", vilket jag antar att de flesta värden gör :)

255 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)