Meddelande

Minska
No announcement yet.

Underligt fel, kategorier

Minska
X
 
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Underligt fel, kategorier

    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.)

    PHP-kod:
    $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&amp;sida=$i><b>$i</b></a>\n";

    if (
    $page == 1)
      
    $browsemenu .= "<span style=\"color: #eee\"><b>&lt;&lt; Föregående</b></span>";
    else
      
    $browsemenu .= "<a href=alla_produkter.php?sida=" . ($page 1) . "><b>&lt;&lt; Föregående</b></a>";

    $browsemenu .= "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";

    if (
    $page == $pages)
      
    $browsemenu .= "<span style=\"color: #eee\"><b>Nästa &gt;&gt;</b></span>";
    else
      
    $browsemenu .= "<a href=alla_produkter.php?kategori=$cat&amp;sida=" . ($page 1) . "><b>Nästa &gt;&gt;</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.
    PHP-kod:
    if ($search == "")
        
    $search "-"
    Last edited by Guldstrand; 2012-08-30, 11:19. Anledning: hittade felet
    Det jag inte redan vet vill jag gärna lära mig...

  • #2
    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.

    Exempel: http://www.unixwiz.net/techtips/sql-injection.html

    Kommentera


    • #3
      Det kan säkert stämma, men sidan är inte "live" än, jag kommer att gå igenom säkerheten så fort jag har löst det underliga med kategorierna.
      Det jag inte redan vet vill jag gärna lära mig...

      Kommentera

      Working...
      X