2017-02-16 8 views
0

Я искал здесь много вопросов, но мне кажется, что ничего не работает для меня ... Он не обновляет базу данных.Обновление базы данных OnClick() <a>

function language(id,lang){ 
 
    $.ajax({ 
 
     url: 'modules/tca/updatedb.php', 
 
     type: 'POST', 
 
     data: 'id='+id+'&lang='+lang, 
 
    }); 
 
}
<li><a href="#en" onclick="return language($id,"en");"><span class="flag flag-usa flag-1x"></span> EN</a></li> 
 
<li><a href="#fr" onclick="return language($id,"fr");"><span class="flag flag-frc flag-1x"></span> FR</a></li>

Это мой updatedb.php.

<?php 
@include_once('setdb.php'); 
$id = $_POST['id']; 
$lang = $_POST['lang']; 

mysql_query("UPDATE users SET lang='$lang' WHERE id = '$id' "); 
?> 
+0

И каков ваш вопрос? С чем вы столкнулись? Что-то работает не так, как ожидалось? –

+0

Это не обновление базы данных. – Daniel

+1

Скорее всего, это псевдо-код, но вы должны быть осторожны с SQL-инъекцией, так как вы вообще не защищаете его. – garrettmurray

ответ

0

Это рабочий вариант.

<script> 
    function language($id, $lang){ 
     //get the input value 
     $.ajax({ 
      //the url to send the data to 
      url: "modules/tca/updatedb.php", 
      //the data to send to 
      data: {id : $id, lang: $lang}, 
      //type. for eg: GET, POST 
      type: "POST", 
      //on success 
      success: function(data){ 
       console.log("***********Success***************"); //You can remove here 
       console.log(data); //You can remove here 
      }, 
      //on error 
      error: function(){ 
        console.log("***********Error***************"); //You can remove here 
        console.log(data); //You can remove here 
      } 
     }); 
    } 
</script> 

И в теле:

<li><a href="#en" onclick="language(1,'en')"><span class="flag flag-usa flag-1x" ></span>EN</a></li> 
<li><a href="#fr" onclick="language(2,'fr')"><span class="flag flag-frc flag-1x"></span> FR</a></li> 

И ваш пост страницу (в данном примере ваши модули/TCA/updatedb.php)

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "code"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
$id = $_POST['id']; 
$lang= $_POST['lang']; 

$sql = "UPDATE users SET lang='$lang' WHERE id = '$id'"; 

if ($conn->query($sql) === TRUE) { 
    echo "New record updated successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
} 

$conn->close(); 
?> 
+0

Это идеальный человек! Огромное спасибо! – Daniel

+0

Я счастлив, что этот ответ полезен для вас. Наслаждаться :) – marlonjd

0

Похоже, ваша проблема лежит в элементе LI.

<a href="#en" onclick="return language($id,"en");"> 

должно быть:

<a href="#en" onclick="return language('<?= $id ?>', 'en');"> 

Вы также не должны использовать mysql_query.

+0

Все еще не работает. – Daniel

+0

Можете ли вы подробно остановиться на конкретной проблеме? Разве это не доступ к странице PHP? Запрос HTTP возвращает код ошибки, отличный от 200? Что происходит? –

+0

Он ничего не возвращает, я нажимаю ссылку и ничего не происходит, я думаю о функции. Наверное, я написал это неправильно или неполно. – Daniel

0

«Возвращаемое значение из кода onClick определяет, обрабатывается ли неотъемлемое действие ссылки, или нет. Возврат false означает, что он не обрабатывается, но если вы вернете true, браузер продолжит обработку его после ваша функция возвращается и переходит к правильному якорю »

Найдено здесь HTML anchor link - href and onclick both?. Попробуйте вернуться true

<a href="#fr" onclick="language($id,"fr"); return true;"> 
+0

Не работает ... ничего не происходит, страница остается тем же – Daniel

Смежные вопросы