Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

Foreach ile veritabanına toplu kayıt

Konu, 'PHP' kısmında levonter tarafından paylaşıldı.

  1. levonter

    levonter Üye

    Kayıt:
    27 Mart 2007
    Mesajlar:
    111
    Beğenilen Mesajlar:
    0
    merhabalar,


    üzerinde uğraştığım bir sepet sistemim var. fakat sepet.php de ki verilerimi db ye kaydedemiyorum. kalan herşey tamam fakat foreach ile dizileri gönderemiyorum.

    ürün fiyatı ile adetini çarpıp bir ürüne ait olan fiyatı yazdırıyorum. sayfanın altında da grantTotal id li kısıma tüm <tr> tagı içerisindeki ürün fiyat toplamlarını yazdırıyorum.


    aşağıda belirttiğim veriler tblurunsepet ablosuna eklenecek

    tablo alanları ;

    uye_SESSION_ID
    urunId
    urunAdet
    urunFiyat


    yukarıda yazdıgım alanları aşağıdaki değerleri foreach ile (yada daha iyi bir öneriniz var ise onunla) kaydetmek istiyorum.




    PHP:
     <div id="sepet-detay">
            <form action="islem.php" id="sepet-gonder" method="post" enctype="multipart/form-data">
              <input type="hidden" name="islem" value="sepete-urun-ekle">
              <table width="100%" cellpadding="5" cellspacing="0" >
                <?php 
            
            $sqlSepet 
    mysql_query("select * from tblsepet");
            
    $i=0;
            
            
            while(
    $results mysql_fetch_array($sqlSepet)) {
            
                
    $uid $results['urunId'];
                
    $kategori $results['urunKat'];
            
                    
    $sqlUrun mysql_query("select * from tblurunler where id=".$uid." order by id asc");
                    
    $urunler mysql_fetch_array($sqlUrun);
                    
                
    $urunadi $urunler['urunadi'];
                
    $birimfiyat $urunler['fiyat'];
                
    $id $results['id'];
                
    $i++;
                
            
    ?>
                <tr>
                  <td width="40%" align="left"><?=$urunadi?></td>
                  <td width="13%"><input type="text" size="2" value="1" id="qty_item_<?php echo $i?>" name="qty_item_<?php echo $i;?>"></td>
                  <td width="9%" align="center" id="price_item_1"><?=$birimfiyat?>
                    TL</td>
                  <td width="19%" align="center" id="total_item_1"></td>
                  <td width="19%" align="center"><p class="sepet-sil-class"><a href="sepet-sil.php?islem=sepet-sil&id=<?=$id?>">Sil</a></p></td>
                </tr>
                <? ?>
                <tr>
                  <td align="center"></td>
                  <td>&nbsp;</td>
                  <td>&nbsp;</td>
                  <td align="right" style="border-bottom:1px #f00 solid" >Toplam Tutar : </td>
                  <td align="center" style="border-bottom:1px #f00 solid;font-weight:bold;" id="grandTotal"></td>
                </tr>
                <tr>
                  <td align="center"></td>
                  <td>&nbsp;</td>
                  <td>&nbsp;</td>
                  <td align="center">&nbsp;</td>
                  <td align="center">&nbsp;</td>
                </tr>
                <tr>
                  <td colspan="3" align="center"></td>
                  <td align="center" class="sepet-btn-1 resimEfect2"><a href="urunler.php">&lt; Alış Verişe Devam </a></td>
                  <td align="center" class="sepet-btn-2 resimEfect2"><a href="sepet-2.php">Siparişi Onayla ></a></td>
                </tr>
              </table>
            </form>
            
            <!-- sepet içerik bitiş --> 
            
          </div>





    vakit ayırdığınız için tesekkurler, yorumlarınızı bekliyorum.
    iyi forumlar
     
  2. levonter

    levonter Üye

    Kayıt:
    27 Mart 2007
    Mesajlar:
    111
    Beğenilen Mesajlar:
    0
    yardımcı olabilecek yok mu?
     
  3. levonter

    levonter Üye

    Kayıt:
    27 Mart 2007
    Mesajlar:
    111
    Beğenilen Mesajlar:
    0
    sorum güncellendi.

    aşağıdaki kodlar ile veritabanına kayıt yapıyor fakat 1er sıra atlatarak yapıyor. yani yukarıdaki 4 adet alanı veritabanına

    5 | 1 | 4 | 2 yerine

    5 | 0 | 0 | 0
    0 | 1 | 0 | 0
    0 | 0 | 4 | 0
    0 | 0 | 0 | 2

    şeklinde yazıyor.

    bu problemi de atlatırsam sorun cozulmus olucak



    Kod:
    
     $adet =4;
    			 
    
    
    		     $siparisler = array(
    			 
    					"uyeId" => $_SESSION['giris_yapan_id'],
    					"urunId" => $uid,
    					"fiyat" => $birimfiyat,
    					"adet"  => $adet
    
    
    		);
    			
    			  foreach ($siparisler as $key => $value)
    				{
    					echo $value;
    
    
    					$kaydet = mysql_query("INSERT INTO tblurunsepet ($key) VALUES($value)");
    				  	
    				if(!$kaydet) {
    				echo "Hata Olustu:".mysql_error();
    				}
    				else {
    				
    				}
                }
    
    
     
  4. canbag

    canbag Aktif Üye

    Kayıt:
    28 Mart 2009
    Mesajlar:
    497
    Beğenilen Mesajlar:
    0
    Meslek:
    öğrenci
    Şehir:
    IEU MYO BP 1. Sınıf
    Burada neyi hedeflediğini tam anlayamadım 4 alanı tek satırda insert edersin foreach diğer ürünler için olmalıydı mantık hatası var gibi.

    Eğer oluşturacağın dizi
    PHP:
    $siparis = array(
                           array(
                                
    "uyeId" => $_SESSION['giris_yapan_id'],
                                
    "urunId" => 001,
                                
    "fiyat" => 599,
                                
    "adet"  => 4
                                  
    ),

                           array(
                                
    "uyeId" => $_SESSION['giris_yapan_id'],
                                
    "urunId" => 002,
                                
    "fiyat" => 39,
                                
    "adet"  => 3
                                  
    )


                        );
    // yukarıda 2 ürün için bilgiler var

    gibi olur ise for ile şu şekilde hepsini basarsın
    PHP:
    $say count($siparis);
    for(
    $x=0;$x<$say;$x++){

        echo 
    mysql_query('insert into tblurunsepet (uyeid,urunid,fiyat,adet) values('.$siparis[$x]["uyeid"].','.$siparis[$x]["urunid"].','.$siparis[$x]["fiyat"].','.$siparis[$x]["adet"].')') ? 'ok':'mysql hatasi';

    }

    //her döndüğünde bir siparişi işler

    kolay gelsin.
     
  5. levonter

    levonter Üye

    Kayıt:
    27 Mart 2007
    Mesajlar:
    111
    Beğenilen Mesajlar:
    0
    cok tesekkurler. birkac duzenleme ile direkt oldu. foreach ile gece tam 5 saatimi harcamıştım. bu kadar basit dusunmedim acıkcası :)
    kiss kuralı sonucta ... :) en basit haliyle yapmak gerek.

    peki foreach ile bu alanı yapmıs olsaydım nasıl bir yol izlemem gerekirdi. ??
     
  6. canbag

    canbag Aktif Üye

    Kayıt:
    28 Mart 2009
    Mesajlar:
    497
    Beğenilen Mesajlar:
    0
    Meslek:
    öğrenci
    Şehir:
    IEU MYO BP 1. Sınıf
    açıkcası foreach konusunda çok bi hakimiyetim yok pek de sevmem kullanmayı ama senin uygulamana benzer bir örnek var php.net de şu post; http://www.php.net/manual/en/control-structures.foreach.php#108689 yine aynı mantık biraz kurcalarsan for yerine foreach kullanırsın ama bence gereksiz :D hangisi daha hızlıdır orasını bilmem ama
    kolay gelsin.