v2.5.2
Giriş yap

php fiyatlandırma hk

wwx
321 defa görüntülendi

Merhabalar tarihsel fiyatlandırma sistemim var tarihsel fiyatlandırma da 1 veri olunca sistem sorunsuz çalışmakta
ama 2-3-4 tane tarihsel fiyatlandırma olunca sistem karışmakta enson veriyi almakta

$tarih1= new DateTime($parts[0]);
    $tarih2= new DateTime($parts[1]);
    $interval= $tarih1->diff($tarih2);
    $cikan = $interval->format('%a');

Tarihsel fiyatlandırma da tarih arasındaki günleri bu şekilde buluyorum

2022-05-21 - 2022-05-22 İlk tarih veriyi düzgün hesaplıyor
2022-05-23 - 2022-05-26 İkinci tarih veriyi sapıtıyor

if ($alt['tarihsel'] != '""') {
$formatS = json_decode($alt['tarihsel']);
$selDateOne = strtotime(str_replace('/', '-', $_SESSION['alistarih']));
$selDateTwo = strtotime(str_replace('/', '-', $_SESSION['iadetarih']));
foreach ($formatS as $formats) {
	$parts = explode('|', $formats);
	$dateOne = strtotime($parts[0]);
	$dateTwo = strtotime($parts[1]);
	if ($dateOne <= $selDateOne && $dateOne <= $selDateTwo || $dateTwo <= $selDateOne && $dateTwo <= $selDateTwo) {
		$parts[2];
		$parts[3];
		$parts[4];
		$parts[5];
		$parts[6];
	}
}
	$tarih1= new DateTime($parts[0]);
	$tarih2= new DateTime($parts[1]);
	$interval= $tarih1->diff($tarih2);
    $cikan = $interval->format('%a');

     $gun = $_GET['gun'];
	 $tarihsel = $cikan;
if ($_SESSION['yetiskin'] == 1) {
	echo $gun > $tarihsel ? ($tarihsel * $parts[2]) + (($gun - $tarihsel) * $alt['priceOne']) : $gun * $parts[2] + $cocukfiyat;
} else if ($_SESSION['yetiskin'] == 2) {
	echo $gun > $tarihsel ? ($tarihsel * $parts[3]) + (($gun - $tarihsel) * $alt['priceTwo']) : $gun * $parts[3] + $cocukfiyat;
} else if ($_SESSION['yetiskin'] == 3) {
	echo $gun > $tarihsel ? ($tarihsel * $parts[4]) + (($gun - $tarihsel) * $alt['priceThree']) : $gun * $parts[4] + $cocukfiyat;
} else if ($_SESSION['yetiskin'] == 4) {
	echo $gun > $tarihsel ? ($tarihsel * $parts[5]) + (($gun - $tarihsel) * $alt['priceFour']) : $gun * $parts[5] + $cocukfiyat;
} else if ($_SESSION['yetiskin'] == 5) {
	echo $gun > $tarihsel ? ($tarihsel * $parts[6]) + (($gun - $tarihsel) * $alt['priceFive']) : $gun * $parts[6] + $cocukfiyat;
}
}
Cevap yaz
Cevaplar (6)
munzevi
707 gün önce

kardeş bu sefer yardımcı olamayacağım. en azından yanıt vereyim de ayıp olmasın diye düşündüm.

wwx
707 gün önce

Merhaba
$alt2['tarihsel']

Tarihse fiyatlandırmanın Giriş Tarihi - Çıkış Tarihini ve 5 Kişi Fiyatını Kapsamakta ve bu json formatın da

$_SESSION['alistarih']; Anasayfadaki Giriş Tarihi
$_SESSION['iadetarih']; Anasayfadaki Çıkış Tarihi

Bu kısım tarihsel sütunda ki tarih kısmı
$dateOne = strtotime($parts[0]);
$dateTwo = strtotime($parts[1]);

Bu kısım tarihsel sütunda ki fiyatlandırma kısmı
$parts[2];
$parts[3];
$parts[4];
$parts[5];
$parts[6];

Bu ise normal fiyatlandırma
$alt['priceOne'];
$alt['priceTwo']
$alt['priceThree']
$alt['priceFour']
$alt['priceFive']

Başta dediğim gibi alt yapıyı ben kurmadım kursaydım bu json formatına hiç girmezdim çok büyük proje olmadıkça kullanılmasından yana değilim neyse

Şimdi ben 3 günlük (Cuma-Cumartesi-Pazar) bir rezervsayon yapıcam ama odada Cumartesi ve Pazar günü için tarihsel fiyatlandırma var Cuma gününü normal kişi fiyatından hesaplama yapacak Cumartesi ve Pazar için tarihsel fiyatlandırmadaki fiyatı alacak

tarihsel sütununda 2022-05-22 2022-05-24 arası bir tarihsel fiyatlandırma mevcut anasayfa da ben giriş ve çıkışımı 2022-05-22 2022-05-25 olarak ayarladım yani 3 günlük bir rezervasyon bana sistem 22 ve 24 arasını tarihsel bazda 25 i normal kişi fiyatından hesaplaması gerekiyor
tek bir tarihsel veri olunca bu stabil çalışıyor ama 1 den fazla bir tarihsel fiyatlandırma olunca enson eklenen veriyi tüm tarihsel fiyatlandırmada aktif hale getiriyor

