2014-08-28 7 views
0

Я пытаюсь создать кнопку удаления в моем PHP, которая удалит строку из базы данных при щелчке. Я также хотел бы отправить сообщение подтверждения через Javascript в этой ссылке, но не могу понять, как структурировать код.Echoing Javascript внутри PHP?

Вот то, что я до сих пор:

echo "<td class='delete'><a href='?page=db&amp;delete=".$row->id."' onclick='return confirm('are you sure?')'>Delete</a></td>"; 

Я предполагаю, что причина этого не работает из-за двойных/одинарные кавычки. Может ли кто-нибудь сказать мне, как я буду отформатировать это правильно? Спасибо.

+6

Вы уверены, что хотите удалить вещи со ссылкой? –

+1

Совет. Проверьте исходный код страницы, созданной PHP, чтобы сузить проблему (как сейчас, так и с будущими проблемами). Если строка искажается PHP, тогда вам нужно скорректировать свой PHP-код - если не тогда, то сам javascript/html не работает должным образом, и вы можете полностью исключить PHP из уравнения. – BrianHall

+1

@ Don'tPanic, не паникуйте, удаление - это весело! –

ответ

5

Вы можете использовать:

  • двойных кавычки (которые должны были бы быть экранированы для PHP)
  • Ссылки на символы для одинарных кавычек
  • Ссылки на символы для двойных кавычек

Такого

onclick='return confirm(\"are you sure?\")'> 

Это, я бы переписал это, чтобы JavaScript не был встроен внутри HTML внутри PHP внутри HTML, так как это просто ужасно, чтобы попытаться отслеживать.

<td class='delete'> 
    <a href="?page=db&amp;delete=<?php echo $row->id; ?>" 
     class="delete">Delete</a> 
</td> 

, а затем, используя JQuery, потому что это удобно для такого рода события связывания:

<script> 
    jQuery("a.delete").on('click', function (evt) { 
     if (! confirm('are you sure?')) { 
      evt.preventDefault(); 
     } 
    }); 
</script> 

Поскольку вы не должны делать небезопасные операции с использованием запроса GET, я бы даже сделайте шаг вперед и используйте форму.

<td class='delete'> 
    <form method="post"> 
     <input type="hidden" name="page" value="db"> 
     <button name="delete" value="<?php echo $row->id; ?>"> 
      Delete 
     </button> 
    </form> 
</td> 

<script> 
    jQuery("td.delete > form").on('submit', function (evt) { 
     if (! confirm('are you sure?')) { 
      evt.preventDefault(); 
     } 
    }); 
</script> 
+0

Отлично, спасибо за подробное объяснение и альтернативный метод. – user13286

1

Вы можете попробовать это

echo '<td class="delete"><a href="?page=db&amp;delete='.$row->id.'" onclick="return confirm(\'are you sure?\')">Delete</a> </td>';