Thomas Larsen wrote:
> hejsa, er der nogen måder jeg kan kalde en phpclass inde i et html link ??
>
> Har lavet noget ala det her, ved ikke om det er den rigtige løsning
>
> <?php
> session_start();
> mysql_connect("localhost", "root", "");
> mysql_select_db("shop");
> class shopping_cart {
> var $item_id;
>
> function insert_item($item_id) {
> //Funktion der der putter varer i kurven
> $item_id = $this->item_id;
> $sess_id = session_id();
> mysql_query("INSERT INTO cart (vare_id,sess_id) VALUES
> ('$item_id','$sess_id')") or die(mysql_error());
> }
>
[klip - nogle uskrevne metoder]
> }
>
> if($_GET['func'] == "insert_item") {
> $cart = &new shopping_cart;
> $vare_id = $_GET['vare_id'];
> $cart->item_id = $vare_id;
> $cart->insert_item($cart->item_id);
> }
> ?>
>
> <a href="shopping_cart.php?func=insert_item&vare_id=22">Læg i kurv</a>
>
>
> Dette er min første class i php så ved ikke om jeg er rigtig ell. forkert på
> den
>
> Men giv lige en tilbagemelding om jeg er helt hen i vejret
>
> Mvh Thomas L.
>
Hej Thomas
Grundtrækkene i dit script ser rigtigt nok ud (i den forstand at det
burde virke).
Dog er der noget lidt underligt ved din insert_item metode.
Du tager en parameter med til metoden, men det første du gør i metoden
er at overskrive parameterens værdi med en attribut værdi:
$item_id = $this->item_id;
så er det jo fuldstændig ligemeget, hvad man sendte med til metoden.
Du kunne lige så godt have lavet metoden uden parametre så:
function insert_item() {
$item_id = $this->item_id;
$sessId = session_id();
mysql_query("INSERT INTO cart (vare_id,sess_id)
VALUES('$itemId','$sessId')") or die(mysql_error());
}
og så senere i scriptet:
$cart->insert_item();
i stedet for:
$cart->insert_item($cart->item_id);
Personligt ville jeg nok tage $item_id med som parameter til
constructoren, så kunne din klasse f.ex. se således ud:
class ShoppingCart {
var $itemId;
function ShoppingCart($itemId) {
$this->itemId;
}
function insertItem() {
$itemId = $this->itemId;
$sessId = session_id();
mysql_query("INSERT INTO cart (vare_id,sess_id)
VALUES('$itemId','$sessId')") or die(mysql_error());
}
}
og længere nede i scriptet, ville det være:
$Cart =& new ShoppingCart($_GET['item_id']);
$Cart->insertItem();
i stedet for:
$cart = &new shopping_cart;
$vare_id = $_GET['vare_id'];
$cart->item_id = $vare_id;
$cart->insert_item($cart->item_id);
Jeg bider mærke i at din klasse hedder shopping_cart, så tror jeg at du
nok egentlig gerne ville kun have flere items i en shopping_cart. Derfor
tror jeg at det måske er session_id, der skal med til constructoren, og
at der faktisk skal en item_id med til insert_item metoden. Evt. vil du
faktisk gerne have en Item klasse, som en ShoppingCart så kan indeholde
flere af.
Men det er jo bare gætværk fra min side, som du kan tage til
efterretning. :)
MVH Per Thomsen,
http://www.pert.dk/