Modulentwicklung: Shopping Card

matt.loker
Beiträge: 203
Registriert: Mo 7. Mai 2007, 09:05
Kontaktdaten:

Re: Modulentwicklung: Shopping Card

Beitrag von matt.loker »

Hallo Zusammen,
ich hab es jetzt geschafft, dass mir der Produktkatalog angezeigt wird - dank eurer Hilfe. Wenn man aber einen Artikel in den Warenkorb hinzufügen möchte, passiert nüscht. Der Warenkorb bleibt leer.
BagHira hatte etwas von einem Session-Problem erzählt und da wollte ich fragen ob das hier auch der Fall sein könnte?

Hoffe Ihr habt eine Idee :)

Viele Grüße
Matt.loker

Modul SC-Product

Code: Alles auswählen

<?php
    #Includes
    cInclude('classes', 'SC.functions.php');
	
	#Definitions
	$shoppingCardID = 39; //ID des ShoppingCardartikels
	$curreny = mi18n("€");
	
    if($_REQUEST['command']=='add' && $_REQUEST['productid']>0){
        $pid=$_REQUEST['productid'];
        addtocart($pid,1);
        header("location:front_content.php?idcat=$shoppingCardID"); //ID des Shopping-Card Artikels eintragen
        exit();
    }
?>

<script language="javascript">
    function addtocart(pid){
        document.buyerform.productid.value=pid;
        document.buyerform.command.value='add';
        document.buyerform.submit();
    }
</script>

<?php
    //check if there is a template instance
    if (!is_object($tpl)) {
        $tpl = new Template;
    }

    // reset template object
    $tpl->reset();
    // build Product Card
    $sql = "SELECT * FROM sc_products";
    $db->query($sql);
    while ($db->next_record()) {
                $tpl->set('d', 'IMG', $db->f('picture'));
                $tpl->set('d', 'NAME', $db->f('name'));
                $tpl->set('d', 'DESCRIPTION', $db->f('description'));
                $tpl->set('d', 'PRICE', mi18n("Preis"));
                $tpl->set('d', 'CURRENCY', $curreny);
                $tpl->set('d', 'PRICE-DEC', $db->f('price'));
                $tpl->set('d', 'SERIAL', $db->f('serial'));
                $tpl->next();
    }
    $sItems = $tpl->generate('templates/SC-Products_items.html', true, false);
    $tpl->set('s', 'items', $sItems);
    $tpl->generate('templates/SC-Products_container.html');
    ?>
Modul SC-ShoppingCard

Code: Alles auswählen

<?php
    #Includes
    cInclude('classes', 'SC.functions.php');
    
    #Definitions
    $productsID = 3; //ID des Produktübersichtsartikels
    $billingID = 40; //ID des Bestellformularartikels
    $curreny = mi18n("€");
    
    if($_REQUEST['command']=='delete' && $_REQUEST['pid']>0){
        remove_product($_REQUEST['pid']);
    }
    else if($_REQUEST['command']=='clear'){
        unset($SCsession['cart']);
    }
    else if($_REQUEST['command']=='update'){
        $max=count($SCsession['cart']);
        for($i=0;$i<$max;$i++){
            $pid=$SCsession['cart'][$i]['productid'];
            $q=intval($_REQUEST['product'.$pid]);
            if($q>0 && $q<=999){
                $SCsession['cart'][$i]['qty'] = $q;
            }
            else{
                $msg='Einige Produkte wurden nicht aktualisiert!, Stückzahl muss zwischen 1 und 999 liegen';
            }
        }
    }
?>
<script language="javascript">
    function del(pid){
        if(confirm('Möchten Sie den Artikel entfernen?')){
            document.buyerform;.pid.value=pid;
            document.buyerform;.command.value='delete';
            document.buyerform;.submit();
        }
    }
    function clear_cart(){
        if(confirm('Sie sind dabei Ihren Warenkorb zu leeren, fortsetzen?')){
            document.buyerform;.command.value='clear';
            document.buyerform;.submit();
        }
    }
    function update_cart(){
        document.buyerform;.command.value='update';
        document.buyerform;.submit();
    }


