За последние 24 часа нас посетили 18215 программистов и 1596 роботов. Сейчас ищут 967 программистов ...

Как удалить найденную запись?

Тема в разделе "PHP и базы данных", создана пользователем Maskca, 18 дек 2010.

  1. Maskca

    Maskca Активный пользователь

    С нами с:
    15 июн 2009
    Сообщения:
    14
    Симпатии:
    0
    Здравствуйте, такой вопрос, есть поиск помощью ajaxa, описан здесь: http://htmlweb.ru/ajax/example/search.php
    только результаты поиска я вывожу с помощью поля select:
    PHP:
    1.  
    2. <?php
    3. $searchq = iconv('UTF-8', 'windows-1251', $_GET['title']);
    4. $result2 = mysql_query('SELECT * FROM data WHERE title LIKE "%'.addslashes($searchq).'%"');
    5. ?>
    6. <select name="cat">
    7. <?            
    8. $myrow = mysql_fetch_array($result2);
    9. do
    10. {
    11. printf("<option value = '%s'>%s</option>>",$myrow['id'], $myrow['title']);
    12. }
    13. while ($myrow = mysql_fetch_array($result2));
    14.  
    15.  
    16.  
    17.                          
    18. ?>                      
    19.              
    20.              </select>
    21.  
    А как сделать, чтобы выделенное поле можно было удалить из базы данных?
     
  2. karlozzz

    karlozzz Активный пользователь

    С нами с:
    24 окт 2010
    Сообщения:
    430
    Симпатии:
    0
    Адрес:
    Y-OLA
    у каждого поля id, при нажатии на удалить идет аякс запрос на сервер с таблицей и ид, и если есть права на удаление то удаляется
     
  3. Maskca

    Maskca Активный пользователь

    С нами с:
    15 июн 2009
    Сообщения:
    14
    Симпатии:
    0
    А можете мне хоть приблизительно, начеркать этот запрос, а то я в аяксе не силен.
    и как этот id приклеить к кнопке именно того поля которое выделено?
     
  4. denisKa

    denisKa Активный пользователь

    С нами с:
    4 сен 2007
    Сообщения:
    46
    Симпатии:
    0
    Здесь
    Код (Text):
    1. printf("<option value = '%s'>%s</option>>",$myrow['id'], $myrow['title']);
    как раз указан вторым параметром ID записи, а третьим TITLE записи.

    Значение элемента списка и есть ID записи. После выбора нужного элемента инициализируй удаление и в значении $_REQUEST['name'] и будет нужный ID записи. А удалять запись с помощью SQL не составит труда, раз уже знаешь как написать запрос выборки данных.

    Код (Text):
    1. mysql_query('DELETE FROM `data` WHERE `id` = "'.(int)$_REQUEST['name'].'"');
     
  5. Maskca

    Maskca Активный пользователь

    С нами с:
    15 июн 2009
    Сообщения:
    14
    Симпатии:
    0
    А как именно инициализировать это удаление где то кнопку поставить или как?



    PHP:
    1.  
    2. <form action="this_page.php?id=$_REQUEST['name'] " method="get">
    3.  <?php
    4.  $searchq = iconv('UTF-8', 'windows-1251', $_GET['title']);
    5.  $result2 = mysql_query('SELECT * FROM data WHERE title LIKE "%'.addslashes($searchq).'%"');
    6.  ?>
    7.  <select name="cat">
    8.  <?          
    9.  $myrow = mysql_fetch_array($result2);
    10.  do
    11.  {
    12.  printf("<option value = '%s'>%s</option>>",$myrow['id'], $myrow['title']);
    13.  }
    14.  while ($myrow = mysql_fetch_array($result2));
    15.  
    16.  
    17.  
    18.                        
    19.  ?>                    
    20.            
    21.              </select>
    22. <input name="submit" type="submit" value="Удалить">
    23.  
    24. <?php
    25. mysql_query('DELETE FROM data WHERE id = "'.(int)$_REQUEST['name'].'"');
    26. ?>
    27. </form>
    28.  
    Но так что - то не работает, или я не так понял?
     
  6. Maskca

    Maskca Активный пользователь

    С нами с:
    15 июн 2009
    Сообщения:
    14
    Симпатии:
    0
    я сделал так:
    PHP:
    1.  
    2. <form id="searchForm" name="searchForm" method="post" action="javascript:insertTask();">
    3. <?PHP
    4. $searchq = iconv('UTF-8', 'windows-1251', $_GET['title']);
    5. $result2 = mysql_query('SELECT * FROM data WHERE title LIKE "%'.addslashes($searchq).'%"');
    6.  
    7. ?>
    8. <select id="sel" >
    9.  
    10. <?            
    11. $myrow = mysql_fetch_array($result2);
    12.  
    13. do
    14. {
    15. printf("<option value = '%s'>%s</option>",$myrow['id'], $myrow['title'],$myrow['id'], $myrow['title']);
    16.  
    17. }
    18.  
    19. while ($myrow = mysql_fetch_array($result2));    
    20. ?>    
    21. </select>                
    22. <input type="button" name="submitSearch" id="submitSearch" value="Search" onclick="javascript:searchNameq()"/>
    23. </form>  
    24.  
    25. <div id="search-result"></div>
    26.  
    с помощью аякса id выделенного поля отправляется в обработчик и там удаляется запись. Все хорошо, но как теперь эти 2 процесса объединить в один. Тоисть чтобы поиск и удаление происходило на одной странице(нашол нужную запись, нажал на кнопку и она удалилась)?
     
  7. pavel_kps

    pavel_kps Активный пользователь

    С нами с:
    22 дек 2010
    Сообщения:
    3
    Симпатии:
    0
  8. karlozzz

    karlozzz Активный пользователь

    С нами с:
    24 окт 2010
    Сообщения:
    430
    Симпатии:
    0
    Адрес:
    Y-OLA
    Кто нибудь знает преимущество экранирования mysql ф-ей от банального addslashes? Знаю что с addslashes может возникнуть инъекция только в определенной двухбайтовой кодировке (сейчас на память не скажу в какой но точно не utf-8)?
     
  9. denisKa

    denisKa Активный пользователь

    С нами с:
    4 сен 2007
    Сообщения:
    46
    Симпатии:
    0
    Поясни подробнее, что именно ты хочешь? Что в твоём понимании означает процесс? Выборку (SELECT) и удаление (DELETE) ?