Cuvanje stanja

2

Cuvanje stanja

offline
  • PHP Developer
  • Pridružio: 02 Okt 2005
  • Poruke: 546

samo ovaj deo mo nije jasan
if ( !isset ($_SESSION['cart'])) {   $_SESSION['cart'] = array();   $_SESSION['cart'] = 0;   $_SESSION['total_price'] = '0.00'; }
Zasto prvo setujes array a posle 0? Nesto je tu visak.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • zend  Male
  • Počasni građanin
  • Pridružio: 22 Okt 2009
  • Poruke: 900
  • Gde živiš: Pancevo

Pazi nema veze da li cu prvo da setujem 0 pa posle array. Izvali kod mene je rad ako nemas stavke u korpi onda ona ni ne postoji zato je 0. Nema je. Cim dodas stavku korpa se pravi tim kodom sto si citirao. Da li me razumes sta hocu da kazem. pocetna vrednost je 0



offline
  • Pridružio: 16 Jan 2010
  • Poruke: 241
  • Gde živiš: Zemun

zend ::Pazi ja kod mene pri unosenju podataka o porudzbinama kupaca koristim transakcije, postupak je jednostavan i siguran koristim masinu baze
InnoDB

Imas tri mogucnosti belezenja stavki koje je korisnik izabrao prilikom kupovine.
1. Da koristis promenjivu sesije
2. Da upisujes u bazu
3. Da koristis cookies

Ako izaberes da koristis sesije za cuvanje izabranih proizvoda pri prelasku s jedne stranice na drugu, pojednostavljuje kod jer nije potrebno da se ti podaci neprekidno ucitavaju iz baze podataka.

Pazi osim toga, imas brdo korisnika koji samo pretrazuju Web lokaciju, pa se na kraju predomisle i ne kupe nista, nece puniti bazu podataka smecem.

Zato je najbolje da cuvas u jednoj promenljivoj sesije ili cak sto vise u grupi takvih promenljivih u kojima ces da cuvas podatke o proizvodima koje je korisnik izabrao.
Kada korisnik zavrsi kupovinu i plati proizvod koji je izabrao, podatke o tome upisujes u bazu podataka kao evidenciju podataka da je transakcija obavljena.

Te podatke koje upises mozes da upotrebis i za to da bi u nekom uglu stranice prikazao tekuce stanje korpe. Tako ce korisnik u svakom trenutku znati koliko ce potrositi. Wink

Evo ti neki primeri kod mene kako je.

Ovo koristim da prikazem korpu.

<?php   include ('sc_fns.php');   // Posto za rad korpe koristim sesiju  onda je i zapocinjem    session_start();   @ $new = $_GET['new'];   if($new)   {     //Nova stavka je izabrana     if (!isset($_SESSION['cart']))     {       $_SESSION['cart'] = array();       $_SESSION['items'] = 0;       $_SESSION['total_price'] ='0.00';     }     if (isset($_SESSION['cart'][$new]))       $_SESSION['cart'][$new]++;     else       $_SESSION['cart'][$new] = 1;     $_SESSION['total_price'] = calculate_price($_SESSION['cart']);     $_SESSION['items'] = calculate_items($_SESSION['cart']);   }   if (isset($_POST['save']))   {        foreach ($_SESSION['cart'] as $isbn => $qty)     {       if ($_POST[$isbn]=='0')         unset($_SESSION['cart'][$isbn]);       else         $_SESSION['cart'][$isbn] = $_POST[$isbn];     }     $_SESSION['total_price'] = calculate_price($_SESSION['cart']);     $_SESSION['items'] = calculate_items($_SESSION['cart']);   }   do_html_header('Your shopping cart');   if($_SESSION['cart']&&array_count_values($_SESSION['cart']))     display_cart($_SESSION['cart']);   else   {     echo '<p>There are no items in your cart</p>';     echo '<hr />';   }   $target = 'index.php';   // Ako smo dodali stavku u korpu, nastavljamo kupovinu  //  u toj kategoriji   if($new)   {     $details =  get_book_details($new);     if($details['catid'])          $target = 'show_cat.php?catid='.$details['catid'];   }   display_button($target, 'continue-shopping', 'Continue Shopping');    // Koristim ovaj kod ako je SSL aktivan   //   // $path = $_SERVER['PHP_SELF'];   // $server = $_SERVER['SERVER_NAME'];   // $path = str_replace('show_cart.php', '', $path);   // display_button('https://'.$server.$path.'checkout.php',   //                  'go-to-checkout', 'Go To Checkout');    // Ako SSL nije aktivan  koristim ovaj kod   display_button('checkout.php', 'go-to-checkout', 'Go To Checkout');      do_html_footer(); ?>

E sada da ti pojasnim ova scripta se sastoji od tri glavna dela:
1. Prikazivanje sadrzaja korpe
2. Dodavanje sadrzaja u korpu
3. Snimanje izmena u korpu

Bez obzira na koju je stranicu neki korisnik dosao uvek mu mozes prikazati sadrzaj korpe. Ako na primer taj korisnik pritisne dugme POGLEDAJ KORPU
Prikazes mu sadrzaje gore sam u kodu to naveo ali ajde da odvojim taj deo.

if ($_SESSION['cart'] &&                      array_count_values ($_SESSION['cart'] ))                      display_cart ($_SESSION['cart'] ); else {       echo 'Korpa je prazna'; }

Da dodas stavku u korpu

if ( !isset ($_SESSION['cart'])) {   $_SESSION['cart'] = array();   $_SESSION['cart'] = 0;   $_SESSION['total_price'] = '0.00'; }

Korpa je u pocetku prazna.

Drugo kada znas da korpa postoji mozes da dodas izabrani proizvod u nju.

