#php
#php
Вопрос:
У меня есть цикл while, который выводит все мои записи в блоге. Наряду с этими сообщениями в блоге рядом с каждым из них появляется кнопка с красным крестиком, при нажатии на которую я хочу, чтобы она удаляла сообщение рядом с ней. Проблема? Я не придумал эффективного способа решить, какую запись удалить. Обычно это либо удаляет запись по наибольшему идентификатору, либо все записи. Итак, я дам вам представление о том, что у меня есть … (это не мой реальный код, просто представление о нем).
$result = mysql_query("SELECT * FROM post");
while($row = mysql_fetch_array($result){
$someVariable = $row['Id'];
$someVariable1 = $row['title'];
$someVariable2 = $row['content'];
?>
//This form right below here is the delete button. It functions, just need how to pull the correct Id***
<form action="" method="post">
<input type="submit" id ="<?php echo $someVariable ?>" value="" class="submit2" onClick="confirmation()">
</form>
<form action="" method="post">
<input type="submit" value="" class="submit3">
</form>
<script type="text/javascript">
<!--
function confirmation() {
var answer = confirm("Delete Post?")
if (answer){
<?php
mysql_query("DELETE FROM posts WHERE id=***");
?>
}
}
//-->
</script>
<?php }?>
Проблема заключается в функции внутри Javascript. Кажется, я не могу понять, как заставить его вернуть правильный идентификатор. Я довольно плохо разбираюсь в php, так что будьте проще со мной: p.
Комментарии:
1. Всем спасибо за помощь! Это было очень полезно.
2. Приветствую, но помните, что в этом коде вы можете неосознанно уничтожить всю таблицу базы данных. Пожалуйста, поймите, что PHP и Javascript-код на самом деле выполняются в разные моменты!
Ответ №1:
Что вы хотите, так это отправить форму, когда пользователь подтвердит удаление, и обработать само удаление на сервере.
function confirmation() {
var answer = confirm("Delete Post?")
return answer;
}
Таким образом, форма отправляется, когда пользователь подтверждает, и отправка отменяется, когда пользователь не подтверждает.
Включите идентификатор в скрытый элемент формы с именем «id». Пусть форма отправляется на страницу php, которая затем извлекает идентификатор из $ _POST[‘id’] и выполняет инструкцию SQL в базе данных, а затем снова перенаправляет на страницу списка.
Ответ №2:
Вы не можете смешивать PHP и Javascript таким образом. Послушайте меня, похоже, что что-то или кто-то ужасно ввел вас в заблуждение, и вам нужно начинать с основ, с нуля.
Пожалуйста, послушайте меня: поищите какой-нибудь базовый учебник по PHP и помните, что PHP — это текстовый препроцессор, в то время как Javascript позволяет вам осуществлять динамическое взаимодействие после полной загрузки страницы. Это на стороне клиента, тогда как PHP — на стороне сервера. Возможно, вы узнаете об их смешивании позже.
Вам может не понравиться этот ответ, уменьшите его, если хотите, но это единственный разумный вариант для такого сценария. Забудьте об AJAX и других причудливых технических особенностях, которые другие люди предлагали вам ответить на этот вопрос, потому что вы в конечном итоге будете использовать их, когда изучите основы, иначе вы будете разочарованы тем, что не сможете заставить их работать. Вам нужно некоторое время выполнять «hello world».
Вернитесь к основам, или вы натворите какую-нибудь неразбериху!
Ответ №3:
Вы не можете смешивать PHP и Javascipt так, как вы предлагаете. Часть PHP выполняется на сервере, результат отправляется обратно пользователю, и только после этого выполняется Javascript.
Вам нужно будет использовать AJAX / XMLHttpRequest для достижения того, чего вы хотите.
Ответ №4:
Предполагая, что я понимаю, о чем вы спрашиваете, вместо установки id
элемента submit, возможно, было бы лучшей идеей включить вместо этого hidden
элемент form:
<input type='hidden' name='postID' value='<?php echo $someVariable; ?>'>
При обработке формы используйте это вместо.
Ответ №5:
Ну, я не занимаюсь PHP, и я застрял в winforms land примерно на 4 года по долгосрочному контракту прямо сейчас, но я полагаю, что ответ заключается в том, что вы можете передать parmeter (this) вашей функции confirmation () подтверждение (this), которое предоставит вам доступ ко всем свойствам кнопки в вашей функции javascript.
Ответ №6:
Вы не можете выполнить PHP-скрипт из JavaScript, как вы ожидаете. Что вам нужно сделать, так это заставить JavaScript вызывать PHP-скрипт в ajax-подходе.
Ответ №7:
Есть ли у вашего php echo
"<a href="javascript:deleteMe($id)"><img src="x.jpg" /></a>"
в html. Затем javascript должен принять параметр в функцию удаления и отправить AJAX-запрос к вашему php-файлу.
Комментарии:
1. Разве вы не видите, что нельзя предлагать ajax кому-либо, смешивающему js и php таким образом?
2. Вы абсолютно можете. Javascript существует отдельно от php. Все, что php должен сделать, это повторить содержимое, которое потребуется js, и иметь отдельный php-файл, готовый принять запрос. Если вас беспокоит безопасность, вам также потребуется пройти подтвержденный сеанс.
3. Я не заставил вас понять мою точку зрения. Посмотрите, это просто. Если кто-то путает серверный и клиентский код таким серьезным и очень опасным способом (он может удалять строки таблицы!), вы должны предложить ему / ей перейти на технологию next step (AJAX предназначен для тех, кто действительно понимает и PHP, и Javascript) или вместо этого жестоко, но с пользой, указать ему / ей на ОСНОВЫ? Если кто-то не умеет выполнять целочисленные деления, не могли бы вы предложить ему установить Matlab Simulink для их выполнения? Это заставило бы его хуже их понимать.
Ответ №8:
Вам не нужна форма для каждой записи. Просто используйте тег привязки с обработчиком onclick, который указывает на вашу функцию подтверждения. Вы можете повторить идентификатор записи в своей функции подтверждения. Затем попросите функцию подтверждения обновить скрытое поле в вашей форме для идентификатора записи для удаления, а затем отправьте форму вашему php-скрипту удаления.