#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. ого, извините, забыл добавить это, я это неправильно понял. отлично. Это моя вина. 🙂