Nu kan jag knappt PHP och detta är inte svar på din fråga men det ser ut som att du kan råka ut för sql injection.
Frågan#1
Ber om ursäkt för en dålig rubrik.
Finns det någon vänlig person som kan förklara för mig vad det är för fel på koden nedan?
Problemet jag har, är att flera kategorier inte visar några produkter alls, samt att några kategorier endast visar ett fåtal produkter.
(Har dubbelkollat att samtliga produkter tillhör en kategori.)
$search = trim($_GET["sok"]);
$cat = $_GET["kategori"];
if ($cat == '-')
$cat = '';
if ($search == "")
$search = "-";
if ($search || $cat)
{
$query = "name LIKE " . sqlesc("%$search%") . " AND active = 'yes'";
if ($search)
$q = "sok=" . htmlspecialchars($search);
}
if ($cat)
{
$query .= " AND cat = $cat";
$q .= ($q ? "&" : "") . "cat=$cat";
}
$categories = "<option value='-'>---- visar alla ----</option>\n";
$ct_r = mysql_query("SELECT id,name FROM products_cat ORDER BY name ASC") or die;
while ($ct_a = mysql_fetch_array($ct_r))
$categories .= "<option value=\"" .intval($ct_a["id"]). "\">" .htmlspecialchars($ct_a["name"]). "</option>\n";
print($query);
print("<div class=\"info\">\n<h4>Alla produkter</h4>\n");
print("<form method=get style=\"padding: 5px\" action=alla_produkter.php?>\n");
print("Sök produkt: <input type=text size=20 name='sok' />\n");
print("<select name=\"kategori\">\n");
print($categories);
print("</select>\n");
print("<input type=submit value='sök' />\n");
print("</form><br />\n");
$page = $_GET['sida'];
$perpage = 10;
$res = mysql_query("SELECT COUNT(*) FROM products WHERE $query") or sqlerr();
$arr = mysql_fetch_row($res);
$pages = floor($arr[0] / $perpage);
if ($pages * $perpage < $arr[0])
++$pages;
if ($page < 1)
$page = 1;
else
if ($page > $pages)
$page = $pages;
for ($i = 1; $i <= $pages; ++$i)
if ($i == $page)
$pagemenu .= "<b>sida $i</b>\n";
else
$pagemenu .= "<a href=alla_produkter.php?kategori=$cat&sida=$i><b>$i</b></a>\n";
if ($page == 1)
$browsemenu .= "<span style=\"color: #eee\"><b><< Föregående</b></span>";
else
$browsemenu .= "<a href=alla_produkter.php?sida=" . ($page - 1) . "><b><< Föregående</b></a>";
$browsemenu .= " ";
if ($page == $pages)
$browsemenu .= "<span style=\"color: #eee\"><b>Nästa >></b></span>";
else
$browsemenu .= "<a href=alla_produkter.php?kategori=$cat&sida=" . ($page + 1) . "><b>Nästa >></b></a>";
$offset = ($page * $perpage) - $perpage;
$res = mysql_query("SELECT * FROM products WHERE $query ORDER BY name LIMIT $offset,$perpage") or sqlerr();
$num = mysql_num_rows($res);
print("<br /><table border=1 cellspacing=0 cellpadding=3 width='99%' style=\"margin: 5px\">\n");
print("<tr>\n<td></td>\n<td class=colhead align=left>Produktnamn</td>\n<td class=colhead align=\"right\">Pris</td>\n</tr>\n");
for ($i = 0; $i < $num; ++$i)
{
$arr = mysql_fetch_assoc($res);
//här listas alla produkter
EDIT: Hittade det "dumma" felet. Såg ni att jag listar endast produkter som har "-" i namnet.
if ($search == "")
$search = "-";
