Здравствуйте, такой вопрос, есть поиск помощью ajaxa, описан здесь: http://htmlweb.ru/ajax/example/search.php только результаты поиска я вывожу с помощью поля select: PHP: <?php $searchq = iconv('UTF-8', 'windows-1251', $_GET['title']); $result2 = mysql_query('SELECT * FROM data WHERE title LIKE "%'.addslashes($searchq).'%"'); ?> <select name="cat"> <? $myrow = mysql_fetch_array($result2); do { printf("<option value = '%s'>%s</option>>",$myrow['id'], $myrow['title']); } while ($myrow = mysql_fetch_array($result2)); ?> </select> А как сделать, чтобы выделенное поле можно было удалить из базы данных?
у каждого поля id, при нажатии на удалить идет аякс запрос на сервер с таблицей и ид, и если есть права на удаление то удаляется
А можете мне хоть приблизительно, начеркать этот запрос, а то я в аяксе не силен. и как этот id приклеить к кнопке именно того поля которое выделено?
Здесь Код (Text): printf("<option value = '%s'>%s</option>>",$myrow['id'], $myrow['title']); как раз указан вторым параметром ID записи, а третьим TITLE записи. Значение элемента списка и есть ID записи. После выбора нужного элемента инициализируй удаление и в значении $_REQUEST['name'] и будет нужный ID записи. А удалять запись с помощью SQL не составит труда, раз уже знаешь как написать запрос выборки данных. Код (Text): mysql_query('DELETE FROM `data` WHERE `id` = "'.(int)$_REQUEST['name'].'"');
А как именно инициализировать это удаление где то кнопку поставить или как? PHP: <form action="this_page.php?id=$_REQUEST['name'] " method="get"> <?php $searchq = iconv('UTF-8', 'windows-1251', $_GET['title']); $result2 = mysql_query('SELECT * FROM data WHERE title LIKE "%'.addslashes($searchq).'%"'); ?> <select name="cat"> <? $myrow = mysql_fetch_array($result2); do { printf("<option value = '%s'>%s</option>>",$myrow['id'], $myrow['title']); } while ($myrow = mysql_fetch_array($result2)); ?> </select> <input name="submit" type="submit" value="Удалить"> <?php mysql_query('DELETE FROM data WHERE id = "'.(int)$_REQUEST['name'].'"'); ?> </form> Но так что - то не работает, или я не так понял?
я сделал так: PHP: <form id="searchForm" name="searchForm" method="post" action="javascript:insertTask();"> <?PHP $searchq = iconv('UTF-8', 'windows-1251', $_GET['title']); $result2 = mysql_query('SELECT * FROM data WHERE title LIKE "%'.addslashes($searchq).'%"'); ?> <select id="sel" > <? $myrow = mysql_fetch_array($result2); do { printf("<option value = '%s'>%s</option>",$myrow['id'], $myrow['title'],$myrow['id'], $myrow['title']); } while ($myrow = mysql_fetch_array($result2)); ?> </select> <input type="button" name="submitSearch" id="submitSearch" value="Search" onclick="javascript:searchNameq()"/> </form> <div id="search-result"></div> с помощью аякса id выделенного поля отправляется в обработчик и там удаляется запись. Все хорошо, но как теперь эти 2 процесса объединить в один. Тоисть чтобы поиск и удаление происходило на одной странице(нашол нужную запись, нажал на кнопку и она удалилась)?
Используте специальные функции экранирования и защиты от sql-инъекций http://www.mywebdev.ru/-mysql.html
Кто нибудь знает преимущество экранирования mysql ф-ей от банального addslashes? Знаю что с addslashes может возникнуть инъекция только в определенной двухбайтовой кодировке (сейчас на память не скажу в какой но точно не utf-8)?
Поясни подробнее, что именно ты хочешь? Что в твоём понимании означает процесс? Выборку (SELECT) и удаление (DELETE) ?