if (isset($_SESSION['cart'] [$new]))             $_SESSION['cart'] [$new] ++ ; else        $_SESSION['cart'] [$nw] = 1;

Isitas da li odredjeni proizvod vec postoji u korpi. Ako je tako povecas za jedan broj primeraka tog proizvoda. Ako nije dodaje se novi proizvod u korpu.

I naravno na kraju treba da izracunas ukupan iznos i broj proizvoda

$_SESSION['total_price']= calculate_price ($_SESSION['cart']); $_SESSION['items'] = calculate_items ($_SESSION['cart']);

Ux ja se raspisao... DOsta ti je izvali sada sustinu svega tako je kod mene po tom fazonu radi i nemam problema. Pogledaj vidi probaj da izvuces maximum iz sesija jer su cudo. Uradi na svoj nacin ja sam ti cisto objasnio kako to funkcionise da ti ne pisem celu moju korpu sada... Nadam se da sam ti pomogao.
Pozdrav Ziveli


Hvala ti na detaljnom uputstvu, pokusacu da ga primenim na svom projektu. Da li neko zna kako da resim problem dugmeta i pokretanja upita za brisanje stavke u bazi?

offline
  • Pridružio: 15 Maj 2006
  • Poruke: 333
  • Gde živiš: Babušnica

Na koje dugme misliš?

-> http://www.w3schools.com/sql/sql_delete.asp

offline
  • Pridružio: 16 Jan 2010
  • Poruke: 241
  • Gde živiš: Zemun

Ono html dugme button ili input type="button" ili submit, ne znam koje ide. Evo celog koda koji se odnosi na pravljenje table u korpi:
<?php require_once 'unos.php';?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>Pretraga mobilnih telefona - korpa</title> </head> <body> <h1> Korpa </h1> <div> <?php include 'konekcija.php';    $ip = $_SERVER['REMOTE_ADDR'];    $tabela = mysql_query("SELECT proizvodjac, model FROM korpa WHERE ip_adresa = '".$ip."'") or die(mysql_error());        echo '<table border=1>';    echo '<tr>';    echo '<th>Proizvodjac</th>';    echo '<th>Model</th>';    echo '</tr>';        $brojredova = mysql_numrows($tabela);        for($i=0; $i<$brojredova; $i++){           while($red1 = mysql_fetch_assoc($tabela)){       echo '<tr>';       $nazivproizvodjaca = $red1['proizvodjac'];       $nazivmodela = $red1['model'];                        echo '<td>'.$nazivproizvodjaca.'</td>';       echo '<td>'.$nazivmodela.'</td>';       echo '<td><input type="submit" name="obrisi" value="Obrisi" /></td>';       if(isset($_POST['obrisi'])){          $brisanje = mysql_query("DELETE from korpa where ip_adresa = '".$ip."', proizvodjac = '".$nazivproizvodjaca."', model = '".$nazivmodela."'");          }       if($i == $brojredova){          echo '</tr>\n';          echo '</table>';          }       }       }       mysql_close($con); ?> <a href="index.php">Nastavi sa kupovinom</a> </div> </body> </html>

offline
  • zend  Male
  • Počasni građanin
  • Pridružio: 22 Okt 2009
  • Poruke: 900
  • Gde živiš: Pancevo

Pa to ti je najprostije vatas artiklu po ID-u i brises je. SUBMIT mozes neki JS da primenis tu.

offline
  • Pridružio: 16 Jan 2010
  • Poruke: 241
  • Gde živiš: Zemun

Aha i u okviru js, pozovem upit? Ja se izvinjavam ako su pitanja malo glupa, ali od skoro sam poceo da se intereaujem za php i uzeo sam projekat da pravim neku web aplikaciju.

offline
  • zend  Male
  • Počasni građanin
  • Pridružio: 22 Okt 2009
  • Poruke: 900
  • Gde živiš: Pancevo

ma za js cisto da te priupita ono (Da li ste sigurni da li zelite da obrisete ovu stavku OK, CANSEL) Pazi ovako ti pritiskom na dugme brises kolonu iz baze koja je selektovana koji si ID prosledio....

Sada je tvoje da li ces pored svakog proizvoda da imas checkbox ili delite button to je tovoje...

if (isset($_POST['id'])) { $id=$_POST['id']; $db="newdb"; $link = mysql_connect("localhost", "root", ""); if (! $link) die("Couldn't connect to MySQL"); mysql_select_db($db , $link) or die("Couldn't open $db: ".mysql_error()); mysql_query("DELETE FROM BLABLABLA WHERE id=$id"); mysql_close($link); }

Ovde si uvatio id (WHERE id=$id) iz promenljive $id =$_POST ['id'] i prosledjujes tu vrednost upitu WHERE. Pazi ti tamo moras da izlistas i ID SELECT da bi imao u promenljivoj koji ID mu pripada.

offline
  • Pridružio: 16 Jan 2010
  • Poruke: 241
  • Gde živiš: Zemun

Tako sam i uradio, u svakoj koloni imam dugme obrisi. Nisam imao vremena ovih dana, videcu da to resim sa js. Pokusacu da nadjem neki slican kod i da ga primenim, posto nisam bas nesto strucan sa js.

Ko je trenutno na forumu
 

Ukupno su 1013 korisnika na forumu :: 26 registrovanih, 5 sakrivenih i 982 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 357magnum, babaroga, bobomicek, Bubimir, ccoogg123, goranperović66, Insan, kunktator, ljuba, M1los, Miki01, opt1, pein, Petarvu, Prašinar, royst33, solic, Srle993, Tvrtko I, vathra, Vatreni Zmaj, Vlad000, Vlada1389, Wiesel092, wizzardone, x9