если еще простая проблема для начинающих

#php #if-statement

#php #if-оператор

Вопрос:

Добрый день, ребята,

Я создал приятную функцию избранного с php mysql и ajax, и она отлично работает. Теперь я хочу показывать ‘избранное’, когда избранное = 0, и показывать ‘неблагоприятное’, когда избранное = 1

     if ($favorites == 0) {
    $favorite = '<a href="#" id="' .($id). '" class="favorite_button">Favorite</a>';
}

if ($favorites == 1) {
    $unfavorite = '<a href="#" id="' .($id). '" class="unfavorite_button">unFavorite</a>';
}
  

и повторите это в строке как :

 <div id="favorites">' .($favorite). ' ' .($unfavorite). '</div>
  

Проблема в том, что когда favorite = 0, отображаются как $ favorite, так и $unsavorite. При favorite = 1 корректно отображается только $ unsavorite. Конечно, это должно быть $ favorite ИЛИ $ unfavorite. Я предполагаю, что проблема для вас ясна и проста, пожалуйста, помогите 🙂

Заранее спасибо

Комментарии:

1. Не могли бы вы также опубликовать окружающий код? Это должно сработать.

2. В вашем описании вы ссылаетесь на favorite но ваша переменная в коде $favorites . Опечатка? Пожалуйста, покажите код, который устанавливает переменную $favorites .

3. Что вы получаете, когда вы var_dump($favorites) ? Случается ли это также в каком-либо цикле?

4. Всем большое спасибо! Нашел решение 🙂 Смотрите решение Хармена

Ответ №1:

Проще использовать только одну переменную:

 $text = ''
if ($favorites == 0) {
  $text = '<a href="#" id="' .($id). '" class="favorite_button">Favorite</a>';
} else {
  $text = '<a href="#" id="' .($id). '" class="unfavorite_button">unFavorite</a>';
}

...

echo $text;
  

Комментарии:

1. большое спасибо всем за помощь, решение Harmens сработало 🙂 Снова чему-то научился! Хорошего дня

Ответ №2:

Если вы хотите проверить $favorite , вы используете неправильную переменную в своем операторе управления. Кроме того, лучше использовать практику кодирования, elseif а не if для этого второго if . Еще одна вещь: проще управлять одной результирующей переменной.

 $output = "";
    if ($favorite == 0) {
    $output = '<a href="#" id="' .($id). '" class="favorite_button">Favorite</a>';
}

elseif ($favorite == 1) {
    $output = '<a href="#" id="' .($id). '" class="unfavorite_button">unFavorite</a>';
}

...

echo $output; // Or whatever you want to do with your output
  

Ответ №3:

Является $favorites целым числом?

В любом случае попробуйте использовать три знака равенства ( === ) или else вместо второго if :

 if ( $favorites === 0 )
{
  // ...
}
else // or if ($favorites === 1)
{
  // ...
}
  

Ответ №4:

Вы создаете переключение, поэтому вам нужна только одна переменная:

 if(empty($favourites)){
   $fav_toggle = '<a href="#" id="' .($id). '" class="favorite_button">Favorite</a>'; 
} else {
   $fav_toggle = '<a href="#" id="' .($id). '" class="unfavorite_button">unFavorite</a>'; 
}

echo $fav_toggle;
  

Ответ №5:

Тот же код работает со мной, если я назначил $ favorites = 0; или $ favorites = 1;

Вы также можете использовать if else

$избранное = 1;

 if ($favorites == 0) {
    $favorite = '<a href="#" id="' .($id). '" class="favorite_button">Favorite</a>';
}

else if ($favorites == 1) {
    $unfavorite = '<a href="#" id="' .($id). '" class="unfavorite_button">unFavorite</a>';
}