</script>
<?php
    //check if there is a template instance
    if (!is_object($tpl)) {
        $tpl = new Template;
    }

    // reset template object
    $tpl->reset();
    // build shopping card
    if(is_array($SCsession['cart'])){
        echo '<tr bgcolor="#FFFFFF" style="font-weight:bold"><td>'.mi18n("POS").'</td><td>'.mi18n("Name").'</td><td>'.mi18n("Einzelpreis").'</td><td>'.mi18n("Stückzahl").'</td><td>'.mi18n("Preis").'</td><td>'.mi18n("Optionen").'</td></tr>';
        for($i=0;$i<$max;$i++){
            if($q==0) continue;
            $tpl->set('d', 'PRODUCT_ID', $SCsession['cart'][$i]['productid']);
            $tpl->set('d', 'PNAME', get_product_name($pid));
            $tpl->set('d', 'QUANTITY', $SCsession['cart'][$i]['qty']);
            $tpl->set('d', 'SHOPPING_CARD_POS', $i+1);
            $tpl->set('d', 'CURRENCY', $curreny);
            $tpl->set('d', 'REMOVE', mi18n("entfernen"));
            $tpl->set('d', 'PRICE', get_price($pid));
            $tpl->set('d', 'PRICE_ALL', get_price($pid)*$q);
            $tpl->next();
        }
        $message = '<tr><td><b>'.mi18n("Gesamtbestellung").': '.get_order_total().' '.$curreny.'</b></td><td colspan="5" align="right">';
        $message .= '<input type="button" value="'.mi18n("Warenkorb löschen").'" onclick="clear_cart()">';
        $message .= '<input type="button" value="'.mi18n("Warenkorb aktualisieren").'" onclick="update_cart()">';
        $message .= '<input type="button" value="'.mi18n("Bestellung durchführen").'" onclick="window.location="front_content.php?idcat='.$billingID.'">';
        $message .= '</td></tr>';
        }
    else {
        $message = '<tr bgColor="#FFFFFF"><td>'.mi18n("Es befinden sich keine Artikel in Ihrem Warenkorb!").'</td>';
        }
    $tpl->set('s', 'WARENKORBMESSAGE', $message);
    $sItems = $tpl->generate('templates/SC-ShoppingCard_items.html', true, false);
    $tpl->set('s', 'NACHRICHT', $msg);
    $tpl->set('s', 'ITEMS', $sItems);
    $tpl->set('s', 'EINKAUF_FORTSETZEN', mi18n("Einkauf fortsetzen"));
    $tpl->set('s', 'EINKAUF_FORTSETZEN_URL', 'front_content.php?idcat='.$productsID);
    $tpl->generate('templates/SC-ShoppingCard_container.html');
?>
unclude-class SC.function.php

Code: Alles auswählen

<?
	function get_product_name($pid){
		$result=mysql_query("select name from products where serial=$pid");
		$row=mysql_fetch_array($result);
		return $row['name'];
	}
	function get_price($pid){
		$result=mysql_query("select price from products where serial=$pid");
		$row=mysql_fetch_array($result);
		return $row['price'];
	}
	function remove_product($pid){
		$pid=intval($pid);
		$max=count($_SESSION['cart']);
		for($i=0;$i<$max;$i++){
			if($pid==$_SESSION['cart'][$i]['productid']){
				unset($_SESSION['cart'][$i]);
				break;
			}
		}
		$_SESSION['cart']=array_values($_SESSION['cart']);
	}
	function get_order_total(){
		$max=count($_SESSION['cart']);
		$sum=0;
		for($i=0;$i<$max;$i++){
			$pid=$_SESSION['cart'][$i]['productid'];
			$q=$_SESSION['cart'][$i]['qty'];
			$price=get_price($pid);
			$sum+=$price*$q;
		}
		return $sum;
	}
	function addtocart($pid,$q){
		if($pid<1 or $q<1) return;
		
		if(is_array($_SESSION['cart'])){
			if(product_exists($pid)) return;
			$max=count($_SESSION['cart']);
			$_SESSION['cart'][$max]['productid']=$pid;
			$_SESSION['cart'][$max]['qty']=$q;
		}
		else{
			$_SESSION['cart']=array();
			$_SESSION['cart'][0]['productid']=$pid;
			$_SESSION['cart'][0]['qty']=$q;
		}
	}
	function product_exists($pid){
		$pid=intval($pid);
		$max=count($_SESSION['cart']);
		$flag=0;
		for($i=0;$i<$max;$i++){
			if($pid==$_SESSION['cart'][$i]['productid']){
				$flag=1;
				break;
			}
		}
		return $flag;
	}

