Echo Javascript внутри PHP с условием IF

#php

#php

Вопрос:

Вот ситуация. Я новичок

У меня есть таблица с именем favorite, в которой хранятся идентификаторы отправителя и получателя (для списка избранных пользователей). Я выполнил кодирование php для добавления и удаления из избранного

Это форма для отправки формы в addfav.php

 <form method="post" action="addfav.php" id="addfav">
     <td width="10%"><img src="images/watchlist.png"  width="24" /></td>
     <td align="left"><a href="javascript:{}" onclick="document.getElementById('addfav').submit(); return false;">Add to Favourite</a></td>
     <input type="hidden" value=" <?php echo $temp; ?>" name="toid" />
</form>
 

Аналогично, у меня есть другая форма для удаления из избранного

 <form method="post" action="remfav.php" id="remfav">
    <td width="10%"><img src="images/watchlist.png"  width="24" /></td>
    <td align="left"><a href="javascript:{}" onclick="document.getElementById("remfav").submit(); return false;">Remove</a></td>
    <input type="hidden" value=" <?php echo $temp; ?>" name="toid" />
</form>
 

Оба PHP работают… Я хочу использовать условие if, чтобы проверить, добавлен ли пользователь, и соответствующим образом отобразить форму добавления / удаления

У меня есть sql-запрос со мной

 $result1 = mysql_query("SELECT * FROM `favourite` WHERE `sendfrom`='".$_SESSION["id"]."' AND sendto="ID of current user"); 
$num_rows1 = mysql_num_rows($result1);
 

Итак, если $num_rows1 возвращает 1, означает, что в таблице есть значение, тогда должно появиться УДАЛИТЬ, иначе ДОБАВИТЬ.

Я попытался инкапсулировать обе формы внутри тега php с условием If.. но java-скрипт не работает..

Пожалуйста, помогите

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

1. Я не вижу здесь никакой логики javascript. Также ваши кавычки условия предложения WHERE были неправильным синтаксисом. Это AND sendto="ID of current user"); будет изменено на AND sendto='ID of current user');

2. @Ranjith большая часть этого находится в onclick атрибуте

3. при нажатии на ссылку javascript отправляет форму .. которая не работает внутри тега php

Ответ №1:

Это очень просто:

 <?php
$result1 = mysql_query("SELECT * FROM `favourite` WHERE `sendfrom`='".$_SESSION["id"]."' AND sendto='ID of current user'"); 
$num_rows1 = mysql_num_rows($result1);

if ($num_rows1 > 0): /* Open condition. Display remove block */
?>
<form method="post" action="remfav.php" id="remfav">
    <td width="10%"><img src="images/watchlist.png"  width="24" /></td>
    <td align="left"><a href="javascript:{}" onclick="document.getElementById('remfav').submit(); return false;">Remove</a></td>
    <input type="hidden" value=" <?php echo $temp; ?>" name="toid" />
</form>
<?php else: /* Close the if block. Display add block if count <= 0 */ ?>
<form method="post" action="addfav.php" id="addfav">
     <td width="10%"><img src="images/watchlist.png"  width="24" /></td>
     <td align="left"><a href="javascript:{}" onclick="document.getElementById('addfav').submit(); return false;">Add to Favourite</a></td>
     <input type="hidden" value=" <?php echo $temp; ?>" name="toid" />
</form>
<?php endif; /* End conditional block */ ?>
 

Редактировать: обратите внимание, что две следующие конструкции полностью эквивалентны в PHP

 if ($condition1) {                  |    if ($condition1):
    /* Do something */              |        /* Do something */
} elseif ($condition2) {            |    elseif ($condition2):
    /* Do something else */         |        /* Do something else */
} else {                            |    else:
    /* Well, you know the drill */  |        /* Well, you know the drill */
}                                   |    endif;
 

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

1. Сама форма — это внутренний блок, который должен быть внутри условия.. есть ли какое-либо обходное решение.. Извините, я новичок в этом

2. Я не понимаю. Две формы — это то, что находится внутри условий. Логически эквивалентно: if in favorites, then display remove form, else display add form

3. Спасибо, теперь условия работают отлично… Добавление ссылки тоже работает…. Но ссылка на удаление не отправляется… Какие-либо дополнительные исправления необходимы?

4. Да, проверьте отредактированную версию выше. Заключая HTML-атрибут between "..." , вы не можете свободно использовать " inside, не нарушая все. Я изменил getElementById() вызов, чтобы использовать одинарные кавычки вместо двойных.

5. Да, теперь работает правильно!!!! Большое спасибо… К сожалению, у меня недостаточно репутации, чтобы проголосовать

Ответ №2:

Я думаю, что использование формы в этом случае не имеет смысла.

Попробуйте это вместо этого.

 <form method="post" action="addfav.php" id="addfav">
    <td width="10%"><img src="images/watchlist.png"  width="24" /></td>
    <td align="left"><a href="addfav.php?id=whatever">Add to Favourite</a></td>
</form>
 

То же самое для удаления. Если вы хотите избавиться от ?id=whatever в вашем URL, вы можете просто использовать перенаправление заголовка. И если вам нужен отличный пользовательский интерфейс, вы можете даже использовать вызов AJAX для обновления в фоновом режиме.

Ответ №3:

Ваш синтаксис запроса был неправильным.

Попробуйте это,

 <?php
    $result1 = mysql_query("SELECT * FROM `favourite` 
                            WHERE `sendfrom`='".$_SESSION["id"]."' AND 
                            sendto=$current_user"); 
    $num_rows1 = mysql_num_rows($result1);

    if($num_rows1 == 1) {
?>
      <form method="post" action="remfav.php" id="remfav">
          <td width="10%"><img src="images/watchlist.png"  width="24" /></td>
          <td align="left"><a href="javascript:{}" onclick="document.getElementById('remfav').submit(); return false;">Remove</a></td>
          <input type="hidden" value=" <?php echo $temp; ?>" name="toid" />
      </form>
<?php
    }
    else {
?>
      <form method="post" action="addfav.php" id="addfav">
          <td width="10%"><img src="images/watchlist.png"  width="24" /></td>
          <td align="left"><a href="javascript:{}" onclick="document.getElementById('addfav').submit(); return false;">Add to Favourite</a></td>
          <input type="hidden" value=" <?php echo $temp; ?>" name="toid" />
       </form> 
<?php
    }
?>
 

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

1. @swordofpain : это тоже допустимо .. Демонстрация здесь . Не могли бы вы, пожалуйста, удалить свой downvote для моего ответа

2. @swordofpain: Привет, пользователь, какие-либо другие разъяснения?

3. Вы неправильно смешиваете PHP и HTML. Вот живая демонстрация вашего кода , сначала сбой (синтаксическая ошибка) < . Вам нужно поместить HTML вне <?php ... ?> , чтобы он работал

4. ого, извините, забыл добавить это, я это неправильно понял. отлично. Это моя вина. 🙂