- Проблем при проверката на true and false
WT форуми -> PHP MySQL ASP.NET -> Проблем при проверката на true and false
Създайте нова тема Напишете отговор 
Автор Съобщение
novakabg
Турист
Турист

Регистриран на: 13/05/2016 2:29 pm

Support: 5
Bonus: 10
Мнения: 335
Мнение 23/01/2019 2:37 pm     Проблем при проверката на true and false Отговорете с цитат


Здравейте, приятели.

Имам едно кодче което ме мъчи доста и не съм мн спец по PHP, и се чудя дали греша някъде!



//Имам изикване на data

$this->request->post['pizza_check'] // Винаги връща true или false

И искам да стартирам друг код ако примерно pizza_check е true

И ето и моята глупава проверка и всякакви други начини за проверка  :D


if ($this->request->post['pizza_check'] === true)
if ($this->request->post['pizza_check'] == "true")

Ето крайната проверка:

if ($this->request->post['pizza_check'] === true) {

 echo "Pizza Check";


} elseif($this->request->post['pizza_check'] === false ) {
  echo "No Pizza Check";

} else {
   echo "da ili ne ";
}



Искам да кажа че винаги ми казва че е false, чудя се защо не се получава.

Винаги изкарва отговор да или не дори да има и false или true Smile
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
systems
Турист
Турист

Регистриран на: 28/09/2012 9:04 pm

Support: 3
Bonus: 6
Мнения: 254
Мнение 23/01/2019 3:25 pm      Отговорете с цитат


ако правилно съм разбрал искаш да правиш проверка на поле което е true или false в база данни ако е true да показва da ако е false да показва ne, това според мен ще стане или поне при мен работи и извежда резултат.

PHP code:
if($row['tbl_name']=='true'){
echo '<tr><td><span style="color:#FF0000">da<td><br>';
}
if($row['tbl_name']=='false'){
echo '<tr><td><span style="color:#E0E0E0">ne<td><br>';
}
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
anonimen
Активен
Активен

Регистриран на: 11/06/2012 8:07 pm

Support: 158
Bonus: 315
Мнения: 1482
Мнение 23/01/2019 8:33 pm      Отговорете с цитат


Първо се убеди, че променливата наистина не е false във всички случаи, защото при това положение кодът ти ще е съвсем валиден:
PHP code:
var_dump($this->request->post['pizza_check'])


Последната промяна е направена от anonimen на 23/01/2019 8:52 pm; мнението е било променяно общо 1 път
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
dakata__92
Активен
Активен

Регистриран на: 02/08/2011 9:24 pm

Support: 119
Bonus: 231
Мнения: 3081
Мнение 23/01/2019 8:43 pm      Отговорете с цитат


Много зависи как сетваш променливата. Ако я сетваш така:
PHP code:
$this->request->post['pizza_check'] = "true";

то true ти е стринг защото е в кавички. Принтирай с var_dump променливата за да видиш какво съдържа като информация в себе си. Отделно просто можеш да направиш и така:

PHP code:

//Без isset
if ($this->request->post['pizza_check']) { print 'True';}
//С isset
if (isset($this->request->post['pizza_check'])) { print 'True';}
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Revelation
Потребител
Потребител

Регистриран на: 24/03/2013 3:23 pm

Support: 55
Bonus: 110
Мнения: 726
Мнение 24/01/2019 12:41 am      Отговорете с цитат


Само дето не разбрахме какво реално ти връща pizza_check. А, ако трябва да съм и полезен с нещо, да държиш true/false в базата данни е грешно. Когато нещо е true/false в базата се записва в TINYINT поле 1 или 0.

Защо? Ами проблема ти си го дал ясно в темата си.


П.П. Дака, ако получиш празен string на isset ще ти върне true, което би било грешно.
И все пак, проблема трябва да се реши на друго място първо, именно за да се избегнат такива гимнастики, които се опитвате да му предложите.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
novakabg
Турист
Турист

Регистриран на: 13/05/2016 2:29 pm

Support: 5
Bonus: 10
Мнения: 335
Мнение 24/01/2019 12:23 pm      Отговорете с цитат


Първо полето е празно, правя проверка през file_get_contents, и стандартно ми е true явно, идеята ми тук е че после правя ajax проверка за инфо и ми изкарва валидация, която е true или false.

И при True стартира друг скрипт който не прави други неща.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
deam0n
Tourist Defender

Регистриран на: 01/10/2005 6:33 pm

Support: 199
Bonus: 951
Мнения: 2985
Мнение 24/01/2019 3:22 pm      Отговорете с цитат


novakabg написа:
Първо полето е празно, правя проверка през file_get_contents, и стандартно ми е true явно, идеята ми тук е че после правя ajax проверка за инфо и ми изкарва валидация, която е true или false.

И при True стартира друг скрипт който не прави други неща.


Както казаха колегите, най-вероятно проблема идва от там, че променливата ти е string, а не boolean.. Т.е. и за "true" и за "false" стринг ще връща винаги True ако проверяваш със ==, защото подаваш стойността като стринг. Когато стринг-а не е null, той е true.

Когато проверяваш с === освен стойността на променливата, то проверя и тип на променливата. Т.е. ти сравняваш string с boolean и затова 'true' не е равно на true.

Последната промяна е направена от deam0n на 24/01/2019 3:31 pm; мнението е било променяно общо 1 път
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
Revelation
Потребител
Потребител

Регистриран на: 24/03/2013 3:23 pm

Support: 55
Bonus: 110
Мнения: 726
Мнение 24/01/2019 3:30 pm      Отговорете с цитат


Не знам какво правиш, но цялата ти картинка изглежда ужасно грешна.
Увери се какъв ти е типа щом не си дигурен и тогава прави проверки.

И е време да се научите да използвате дебъгери.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Покажи мнения от преди:    
Създайте нова тема   Напишете отговор    web-tourist.net Форуми -> PHP MySQL ASP.NET Часовете са според зоната GMT + 2 Часа
Страница 1 от 1


 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети