2017-02-16 13 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インジェクションを防御していないので、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?。したがって、真を返すようにしてください。

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

動作していません...何も起こりません、ページは同じままです – Daniel

関連する問題