2017-02-25 3 views
0

私は、日のセルの背景色を管理者が変更できるカレンダーに取り組んでいます。変更はサーバーに保存されます。今、それは動作していません。ここではJavaScriptの一部です:post()を使用してデータベースを更新する

for(i=0; i<myDays.length; i++) { // Goes through each TD and creates a click event 
myDays[i].addEventListener("click", function(){ 
    if(this.classList.contains("avail")) { 
     this.classList.toggle("avail"); 
     this.classList.toggle("halfy"); 
     $.post("classChange.php", { dID: this.id, dClass: "halfy" }); 
    } 

これはclassChange.phpでPHPコードです:セルの

if(isset($_POST["dID"])){ 
    $stmt = $db->prepare("UPDATE original SET class=? WHERE id=?"); 
    $stmt->bind_param("ss", $dClass, $dID); 

    $dID = $_POST["dID"]; 
    $dClass = $_POST["dClass"]; 

    $stmt->execute(); 
    $stmt->close(); 
} else { 
    echo "Code error, dummy!"; 
} 

クリックすると、正しくセルのクラス(と色)を変更するのではなく、データベースを更新します。私は何の誤りもありません。私はそれがpost()コードまたはPHPコードの問題でなければならないと思います。何かアドバイス?

+0

変数を使用した後に変数を定義することは成功することはありません。もしCatalin Minoviciがあなたの問題を十分に解決したら、彼に緑のダニを授与してください。そうでなければ、あなたの問題を編集して、どんな問題が残っているかを明らかにしてください。 – mickmackusa

答えて

1

変数を使用する前に定義する必要があります。

$dID = $_POST["dID"]; 
$dClass = $_POST["dClass"]; 
$stmt = $db->prepare("UPDATE original SET class=? WHERE id=?"); 
$stmt->bind_param("ss", $dClass, $dID); 
+0

お返事ありがとうございます。私はあなたの方法を試して、それは動作しませんでした。私はさまざまな理由で通常の$ connの代わりに$ dbを使用しています。私はPDOではなくMySQLiを使用しています。 "ss"は次の2つの変数が文字列であることを示しています。私はこれまでこの方法を使ってきました。 W3Schoolで見つけることができます:[リンク](https://www.w3schools.com/php/php_mysql_prepared_statements.asp) 私が行った他のコードでPHPエラーが発生しましたが、どうすれば確認できますか?私はJSコードにconsole.logを追加しました。正しい情報がクリックで生成されています。できれば助けてください! – user6285791

+0

変数を使用する前に変数を定義することは、コード内で行われる変更でした。 'printf("エラー:%s。\ n "、$ stmt->エラー);' execute()の後に追加してください。 mysqlエラーがありますか? –

+0

私は推奨された変更を加え、これをPHP: 'echo json_encode(配列(" resID "=> $ dID、" resClass "=> $ dClass))にも追加しました。 次に、 "出力"をJSコードに追加しました: '$ .post(" classChange.php "、{\t dID:this.id、dClass:" halfy "}、function(data){console.log(data .resID); console.log(data.resClass); \t}、 "json"); '。 私のコードが動作します。どちらのビットが問題を解決したのかは分かりませんが、ありがとう! – user6285791

関連する問題