Umarım anlatabilmişimdir yine anlatamadıysam Discord veya Skype Üzerinden anlatmak isterim

munzevi
708 gün önce

benim anlayışım galiba kıt, halbu ki bir hata fark etmem için genelde birinin açıklama yapmasına ihtiyaç duymam. kardeş editöre yapıştırdım kodlarını, uzun uzun baktım. çok sayıda tarih var burada, en azından insan kişi test edebilsin diye değişkenlere örneklerini tanımlar. ben ne bileyim hangi değişkenden ne geliyor, bazılarını sessiona kaydetmişsin bazılarını json'dan dönüştürmüşsün. açıklamanda bir şey ifade etmiyor. desen ki na bak kodum bu kadar, şu satırda tarih olayları karşıyor, uzun ama gereksiz bir açıklama yapmış gibisin en azından anlamadığım için böyle söylüyorum.

$alt2['tarihsel'] = 'nedir';
$_SESSION['alistarih'] = 'nedir';
$_SESSION['iadetarih'] = 'nedir';

şunları sana zahmet gerçek verilerinle tanımlayıver. sonuçta hata değil, mantıksızlık üzerine bir sorun yaşıyorsun. hata olsa, hiç örnek veriye gerek yok, şurada hata var deriz yani.

2022-05-21 - 2022-05-23
2022-05-24 - 2022-05-26

bunlar muhtemelen üsteki "alistarih" alttaki ise "iadetarih" ama $formatS belirli herhangi bir standarta uygun değil veya çağrışım yapmıyor, jsondan objeye dönüştürmüşsün, dizi de değil ve daha sonra | ifadesi ile parçalayıp dizi haline getirmişsin.
sen söyle nasıl test edeyim ben bunu? çıkan sonuçlardan ilk iki değeride almamışsın, ne mantıkla bunu böyle yaptın elimde veri olmadan bilemem ki.

wwx
708 gün önce

2 tane tarihsel fitatlandırma girdim farklı tarihlerde
2022-05-21 - 2022-05-23
2022-05-24 - 2022-05-26 olarak

2 tarihin de aralığı 2 gün oluyor bu aralık 3-4 gün olsada önemli değil
Şimdi mesele şurda ilk tarihsel arama kısmında sorun olmuyor gayet güzel veriyi veriyor ama ben 2. tarihsel aramayı yaptığım zaman
ilk tarihsel arama ve ikinci tarihsel aramayı da yazdırıyor
fiyat kısmını foreach döngüsünden çıkarsam sadece son eklenen tarihsel veriyi ekliyor çözemiyorum yardımlarınızı bekliyorum

if ($alt2['tarihsel'] != '""') {
$formatS = json_decode($alt2['tarihsel']);
$selDateOne = strtotime(str_replace('/', '-', $_SESSION['alistarih']));
$selDateTwo = strtotime(str_replace('/', '-', $_SESSION['iadetarih']));
foreach ($formatS as $formats) {
	$parts = explode('|', $formats);
	$dateOne = strtotime($parts[0]);
	$dateTwo = strtotime($parts[1]);
	if ($dateOne <= $selDateOne && $dateOne <= $selDateTwo || $dateTwo <= $selDateOne && $dateTwo <= $selDateTwo) {
		$parts[2];
		$parts[3];
		$parts[4];
		$parts[5];
		$parts[6];
	
	$tarih1= new DateTime($parts[0]);
	$tarih2= new DateTime($parts[1]);
	$interval= $tarih1->diff($tarih2);
    $cikan = $interval->format('%a');

     $gun = $_GET['gun'];
	 $tarihsel = $cikan;
	$fiyatlar[] = $gun > $tarihsel ? ($tarihsel * $parts[2]) + (($gun - $tarihsel) * $alt2['priceOne']) : $gun * $parts[2] + $cocukfiyat;

} 
	}
}
munzevi
708 gün önce

anlamadım. bu arada şu koşulu kaldır ya, uzayıp gitmiş, mümkünse priceOne'ları falan 1-2-3 diye numaralandır kişiyle eşit gitsin saçma olmuş

$price = str_replace(
    array(1, 2, 3, 4, 5),
    array('priceOne',
          'priceTwo',
          'priceThree',
          'priceFour',
          'priceFive'),
    $_SESSION['yetiskin']
);
echo $gun > $tarihsel ?
    ($tarihsel * $parts[$_SESSION['yetiskin']]) + (($gun - $tarihsel) * $alt[$price]) :
$gun * $parts[$_SESSION['yetiskin']] + $cocukfiyat;

bu da o koşulun aynını yapıyor, $alt dizesi sayısal olsa $price değişkenine bile ihtiyaç kalmayacak

$x = $_SESSION['yetiskin'];
echo $gun > $tarihsel ? ($tarihsel * $parts[$x]) + (($gun - $tarihsel) * $alt[$x]) : $gun * $parts[$x] + $cocukfiyat;

bak $x saymazsak tek satıra düştü o kadar koşul. soruya gelicek olursak, ben anlamadım.

wwx
708 gün önce

arkadaşlar fikir yardım herşeye açığım yokmu yardımcı olacak birileri