• 29-09-2009, 23:56:24
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    merhabalar arkadaşlar sepete ekleme modülü yapmaya çalışıyorum ip ye göre veritabanına ekleyerek denedim ancak tam verim alamadım şimdi session ile yapmaya çalışıyorum ancak biraz yardıma ihtiyacım var kodlar aşağıda ürünler için sepete ekle dediğimde sepette ürün çıkıyor ancak bir başka ürün ekle dediğimde bir önceki ürün siliniyor.. bir önceki ürün ile birlikte session ile nasıl bütün sepete eklenen ürünleri alt alta sıralatabilirim...yardımcı olursanız sevinirim

    <?php
    include("db.php");
    
    Function index(){
    echo "Ürünler<br><hr>";
    $sor	= mysql_query("Select * From urunler order by id desc");
    	while($yaz = mysql_fetch_array($sor)){
    		
    		$id			= $yaz["id"];
    		$urunadi	= $yaz["urunadi"];
    		$fiyat		= $yaz["fiyat"];
    		$aciklama	= $yaz["aciklama"];
    
    
    echo "<table width=\"200\" border=\"1\">
      <tr>
        <td>$urunadi</td>
      </tr>
      <tr>
        <td>$aciklama</td>
      </tr>
      <tr>
        <td>$fiyat</td>
      </tr>
      <tr>
        <td><a href=\"index.php?git=sepeteekle&id=$id\">Sepete Ekle</a></td>
      </tr>
    </table>
    
    ";
    
    }
    }
    
    Function sepeteekle(){
    echo "<br><br>";
    echo "Sepetimdekiler<br><hr>";
    @$sepetid = $_GET["id"];
    $sor	= mysql_query("Select * From urunler where id = $sepetid order by id desc");
    	while($yaz = mysql_fetch_array($sor)){
    		
    		$id			= $yaz["id"];
    		$urunadi	= $yaz["urunadi"];
    		$fiyat		= $yaz["fiyat"];
    		$aciklama	= $yaz["aciklama"];
    		
    
    $_SESSION["id"] = $id;
    $_SESSION["urunadi"] = $urunadi;
    
    echo $_SESSION["id"];
    echo "<br>";
    echo $_SESSION["urunadi"];
    
    echo "<br><a href=\"index.php?git=satinal\">Satın Al</a>";
    
    }
    }
    
    
    @$git = $_GET["git"];
    
    switch($git){
    
    default:
    	index();
    	break;
    
    case "sepeteekle";
    	index();
    	sepeteekle();
    	break;
    
    
    }
    
    
    ?>
  • 30-09-2009, 00:18:17
    #2
    Şöyle dene;

    Alıntı
    $_SESSION["id"][]
    Yani sessionları dizi şeklinde at..
  • 30-09-2009, 00:25:26
    #3
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Arkadaşım öncelikle $_GET['id'] o şekilde kullanılmaz açığa sepep olur en azından intval($_GET['id']) de, hatta kendine göre bir temizleme fonksiyonu yazıp ondan geçir.

    Sessiona attığın zaman da dizi olarak tutman gerekir, bu şekilde devamlı üstüne yazar. Misal:

    <?php
    
    $_SESSION['urun'][$id] = array('id' => $id, 'ad' => $urunadi, 'ozel' = > $ozellik) ;
    
    ?>
    gibi. Daha sonra istediğin ide göre okutursun. Ayrıca önce kontrol edersin o idde ürün eklenmiş mi diye ki tekrar ekleme.
  • 30-09-2009, 00:39:03
    #4
    hocam tam olarak anlayamadım...nasıl kullanıcam..session ile dizi oluşturamadım hata verdi sürekli yardımcı olursanız sevinirim
  • 30-09-2009, 00:51:08
    #5
    ACYN adlı üyeden alıntı: mesajı görüntüle
    hocam tam olarak anlayamadım...nasıl kullanıcam..session ile dizi oluşturamadım hata verdi sürekli yardımcı olursanız sevinirim
    Eksik yazmışım; şu şekilde atman lazım, arkadaş yukarıda uzunca anlatmış..


    $_SESSION["id"][$id]
    Yani her id değerini diziye atacaksın, sonrada gösterdiğin yerde foreach ile listeleyeceksin, listelediğin id numarasına görede ürünün adını falan sorgulatırsın, yada üstteki gibi yine sessiona atarsın, binbir türlü yöntemi var, sepet olayı biraz dikkat ister biraz araştırma yamanı öneririm, sayfanın başınada session_start() koymayı unutma..
  • 30-09-2009, 12:08:00
    #6
    teşekkürler hocam ama dizine atıp bi türlü yazdıramadım bu hatayı verio

    Notice: Array to string conversion in C:\wamp\www\s\index.php on line 52

    Warning: Invalid argument supplied for foreach() in C:\wamp\www\s\index.php on line 53

    Function sepeteekle(){
    ob_start(); session_start();
    
    echo "<br><br>";
    echo "Sepetimdekiler<br><hr>";
    @$sepetid = $_GET["id"];
    $sor	= mysql_query("Select * From urunler where id = $sepetid order by id desc");
    	while($yaz = mysql_fetch_array($sor)){
    		
    		$id			= $yaz["id"];
    		$urunadi	= $yaz["urunadi"];
    		$fiyat		= $yaz["fiyat"];
    		$aciklama	= $yaz["aciklama"];
    		}
    
    $_SESSION["id"] = $id;
    $_SESSION["urunadi"] = $urunadi;
    $_SESSION["id"][$id] = array('id'=>$id, 'urunadi'=>$urunadi);
    foreach($_SESSION["id"][$id] as $deger=>$key){
    echo "<table width=\"200\" border=\"1\">
      <tr>
        <td>".$deger."</td>
      </tr>";}
    echo  "<tr>
        <td>".$_SESSION["urunadi"]."</td>
      </tr>
      <tr>
        <td><br><a href=\"index.php?git=satinal\">Satin Al</a><br>
    		<br><a href=\"index.php?git=sil\">Sil</a>
    </td>
      </tr>
    </table>";
    
    
    }
    52 ve 53. satırda bu kodlar var

    $_SESSION["id"][$id] = array('id'=>$id, 'urunadi'=>$urunadi);
    foreach($_SESSION["id"][$id] as $deger=>$key){

    array konusunda tam yapamadım sanırım
  • 30-09-2009, 12:16:19
    #7
    Sorunu tam bilmiyorum, net okuyamadım yalnız registers_globals açıksa,$id değişkeni ile $_SESSION['id'] değüişkeni aynı oluyo. yani sizin $id değişkeni ile $_SESSION['id'] yi aynı anda kullanmanız problem yaratıyor olabilir. yani $id değişkenini array olarak görüyorsa, onu bir başka diziye anahtar olarak kullanamazsın. Velhasılı kelam $id yerine bir başka isim de değişken kullanarak deneyin
  • 30-09-2009, 23:21:48
    #8
    hocam dizine attım ancak yine sepete atarken üzerine yazıo kodlar aşağıda sorun nerde bulamadım...

    Function sepeteekle(){
    ob_start(); session_start();
    
    echo "<br><br>";
    echo "Sepetimdekiler<br><hr>";
    @$sepetid = $_GET["id"];
    $sor	= mysql_query("Select * From urunler where id = $sepetid order by id desc");
    	while($yaz = mysql_fetch_array($sor)){
    		
    		$id			= $yaz["id"];
    		$urunadi	= $yaz["urunadi"];
    		$fiyat		= $yaz["fiyat"];
    		$aciklama	= $yaz["aciklama"];
    		}
    
    
    $_SESSION["idd"][$id] = array('id'=>$id, 'urunadi'=>$urunadi);
    foreach($_SESSION["idd"][$id] as $deger=>$key){
    echo "<table width=\"200\" border=\"1\">
      <tr>
        <td>".$key."</td>";}
    echo "</tr>
      <tr>
        <td><br><a href=\"index.php?git=satinal\">Satin Al</a><br>
    		<br><a href=\"index.php?git=sil\">Sil</a>
    </td>
      </tr>
    </table>";
    
    
    }
  • 30-09-2009, 23:32:07
    #9
    Arkadaşım sen benim mesajımı dikkatli incelemişmiydin ?
    <?php
    $_SESSION['urun'][$id] = array('id' => $id, 'ad' => $urunadi ) ;
    ?>
    Burada $_SESSION['urun'] isimli bir değişken yapıyoruz önce ve $id değeri ile ayırıp diğer değerleri ekliyoruz. Diyelim ki senin ürünün anakart ve id'i 5 olsun. Yukarıda ki şekilde yazınca değişken şu hale gelmiş oluyor.
    <?php
    $_SESSION['urun'][5] = array('id' => 5, 'ad' => 'Anakart') ;
    ?>
    Sonra yeni bir ürün eklenecek olursa misal ekran kartı ve id 3 olsun.Değişken bu hale gelecek:
    <?php
    $_SESSION['urun'][5] = array('id' => 5, 'ad' => 'Anakart') ;
    $_SESSION['urun'][3] = array('id' => 3, 'ad' => 'Ekran Kartı') ;
    ?>
    Senin burayı listelemen için örnek olarak bu şekilde yazabilirsin:
    <?php
    foreach($_SESSION['urun'] as $key => $val){
    echo '<table width="200" border="1">
      <tr>
        <td>İD : '.$val['id'].'</td>
      </tr>
      <tr>
        <td>AD : '.$val['ad'].'</td>
      </tr>
      <tr>
        <td><br><a href="index.php?git=satinal">Satin Al</a><br>
            <br><a href="index.php?git=sil">Sil</a>
    </td>
      </tr>
    </table>'; 
    }
    ?>
    Yani bunu direk $_SESSION['urun'] = array('id' => $id, 'ad' => $urunadi ) ; olarak da kullanabilirsin, ancak diğer türlü kullanımı daha kolay olur, çünkü istediğin idde ki sırayı almak için $_SESSION['urun'][$idnosu] olarak kullanırsın.