2017-02-16 1 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 injection을 전혀 보호하지 않으므로 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

관련 문제