Nasıl koşullu çıkarmak için bir PHP ifadesi eklemek istiyorum?

3 Cevap php

Ben kullanıcı yapar seçimlere dayalı bir toplam hesaplamak için PHP kullanan bir form var. 13 seçimleri toplam vardır. Ben "Mavi" ve "Turuncu", şaşırıp iki bölüm vardır:

Kullanıcı "Mavi" seçerse, 250,00 $ fiyat eklenir

Kullanıcı "Turuncu" seçerse, 150,00 $ fiyat eklenir

Ben anlamaya çalışıyorum şey: Ben kullanıcı Mavi seçer ve ardından Turuncu seçmek için üzerine giderse o bunu yapmak istiyorum - Orange için ücret toplam eklenecektir olmaz. Onlar Mavi öğesini ve Orange seçmek için gitti olmasaydı Öte yandan, ben toplam ekledi almak 150,00 $ isterim.

Bunu açıklamak için aklıma tek yolu Blue satın alırsanız, Turuncu dahil olmasıdır.

İşte benim HTML:

BLUE

Yes No

ORANGE

Evet

No

İşte benim PHP:

<?php
$one = $_POST ['one'];
$two = $_POST ['two'];
$three = $_POST ['three'];
$four = $_POST ['four'];
$five = $_POST ['five'];
$six = $_POST ['six'];
$seven = $_POST ['seven'];
$eight = $_POST ['eight'];
$nine = $_POST ['nine'];
$ten = $_POST ['ten'];
$eleven = $_POST ['eleven'];
$twelve = $_POST ['twelve'];
$thirteen = $_POST ['thirteen'];
$total = ($_POST['one'] + $_POST['two'] + $_POST['three'] + $_POST['four'] 
+   $_POST['five'] + $_POST['six'] + $_POST['seven'] + $_POST['eight']+ 
$_POST['nine'] + $_POST['ten']+ $_POST['eleven'] + 
$_POST['twelve']+ $_POST['thirteen']);

Birisi ben o kadar emin olmak gerektiğini söyledi:

$four = $_POST ['four']- $_POST ['six'];

ve Mavi (dört) seçilen ve Orange (altı) olduğunu bile bile, Orange için değer toplamına eklenir almazsınız dışında çalışıyor. Bir if / else deyimi veya bir şey kullanıyor olmalıdır? Ayrıca, bu şekilde güvenli olması gerekmez. Herhangi bir fikir için şimdiden teşekkür ederiz.

3 Cevap

Evet, bir if / else gitmek için yoludur. Sen-line ternary operator ile gerçekleştirebilirsiniz.

Bu değiştirin:

$total = ($_POST['one'] + $_POST['two'] + $_POST['three'] + $_POST['four'] 
+   $_POST['five'] + $_POST['six'] + $_POST['seven'] + $_POST['eight']+ 
$_POST['nine'] + $_POST['ten']+ $_POST['eleven'] + 
$_POST['twelve']+ $_POST['thirteen']);

Buna:

$total = ($_POST['one'] + $_POST['two'] + $_POST['three'] + $_POST['four'] 
+   $_POST['five'] + (($_POST['four'] > 0) ? 0 : $_POST['six']) + $_POST['seven'] + $_POST['eight']+ 
$_POST['nine'] + $_POST['ten']+ $_POST['eleven'] + 
$_POST['twelve']+ $_POST['thirteen']);

Bu $ _POST değerleri tamsayı olduğunu varsayar.

Eğer Mavi olsun Portakal dahil ise, o zaman muhtemelen 2 farklı evet / hayır seçenek olmamalıdır.

Bunun yerine, daha olası bir soru olmalıdır:


Which plan would you like? Orange (150) Blue (250)

Evet bazı if / else mantığı gerekir

if( empty($_POST['blue'] ) && !empty($_POST['orange'] ) )
{
    $_POST['total'] += $_POST['orange'];
}

False ise mavi ise turuncu sadece eklendi alır. (Ben Tanımsız değişkenlerin ilgili uyarıları önlemek için () boş kullanın notu)

Meraktan neden sayısına göre yazılan değişkenleri adlandırma? Eğer gelecekte değiştirmek zorunda adıyla adlandırma daha az kafa karıştırıcı hale olabilir.