• 20-12-2009, 21:57:43
    #1
    Herkese merhaba,

    Öncelikle Mysql yapısını yazayım

    CREATE TABLE koltuk
    (
       harf varchar(1) not null,
       sira int not null,
       durum int,
       kullanici varchar(10),
       PRIMARY KEY (harf,sira)
    );
    Böyle bir tablo yapısı olan bir oturma düzeni scripti hazırlıyorum. "harf" sırası A'dan Z'ye kadar gidiyor. Şöyle bir kodla da hangi kullanıcının kaç koltuk sattığını görebiliyorum.
    <?php $toplam=mysql_num_rows(mysql_query("SELECT * FROM koltuk where kullanici='test' and durum='2'")); 
    echo $toplam;?>
    Bu istatistiğin yanı sıra "$toplam" değişkeniyle koltuk fiyatını çarptırıp toplam gelire ulaşıyorum. Tam da bu noktada takıldığım bir sorun var. A'dan R'ye kadar fiyat 30 diyelim, R'den Z'ye kadar ise fiyat 20. Doğal olarak benim yazdığım kodla tüm koltukları 30'dan hesaplıyorum. Bana yol gösterirseniz çok sevinirim arkadaşlar.
  • 20-12-2009, 22:26:54
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Sanırım size REGEX gerekli. Sanırım kullanacağın REGEX kodları da [A-Ra-r]+ ve [R-Zr-z]+ olacaktır. if(gelen şey == [A-Ra-r]+) gibi gibi olacaktır büyük ihtimalle...
  • 20-12-2009, 22:38:21
    #3
    Php konusunda epey bir yeniyim. Örnek gösterdiğiniz kodların nasıl kullanılacağını çözmem bayağı zaman alır.



    Daha anlaşılır olsun diye tablonun bir resmini koydum. Eğer örnek bir kod yazabilirseniz minnettar olurum.
  • 20-12-2009, 22:53:05
    #4
    Durum "0" ise koltuk satılmamıştır durum "2" ise koltuk satılmıştır. Ben burda



    test veya safak kullanıcısının durumu "2" olan koltuklarının toplamını çıkartıyorum ve onu sabit bir rakamla çarpıp toplam geliri buluyorum. Ama yapmak istediğim şey ise sabit bir rakamla çarpmak yerine bir değişkenle çarpmak. Değişken ise A'dan R'ye kadar atıyorum 30, R'den Z'ye kadar ise 20 değerini vermeli.
  • 20-12-2009, 22:57:59
    #5
    İnanınki benimde REGEX hakkında fazla değil hiç bilgim yok diyebilirim. Ancak php.net falan araştırarak aşağıdaki gibi bir kod hazırladım. Umarım çalışıyordur.

    <?php
    	$toplam = mysql_num_rows(
    		mysql_query("
    		SELECT *
    		FROM koltuk
    		WHERE kullanici='test'
    			AND durum='2'")); 
    	if (eregi('[A-Ra-r]+', $toplam))
    		$ar = 30;
    	elseif(eregi('[R-Zr-z]+', $toplam))
    		$ar = 20;
    ?>
    Şu adreslere bakarak REGEX hakkında bilgi edinebilirsin:
    http://www.php.net/manual/tr/function.eregi.php
    http://www.krsnsk.com/programlama/ph...ulamalari.html
  • 20-12-2009, 23:01:57
    #6
    Size daha basit bir cozumum var...
    yeni bir tablo olusturuyorsunuz ve burda
    3 kolon oluyor
    1 id autoincrement
    2 koltuk
    3 fiyat
    a dan z ye kadar koltuk numaralarini ve karsilarina fiyatlarini giriyorsunuz.

    simdi ilk attiginiz select cumlesinde bu tabloyu da inner join ile baglayip hangi koltugun kac para degerinde oldugunu buluyoruz. hem de fiyatlar DB de durdugu icin istediginiz zaman S nolu koltuk 55 tl olsun diyebilirsiniz.

    sorgu ornegi:
    SELECT k.*,kf.fiyat FROM koltuk k
    inner join koltuk_fiyat kf on (k.koltuk = kf.koltuk)
    where k.kullanici='test' and k.durum='2'

    kolay gelsin.
  • 21-12-2009, 01:08:49
    #7
    İlginiz için teşekkür ederim arkadaşlar. Sorunu şöyle çözdüm:

    Koltuk tablosuna fiyat isimli bir sütun daha ekleyip r'den önceki ve sonrakiler için farklı değer verdim. Çektiğim koda bu değerleri de koşul olarak ekleyince sorun çözüldü.