?>
idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: Modulentwicklung: Shopping Card

Beitrag von idea-tec »

was zahlst du?
ich meine heute ist der 23., also hat seit 3 tagen niemand auf deine anfrage reagiert, und außerdem gibt es bereits einen fertigen shop ;-)
http://www.everymarket.org/Warenkatalog ... 42&level=1
nur als tipp, der kann auch mit dem amr 0.5.4 um ;-)
Zuletzt geändert von idea-tec am Fr 23. Okt 2009, 18:26, insgesamt 1-mal geändert.
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)
matt.loker
Beiträge: 203
Registriert: Mo 7. Mai 2007, 09:05
Kontaktdaten:

Re: Modulentwicklung: Shopping Card

Beitrag von matt.loker »

Wow - da ist man ein paar Tage nicht im Forum und dann passiert sowas.
Ich habe die Beiträge nicht wirklich durchgelesen aber ich hoffe der Streit ist beigelegt?!

Dein Shop (ich habe nicht gefunden wo ich das Modul runterladen kann -SORRY) ist nicht das was ich brauche. Ich brauche eine gaaaaaaaanz simplen shop in dem die Bestellung am Ende per Formular versendet wird. Der "Händler" meldet sich dan per Email oder Telefon beim Besteller. Wie gesagt estwas ganz simples und das was ich da versuche umzusetzen ist das perfekte Tool dafür.

Hat jemand ein Tipp warum der Warenkorb leer bleibt wenn man ein produkt added? Hat das was mit dem besagten SESSION-Problem zutun?

Vielen Dank
Matthäus
idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: Modulentwicklung: Shopping Card

Beitrag von idea-tec »

mit verlaub ... dann schreibe NICHT von einem Shop, da das was du da umsetzen möchtest NICHT das geringste mit einem im Recht und im Internet KLAR definierten Funktionsumfang eines Shops zu tun hat.
siehe hier: http://de.wikipedia.org/wiki/Elektronischer_Handel

Das was du da machen möchtest ist evtl. als "Artikelliste mit Anfragefunktion" zu bezeichnen
abgesehen davon tut der angeratene Shop nichts anderes:
- er listet artikel auf
- er hat einen warenkorb (was ja offensichtlich bei dir nicht geht)
- er sendet am ende per formular eine email weg (je 1 an den betreiber und an den "anfragenden")
matt.loker hat geschrieben:Hat jemand ein Tipp warum der Warenkorb leer bleibt wenn man ein produkt added? Hat das was mit dem besagten SESSION-Problem zutun?
Nein, offensichtlich hat auch nach 3 Tagen keiner eine Idee. Evtl. ist es ein falscher Link, ein falscher Aufruf einer Funktion, irgendwas falsches im Zusammenhang mit $_SESSION, oder auch einfach weil keiner rafft was du eigentlich tun willst, denn:
a.) was soll in die session/in den warenkorb
b.) wann soll was mit dem was du in die session schreibst was getan werden?
c.) etc...
d.) da es sich um artikel handelt geht es also auch nicht um ein Problem eines NICHT-kommerziellen Projektes, und da gehe ich mit Ortwin sicher komplett konform, wenn ich mich hier frage:
=> Wieso soll man dein Problem, das GAR NICHTS mit Contenido als solchem zu tun hat, umsonst lösen und dir das Ding entwickeln?
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)
feuerball-design
Beiträge: 20
Registriert: Fr 24. Apr 2009, 11:19
Kontaktdaten:

Re: Modulentwicklung: Shopping Card

Beitrag von feuerball-design »

Hallo matt,

ich hab das gleiche Problem des Session-Managements gehabt. Auch auf Grundlage dieses Tutorials und hab dann aber noch irgendwo und irgendwie ne Lösung gefunden. Bin deshalb einen Schritt weiter und kann dich auf das folgende Modul miniShop v0.9 verweisen:
http://forum.contenido.org/viewtopic.php?t=30299

Dort findest du wahrscheinlich im Code die Lösung deines Problems. Da die Grundlage (das Tutorial) die gleiche ist, sieht der Code dort relativ identisch aus.

Gruß
Florian
Gesperrt