Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Php Funktion

    neocor

    • Neu im Forum
    • Beiträge: 7
    Php Funktion
    am: 16. März 2012, 20:29:47
    habe die funktion.gunnartProductlist

    und habe diese versucht zu erweitern

    habe die products DP erweitert mit products_color
       
    Code: PHP  [Auswählen]
    if($Color) {
                            $WhereAdd .= " and p.products_color = ".intval($Color);
                    }
     

    ist aber keine ID sondern nromaler wert interlegt zb rot  
    leider kann ich kein PHP aber die "intval" müsste doch für Zahlen stehn möchte aber Buchstaben abfragen.
    Kann mir jemand den codeschnippsel richtig bauen ?
    Hoffe das versteht jemand  vielen dank


    Linkback: https://www.modified-shop.org/forum/index.php?topic=18958.0

    Modulfux

    • Experte
    • Beiträge: 3.590
    • Geschlecht:
    Re: Php Funktion
    Antwort #1 am: 16. März 2012, 22:41:09
    Wie wäre es damit?
    Code: PHP  [Auswählen]
    if($Color) {
      $WhereAdd .= " and p.products_color = ".$Color);
    }
     

    Somit kann es doch egal sein, was in $Color steht.

    Gruß
    Ronny

    neocor

    • Neu im Forum
    • Beiträge: 7
    Re: Php Funktion
    Antwort #2 am: 17. März 2012, 19:46:02
    danke für deine Hilfe leider bekomme ich jetzt einen Fehler

    Parse error: syntax error, unexpected ')'

    jonnyB

    • Fördermitglied
    • Beiträge: 519
    • Geschlecht:
    Re: Php Funktion
    Antwort #3 am: 17. März 2012, 19:53:00
    nimm mal die Klammer hinter $Color) weg, also:

    Code: PHP  [Auswählen]
    if($Color) {
      $WhereAdd .= " and p.products_color = ".$Color;
    }
     

    neocor

    • Neu im Forum
    • Beiträge: 7
    Re: Php Funktion
    Antwort #4 am: 17. März 2012, 20:10:31
    jetzt kommt 1054 - Unknown column 'blau' in 'where clause'

    jonnyB

    • Fördermitglied
    • Beiträge: 519
    • Geschlecht:
    Re: Php Funktion
    Antwort #5 am: 17. März 2012, 20:18:14
    Ich weiß zwar nicht genau was du machen willst, jedoch muß deine Variable "$Color" , in deiner Abfrage, sich auf eine Datenbank-Spalte beziehen. Und diese existiert anscheinend nicht.

    h-h-h

    • modified Team
    • Beiträge: 4.562
    Re: Php Funktion
    Antwort #6 am: 17. März 2012, 20:21:26
    Code: PHP  [Auswählen]
    if($Color) {
      $WhereAdd .= " and p.products_color = '".$Color."'";
    }
     

    Wenn das Datenbankfeld kein Integer ist, dann müssen Anführungszeichen verwendet werden.

    Ich hoffe $Color kommt an der Stelle aus einer vertrauenswürdigen Quelle. ;)

    Gruß

    h-h-h

    neocor

    • Neu im Forum
    • Beiträge: 7
    Re: Php Funktion
    Antwort #7 am: 17. März 2012, 20:23:16
    Hier mal das ganze komplett

    Code: PHP  [Auswählen]
    <?php

    // by Gunnar Tillmann / http://www.gunnart.de?p=400
    // Version 1.3d - Juli 2009

    function gunnartProductsList($CatID=false,$Limit=false,$Order=false,$Sort=false,$Specials=false,$NoSpecials=false,$Top=false,$Except=false,$Image=false,$Manu=false,$Color=false,$Quantity=false) {

            $ListFlag       = true;
            $Order          = strtolower($Order);
            $Sort           = strtolower($Sort);
            //$Specials = strtolower($Specials);
            //$Top          = strtolower($Top);
           
            // Sortierung
            if(!in_array($Sort,array("asc","desc"))) {
                    $Sort = "asc";
            }
           
            switch($Order) {
                    case "name":
                            $Sort = " order by pd.products_name ".$Sort;
                    break;
                   
                    case "price":
                            $Sort = " order by p.products_price ".$Sort;
                    break;
                   
                    case "date":
                            $Sort = " order by p.products_date_added ".$Sort;
                    break;

                    case "rand":
                            $Sort = " order by rand() ";
                    break;
                   
                    default:
                            $Sort = false;
                    break;
            }

            // Falls Kategorie gewünscht, Kategorie-Daten holen
           
            if($CatID) {
                   
                    // Kundengruppen-Check
                    if (GROUP_CHECK=='true') {
                            $group_check = " and c.group_permission_".$_SESSION['customers_status']['customers_status_id']." = 1 ";
                    }

                    $dbQuery = xtDBquery("
                            select  c.categories_id,
                                            c.products_sorting,
                                            c.products_sorting2,
                                            cd.categories_name
                            from    "
    .TABLE_CATEGORIES." c,
                                            "
    .TABLE_CATEGORIES_DESCRIPTION." cd
                            where   c.categories_id = "
    .intval($CatID)."
                            and             c.categories_status = 1
                            and             c.categories_id = cd.categories_id
                            and     cd.language_id = "
    .intval($_SESSION['languages_id'])."
                            "
    .$group_check."
                    "
    );
                   
                    $dbQuery = xtc_db_fetch_array($dbQuery,true);
                   
                    if($dbQuery['categories_id']) {
                           
                            // Falls keine Sortierung angegeben, Sortierdaten aus der Kategorie holen
                            if (!$dbQuery['products_sorting'] && !$Sort) {
                                    $dbQuery['products_sorting'] = "pd.products_name";
                                    $Sort = " order by ".$dbQuery['products_sorting']." ".$dbQuery['products_sorting2']." ";
                            }
                           
                            // Kategorien-Daten
                            $Return['CATEGORY'] = array(
                                    'name'  =>      $dbQuery['categories_name'],
                                    'link'  =>      xtc_href_link(FILENAME_DEFAULT,xtc_category_link($dbQuery['categories_id'],$dbQuery['categories_name']))
                            );
                   
                            $FromAdd = TABLE_PRODUCTS_TO_CATEGORIES." p2c, ";
                            $WhereAdd = " and p.products_id = p2c.products_id and p2c.categories_id = ".intval($CatID);
                   
                    } else {
                           
                            $ListFlag = false; // <-- Falls Kategorien-ID "ungültig" ist - dann auch keine Produktliste
                   
                    }
                   
            }
           
            // Produktliste holen
           
            if($ListFlag) {
           
                    global $product;
                    // FSK-Kontrolle
                    if ($_SESSION['customers_status']['customers_fsk18_display'] == '0') {
                            $fsk_lock = " and p.products_fsk18 != 1 ";
                    }
                    // Kundengruppen-Check
                    if (GROUP_CHECK == 'true') {
                            $group_check = " and p.group_permission_".$_SESSION['customers_status']['customers_status_id']." = 1 ";
                    }
                   
                    // Begrenzung?
                    if($Limit) {
                            $Limit = " limit ".intval($Limit);
                    }
                   
                    // Nur Top-Artikel?
                    if($Top) {
                            $WhereAdd .= " and p.products_startpage = 1 ";
                    }
                   
                    // Nur Angebote?
                    if($Specials && !$NoSpecials) {
                            $FromAdd .= TABLE_SPECIALS." s, ";
                            $WhereAdd .= " and      s.products_id = p.products_id and s.status = 1 ";
                            //$SpecialsAdd = " left join ".TABLE_SPECIALS." as s on p.products_id = s.products_id ";
                            //$WhereAdd .= " and (if (p.products_id = s.products_id, s.status, 0) = 1) ";
                    }
                   
                    // Keine Angebote?
                    if($NoSpecials && !$Specials) {
                            $SpecialsAdd = " left outer join ".TABLE_SPECIALS." as s on p.products_id = s.products_id ";
                            $WhereAdd .= " and (if (p.products_id = s.products_id, s.status, 0) = 0) ";

                    }

                    // Ausnahmen?
                    if($Except) {
                            $WhereAdd .= " and p.products_id != ".intval($Except);
                    }
                   
                    // Nur Artikel mit Bildern?
                    if($Image) {
                            $WhereAdd .= " and p.products_image != '' ";
                    }
                   
                    // Nur von einem bestimmten Hersteller?
                    if($Manu) {
                            $WhereAdd .= " and p.manufacturers_id = ".intval($Manu);
                    }
                   
                    // Nur von einem bestimmten Farbe?
                    if($Color) {
      $WhereAdd .= " and p.products_color = ".$Color;
    }
                   
            if($Top) {
                            $WhereAdd .= " and p.products_startpage = 1 ";
                    }
           
                   
                    //Where blub='". $gulp. "'
                    // Nur Artikel mit Bestand?
    if($Quantity) {$WhereAdd .= " and p.products_quantity != 0 ";}

                    $dbQuery = xtDBquery("
                            select  distinct
                                            p.products_id,
                                            p.products_model,
                                            p.products_color,
                                            p.products_ean,
                                            p.products_fsk18,
                                            p.products_image,
                                            p.products_price,
                                            p.products_vpe,
                                            p.products_vpe_status,
                                            p.products_vpe_value,                                                          
                                            p.products_tax_class_id,
                                            p.products_shippingtime,
                   
                                            pd.products_name,
                                            pd.products_short_description,
                   
                                            m.manufacturers_name,
                                            m.manufacturers_image
                             
                            from    "
    .TABLE_PRODUCTS." p
                            "
    .$SpecialsAdd."
                            left join "
    .TABLE_MANUFACTURERS." m
                            on p.manufacturers_id = m.manufacturers_id,
                                            "
    .$FromAdd."
                                            "
    .TABLE_PRODUCTS_DESCRIPTION." pd
                            where   p.products_status = 1
                            and     p.products_id = pd.products_id
                            "
    .$WhereAdd."
                            "
    .$group_check."
                            "
    .$fsk_lock."
                            and pd.language_id = '"
    .(int) $_SESSION['languages_id']."'
                            "
    .$Sort."
                            "
    .$Limit."
                    "
    );
                   
                    while($dbQueryResults = xtc_db_fetch_array($dbQuery,true)) {
                            $Return['PRODUCTS'][] = $product->buildDataArray($dbQueryResults);
                    }
                   
                    return $Return;
           
            }

            return false;
    }



    function smarty_function_gunnartProductsList($Params=array(), &$smarty) {

            $to = trim($Params['to']);
           
            $gunnartProductsList = gunnartProductsList($Params['cat'],$Params['limit'],$Params['order'],$Params['sort'],$Params['specials'],$Params['nospecials'],$Params['top'],$Params['except'],$Params['image'],$Params['manu'],$Params['color'],$Params['quantity']);

            if(!empty($to)) {
                    $smarty->clear_assign($to);  
                    $smarty->assign($to,$gunnartProductsList);
            } else {
                    $smarty->assign('PRODUCTS_LIST',$gunnartProductsList);
            }

    }

    ?>

    neocor

    • Neu im Forum
    • Beiträge: 7
    Re: Php Funktion
    Antwort #8 am: 17. März 2012, 20:31:12
    also in der table products gibts die products_color wo die farben drin stehen zb. rot   ....ich habe jetzt mal eins auf 0 gegändert und produkte mit der farbe=0 ausgegeben und da gehts schein paar kommt er nicht mit buchstaben klar

    neocor

    • Neu im Forum
    • Beiträge: 7
    Re: Php Funktion
    Antwort #9 am: 17. März 2012, 20:35:24
    Code: PHP  [Auswählen]
    if($Color) {
      $WhereAdd .= "and p.products_color = ' ".$Color." ' ";
    }

    so kommt jetzt keine Fehlermeldung mehr aber es werden keine Produkte gefunden :-(

    h-h-h

    • modified Team
    • Beiträge: 4.562
    Re: Php Funktion
    Antwort #10 am: 17. März 2012, 20:48:27
    Code: PHP  [Auswählen]
    ' ".$Color." '

    So hab ich es auch nicht geschrieben, denn _rot_ steht ja auch nicht in der DB. ;)

    Gruß

    h-h-h

    neocor

    • Neu im Forum
    • Beiträge: 7
    Re: Php Funktion
    Antwort #11 am: 17. März 2012, 21:10:00
    Oh jetzt gehts ganz vielen dank , eine letzte frage hätte ich noch

    wie muss die funktion ausehen wenn der wert in einer von für Spalten ist also

    products_color1  oder
    products_color2 oder
    products_color3  oder
    products_color4

    jonnyB

    • Fördermitglied
    • Beiträge: 519
    • Geschlecht:
    Re: Php Funktion
    Antwort #12 am: 18. März 2012, 11:27:44
    versuchs damit:

    Code: PHP  [Auswählen]
    if($Color) {
      $WhereAdd .= "
      and p.products_color = '"
    .$Color."'
      or p.products_color1 = '"
    .$Color."'
      or p.products_color2 = '"
    .$Color."'
      or p.products_color3 = '"
    .$Color."'
      or p.products_color4 = '"
    .$Color."'
    "
    ;
    }
     
    2 Antworten
    2410 Aufrufe
    19. April 2016, 16:59:25 von newbee79
    21 Antworten
    9691 Aufrufe
    31. Januar 2014, 06:48:46 von voodoopupp
    15 Antworten
    2876 Aufrufe
    02. Dezember 2021, 09:28:18 von mannoo
    15 Antworten
    7667 Aufrufe
    24. Juni 2010, 10:16:49 von kwiekids
               
    anything