2012-03-22 3 views
0

У меня есть проблема с использованием во время клика по ссылке, мне нужно обновить поле в базе данных и перенаправить на другую страницу после.href call in javascript

У меня есть этот код:

<a href="#" onclick="<?php 

         $sql="UPDATE MyDB.mytable SET Date = '".date("Y-m-d H:i:s")."' 
           WHERE ID='" . $id . "'"; 
         if (!mysql_query($sql)) ///Cannot query 
         { 
          $logger->error(mysql_error()); 
         } 

         if ($sql) 
         { 
          $logger->debug('OK'); 
         } 
         else 
         { 
          $logger->debug('NOt OK'); 
         } 
         ?>"> </a> 

После РНР закрывающего тега '>? Могу ли я добавить мой путь к быть направлены? например:

<a href="#" onclick="<?php 

         $sql="UPDATE MyDB.mytable SET Date = '".date("Y-m-d H:i:s")."' 
           WHERE ID='" . $id . "'"; 
         if (!mysql_query($sql)) ///Cannot query 
         { 
          $logger->error(mysql_error()); 
         } 

         if ($sql) 
         { 
          $logger->debug('OK'); 
         } 
         else 
         { 
          $logger->debug('NOt OK'); 
         } 
         ?> ../index.php"></a> 

Возможно ли это? Какая правильная вещь? Спасибо большое!

+0

JavaScript не может выполнить php –

ответ

-1

Использование location.pathname

<a href="#" onclick="location.pathname='<?php ... ?>'"></a> 
+0

используя href = "#" correct? это дает мне ошибку, говорящую, что не может открыть интернет-сайт интернет-сайта и указать его собственный URL-адрес, а не путь, назначенный для location.pathname .. – tinks

+0

href = "#" действителен, но подход ZloiGremlin не является тем, что вы хочу сделать в этом случае. Вы получаете ошибку из-за того, что возвращает php-блок, когда он выполняется. –

+0

вы можете изменить событие onclick на "location.pathname = ''; return false;" – ZloiGremlin

1

это не правильный путь.

Это может быть несколько способов сделать это. Но я бы предложил вам поместить код обновления БД на целевую страницу (которую я предполагаю, что вы упомянули как index.php). Если вы хотите только активировать код обновления БД при нажатии ссылки, используйте страницу посередине, чтобы перенаправить поток.

Итак, ваша страница будет течь:

Текущая страница (ссылка Кликов, просто HREF к middleman.php) ==> middleman.php (просто запустить обновление кода DB здесь и использование заголовка Расположение синтаксис для индексирования .php) ==> index.php

коды:

страница, в которой у вас есть по ссылке source.php

<.... html contents ....> 
<a href='middleman.php'>Visit the page</a> 
<.... more html contents ....> 

middleman.php

<?php   

$sql="UPDATE MyDB.mytable SET Date = '".date("Y-m-d H:i:s")."' WHERE ID='" . $id . "'"; 
if (!mysql_query($sql)) ///Cannot query 
{ 
    $logger->error(mysql_error()); 
} 

if ($sql) 
{ 
 $logger->debug('OK'); 
} 
else 
{ 
 $logger->debug('NOt OK'); 
} 

header("Location: index.php"); //redirects to index.php 
?> 

index.php

do whatever you want 
0

Когда страница отображается, PHP код будет работать раз. Всякий раз, когда вы видите веб-страницу, это только html, всегда, без прямого доступа к php-коду. Таким образом, вы не можете выполнять блоки php непосредственно из, например, события javascript. В вашем случае запрос sql будет выполняться один раз, когда вы загружаете страницу.

kishu27 только что разместил один из правильных способов сделать это, и лучший вариант для вас в этом случае. Если вы хотите только обновить базу данных, не перенаправляясь на другую страницу, аакс-вызов на php-страницу с кодом базы данных будет хорошей альтернативой.

+0

спасибо за сообщение Joel.Тем не менее я хотел бы подчеркнуть, что любой метод на основе AJAX/JS не является хорошей практикой, учитывая плохую совместимость с JS или используемую инфраструктуру JS. Лучше всего, если он обработан на бэкэнд и поток, который я описал, имеет минимальную проблему с пользователем. Запрос через ajax заставит пользователя задаться вопросом на секунду или два, был ли клик принят или нет, иногда заставляя их нажимать ссылку более одного раза :) – kishu27

+1

О, абсолютно. В этом случае ваш подход определенно лучший. Я просто пытался указать два наиболее распространенных способа общения с php-скриптами, так как @tinks явно пошло не так. Приветствия. –

+0

Yepp! Я понял это :) спасибо снова – kishu27