2016-12-25 154 views
1

我正在使用Ajax和PHP将从输入中取得的值插入到phpmyadmin中的表中。我正在与营地合作,但我在获得输入的价值方面遇到问题。Ajax/PHP:更新数据库

这里是我的HTML:

<!DOCTYPE html> 

<html> 
    <head> 
    <meta charset="utf-8"> 
    <title>inscription client</title> 
    <script > 
     function test() { 
     r=document.getElementById('1'); 
     if (r.value.length !==9) 
      document.getElementById('demo').innerHTML="verifer le mot de passe"; 
     else document.getElementById('demo').innerHTML=""; 
     } 
     ////////////////////////////////////////// 
     function ajouter() 
     { 
     var cin=document.getElementById("cin").value; 
     var nom=document.getElementById("nom").value; 
     var mot_de_passe=document.getElementById("mot_de_passe").value; 
     var xmlhttp = new XMLHttpRequest(); 

     var url = "http://localhost/amir/inscrireClient.php?cin="+cin+"&nom="+nom+"&mot_de_passe="+mot_de_passe; 
     xmlhttp.onreadystatechange=function() { 

      if (this.readyState == 4 && this.status == 200) 
      { 

      if(this.responseText =="ok") 
      { 
       document.getElementById("2").innerHTML ="it woeks !"; 
       document.getElementById("2").style.backgroundColor="green"; 
      } 
      else{ 
       document.getElementById("2").innerHTML="no"; 
       document.getElementById("2").style.backgroundColor="red"; 

      } 
      }; 

      xmlhttp.open("GET", url, true); 
      xmlhttp.send(); 
     } 
    </script> 
    </head> 
    <body> 

    <input id ="cin" type="number" name="cin" value="123654789" onblur="test()" required > 
    <p style="color: red" id="demo"></p> 
    <input type="text" id="nom" name="nom" value="aaa" placeholder="donner votre nom" > <br> <br> 
    <input type="password" id="mot_de_passe" name="mot_de_passe" value="aaa" placeholder="donner votre mot de passe" required=> <br> <br> 
    <button type="submit" onclick="ajouter()">s'inscrire </button> 
    <p id="2" ></p> 
    </body> 
</html> 

而这个PHP文件:

<?php 
include 'param.php'; 
header("Access-Control-Allow-Origin: *"); 


$cin=$_GET['cin']; 
$nom=$_GET['nom']; 
$mot_de_passe=$_GET['mot_de_passe']; 

try 
{ 

    $bdd = new PDO('mysql:host='.$server.';dbname='.$database.';charset=utf8', $user, $passwd); 
    $bdd->exec("SET CHARACTER SET utf8"); 
} 

catch(Exception $e) 
{ 
    die('Erreur : '.$e->getMessage()); 
} 
$reponse = $bdd->exec("insert into client(cin,nom,mot_de_passe) values ($cin,'$nom','$mot_de_passe')"); 
if ($reponse->rowCount()>0) 
    echo "ok"; 
else  echo "non"; 
?> 

它不会改变数据库中: alt text

error

+1

你没有输入元素与'id':var cin = document.getElementById(“cin”)。value;'。您已设置'名称'而不是'ID' – Jeff

+0

而且您在查询文本中有语法错误。 –

+0

我改了id但它仍然不起作用 –

回答

0

解决您的sql语句:

$reponse = $bdd->exec("insert into client(cin,nom,mot_de_passe) values ($cin,'$nom','$mot_de_passe)'"); 

'$ mot_de_passe)'部分。在关闭括号之前,应该放入单引号。假设$ cin是数字。

+0

我改变了sql语句,但它不起作用 看链接上的图片 –

+0

XMLHttpRequest无法加载http://localhost/amir/inscrireClient.php?cin = 123654789&NOM = AAA&mot_de_passe = AAA。请求的资源上没有“Access-Control-Allow-Origin”标题。因此不允许原产地'null'访问。 –

+0

你有没有试过允许的方法 - 特别是在你的情况GET:头('访问控制允许的方法','放,GET,POST,DELETE,OPTIONS');并把标题功能放在你的php脚本的顶部 - 在所有事情之前。 – smozgur

0
// $reponse = $bdd->exec("insert into client(cin,nom,mot_de_passe) values ($cin,'$nom','$mot_de_passe')"); 

$sql = "insert into client(cin, nom, mot_de_passe) values (?,?,?)"; 
$stmt = $bdd->prepare($sql); 

$stmt->bindParam(1, $cin); 
$stmt->bindParam(2, $nom); 
$stmt->bindParam(3, $mot_de_passe); 

$stmt->execute(); 
+0

仅有代码的答案可能不是最佳选择。你愿意解释代码的作用/它是如何帮助解决问题的?谢谢。 – Striezel