Использование ajax для вставки в базу данных - PullRequest
1 голос
/ 07 июня 2011

У меня есть якорный тег, который я хочу использовать для перехода на определенную страницу, но в то же время я хочу использовать функцию onclick для вставки в базу данных.

вот что я получил до сих пор:html:

<script type="text/javascript">
function showUser(str)
{
if (str=="")
  {
  alert("txtHint");
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("GET","submit.php?click="+str,true);
xmlhttp.send();
}
</script>

<a onclick="showUser('test')" href="http:www.google.com">click here</a>

и вот файл php:

 mysql_connect("localhost", "username", "password") or die(mysql_error());
mysql_select_db("db_name") or die(mysql_error());

// Retrieve all the data from the "example" table
$result = mysql_query("
SELECT `clicked` FROM `links`
WHERE open = ".$_GET['link'])
or die(mysql_error());  
$row = mysql_fetch_array( $result )
$x = $row['clicked'];
$y = $x++;

$result2 = mysql_query("
UPDATE `db_name`.`links` 
SET `clicked` = $y 
WHERE `links`.`open` = '".$_GET['link']."'
")
or die(mysql_error());  
mysql_fetch_array($result2);

Он собирается в Google, как и должно, но не вставляется в базу данных.

Любые идеи?

спасибо заранее,

Reece

edit - я исправил все ошибки в файле php, спасибо всем, теперь он корректно вставляется при посещении phpстраница с кликом в URL.

НО он по-прежнему не вставляется с помощью ajax.ясно, что я что-то не так сделал с кодом.

есть идеи?

спасибо

edit2 решено -

завсем, кто интересуется, проблема с кодом ajax была в следующей строке:

xmlhttp.open("GET","submit.php?click="+str,true);

это должно быть так

xmlhttp.open("GET","/submit.php?click="+str,true);

Ответы [ 5 ]

2 голосов
/ 07 июня 2011

It's going to google as it should, but it isn't inserting into the database.

Да, но убедитесь, что вызов php-скрипта действительно работает и что сам скрипт не содержит ошибок, а затем посмотрите на базу данных.

1 голос
/ 07 июня 2011

вы используете mysql_fetch_array ($ result2);для обновления используйте mysql_query ($ result2)

и его ни $ _GET ['ссылка'], ни его $ _GET ['click']

0 голосов
/ 07 июня 2011

Я предлагаю использовать метод jquery & .post ().Синтаксис этого будет более понятным для людей:)

// submit here ... 
$.post(
   "answer.php", 
   {
       start:  $("#ancor_id" )  . attr( "title" ) 

   }, 
   function(ret) {

      if (!ret.success )
      {
        alert(1);
      }
      else
      {
        alert( "Update Ok" );
      }
   }, 
   'json'
 );

, где answer.php

<?
  header( "Content-Type: application/json" );
  $arr_json = array();
  $arr_json[ "success" ] = "true";
  echo json_encode( $arr_json );
  exit;
?>
0 голосов
/ 07 июня 2011

первая ошибка, которую я обнаружил: вы хотите $_GET['link']) в своем php-коде, но отправляете только параметр click в JS.Поэтому вы должны изменить свой JS-код:

xmlhttp.open("GET","submit.php?link="+str,true);

попробуйте запустить скрипт php без ajax, чтобы в конечном итоге найти больше ошибок.

0 голосов
/ 07 июня 2011

Кажется, вы забыли отметку ; здесь: $row = mysql_fetch_array( $result )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...