2011-01-25 4 views
0

とMySQLデータベースに挿入し、私はこのコードで間違って何見当がつかない。私はPHPのエラーが出ていないので、クライアントサイドであると確信していますが、間違っている可能性があります。は、私がここでの問題のいくつかの種類を経験していjQueryとPHP

一度提出されたフォームを取得しようとしていますが、AJAXリクエストを使用してテキストフィールドに含まれる情報をPHPデータベースに挿入しようとしています。私がでてるのはここ

だ:

/* index.php */ 

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
<script type="text/javascript" src="scripts/ajax.js"></script> 


//... 


     <div class="success" id="success"></div> 
     <div class="err" id="err"></div> 


<!--Create Form--> 
<form action="" method="post" name="create" id="createForm" onsubmit="createNew(document.create.create2.value); return false;">   
     <h5>Create New File</h5> 
     <p><input name="create2" type="text" maxlength="32" /></p> 
<input type="submit" name="submit" value="Create" /> 
</form> 


/* ajax.js */ 

function createNew(name) 
{ 
$('#loading').css('visibility','visible'); 

    $.ajax({ 
    type: "POST", 
    url: "../utilities/process.php", 
    data: 'name='+name, 
    datatype: "html", 
    success: function(msg){ 

    if(parseInt(msg)!=5) 
    { 
    $('#success').html('Successfully added ' + name + ' into database.'); 
    $('#loading').css('visibility','hidden'); 
    alert('success');//testing purposes 
    } 
    else 
    { 
    $('#err').html('Failed to add ' + name + ' into database.'); 
    $('#loading').css('visibility','hidden'); 
    alert('fail');//testing purposes 
    } 
    } 
     }) 
} 


/* process.php */ 

<? 
include('db_connect.php'); 

if($_POST['name']) 
{ 
$name = $_POST['name']; 
$name = mysql_escape_string($name); 
$query = "INSERT INTO tz_navbar (name) VALUES (".$name.")"; 
$result = mysql_query("$query") or die ("5"); 

} 
?> 

ここに私の問題だ:私は何かを私のフォームを送信した後 、それは成功したと報告したが、何も私のデータベースに追加されませんされます。

は私を助けるために自分の時間を割いて、事前にすべてのいただきありがとうございます。それはそれを修正しない場合は、あなたが確認するために$ _REQUEST

error_log(print_r($_REQUEST,true)); 

の値をログに記録する必要がある

$query = "INSERT INTO tz_navbar (name) VALUES ('".$name."')"; 

+0

あなたは常に=するmysql_query($クエリ)$結果を試すか(mysql_error())を死ぬことができます。 mysqlのエラーメッセージを取得します。これは、失敗したクエリで何が起きているかを正確に伝えます。 – Wade

+0

セキュリティノートでは、データベースに格納する前に$ nameの値をエスケープしてください。悪意のあるユーザーは、現在書かれているとおり、このクエリを利用することができます。詳細については、PHPのBobby Tablesのエントリを参照してください。http://bobby-tables.com/php.html – calvinf

+0

ご覧のとおり、calvinf。 [$ name = mysql_escape_string($ name);]この部分は文字列をエスケープします。 – user151797

答えて

4

あなたのクエリを見て、私はあなたがそれをする必要が疑われますサーバー側で適切な値を取得していることを確認します。

+0

私はポールが正しいと思います。私はあなたのポスト値があなたのPHPスクリプトに適切に渡されていないと思う。あなたのAJAXリクエストであなたの値を渡すためにJSONスタイルを使って試してみましょう。 {name:name} – Wade

+0

それは完全に渡されたようですが、それは本当に私の質問からの注意のエラーでした。 – user151797

0

はあなたのクエリを確認してください。

$query = "INSERT INTO tz_navbar (name) VALUES ('$name'); 

また、javascriptなしでprocess.phpをテストすることもできます。ちょうどあなたはmysqlエラーメッセージを見ることができました。 die()などを使用してください。

+0

実際、私はdie(mysql_error())を使いました。私はalert()を使いました。 javascriptを使ってprocess.phpからエラーを取得する – user151797

1

$ _POST ['name']がありますが、あなたのフォームには、入力タイプ=テキスト名= "作成" $ _POST ['create']が必要です。そのため、$ _POST ['name']は渡されたときに値を持ちません。

関連する問題