2017-11-23 27 views
0

私はPHPを非常に熟知しています。私は今学期中にこの学期に入るようになりました。PHP:JavaScript関数の結果をPHP変数に格納

私が最終的にやりたいことは次のとおりです。コンピュータ修理システムを構築しているシニアプロジェクトがあります。修復のMySQLテーブルでは、私はフィールドの束を持っていて、そのうちの1つはCustomerIDです(どの顧客がどの修理を受けたか知っています)。私は顧客の名前を捨てて、それをクリックすると、その顧客のIDをどのように変数に結びつけてINSERTステートメントを実行できるかを示しています。これを部分的に達成するために、私は小さな部分でやりました。私が働いている小さな部分は、ドロップダウン値を選択すると、画面に出力されますが、それはJavaScript関数にあります。ここで

は私のコードです:

<?PHP 
include('session.php'); 
$db_name = ""; 
$mysql_username = ""; 
$mysql_password = ""; 
$mysql_server = ""; 
$mysqli = new mysqli($mysql_server, $mysql_username, $mysql_password, 
$db_name); 
$query = "SELECT custID, CONCAT(custFirstName, ' ', custLastName) as 
Customer_Name FROM customer"; 
$result = mysqli_query($mysqli, $query); 

echo "<select name ='names' id='myselect' onchange = \"myFunction()\">"; 
while ($row = mysqli_fetch_array($result)){ 
echo "<option value = '" . $row['custID'] . "'>" . $row['Customer_Name'] . " 
</option>"; 
} 
echo "</select>"; 
echo "<p>When you select a customer name, a function is triggered which 
outputs the ID of the selected customer.</p> 
<p id=\"demo\"></p> 

<script> 
function myFunction() { 
var x = document.getElementById(\"myselect\").value; 
document.getElementById(\"demo\").innerHTML = x; 
} 
</script>"; 

$content = "<script> document.write(x) </script>"; 

echo "<br> <br> The technician ID = $sTechID <br> <br> The customer ID = $content"; 
?> 

私はJavascript機能を備えた画面への出力IDをすることができますが、私はPHPの変数に「X」を保存しようとすると、それは動作しません。クロムでは、検査官はXは定義されていないと言います。

サイドノート:私はこのコードのテストファイルを作り、それが働いた:

<?PHP 
echo " 
<script> 
var x = \"hello\" 
</script>"; 

$content = "<script> document.write(x) </script>"; 

echo "$content <br> <br> $content"; 
?> 

上記のコードは働いていたので、私の大きなコードが動作しない理由を、私は理解していません。

私のコードは混乱していると私は理解していますが、どんな助けでも大歓迎です。ありがとう!

+0

(https://stackoverflow.com/questions/1917576/how-to-pass [PHPにはJavaScriptの変数を渡すには?] -javascript-variables-to-php) – FirstOne

+0

[PHPからJavaScriptへ変数とデータを渡す方法は?](https://stackoverflow.com/questions/23740548/how-to-pass-variables-and-data-from- php-to-javascript)(タイトルはその質問の答えを表すものではありません)。 – FirstOne

答えて

0

PHPは、バックエンドの言語であり、イベントが起動されると、xの値のみが定義されることになるなど、あなたのより大きなコードで

クリック、変更、などのフロントエンドのイベントを検出することはできません(onchange)、それはselect入力が変更されたときです。 Javascriptはそのように動作しますが、PHPはそうではありません。 PHPが初めてレスポンスを送信すると、その仕事は完了します。

これは、フォームまたはAjaxを使用する場合です。 フォームを使用するとよいスタートになります。

HTML、CSS、JSをできるだけPHPから分離しておくことをお勧めします。

... 
$result = mysqli_query($mysqli, $query); 

?> 

<form method='post' action='insert.php' /> <!-- Link to php file to insert data to database --> 
    <select name ='names' id='myselect' onchange = "myFunction()"> 
    <?php 
     while ($row = mysqli_fetch_array($result)){ 
     echo "<option value = '" . $row['custID'] . "'>" . $row['Customer_Name'] . " 
       </option>"; 
     } 
    ?> 
    </select> 
    <input type="submit" value="submit" /> <!-- You will need a button to submit the data --> 
</form> 

<p>When you select a customer name, a function is triggered which 
outputs the ID of the selected customer.</p> 
<p id="demo"></p> 

そして今、あなたのinsert.phpファイルは次のようになります。

<?php 

// Get data from that was posted from the form 
$customer_id = $_POST['names']; 

// Now do whatever with the customer ID 
echo $customer_id; 
+0

[ここ](http://phppot.com/jquery/php-contact-form-with-jquery-ajax/)は、あなたが従うことができるAJAXチュートリアルです – user3284463

+0

あなたのご意見ありがとうございます!それが感謝祭なので、私は今から休みを取っています。私は後で再開します。あなたの答えはAJAXなしでも使えますか? –

+0

ありがとうございます。私はあなたが追加したものを取って、私がすでに持っていたPHPファイルに追加し、私のプロジェクトに合うようにそれを操作することができました。はるかに多くのことが、これは私が踏み込んだ巨大な集まりです。再度、感謝します! –

0

一般的にPHPの理解を深める必要があると思います。 PHPはあなたがそれにエコーしたhtml/jsをブラウザが実行する前に実行されます。その理由は、これは動作します:あなたがDOMにJSを書いていると、ブラウザがそれを読み取ると、それが実行されているため

<?PHP 
echo " 
<script> 
var x = \"hello\" 
</script>"; 

$content = "<script> document.write(x) </script>"; 

echo "$content <br> <br> $content"; 
?> 

です。 var_dump($content);を実行すると、PHP変数に格納されているものはxの結果ではなく、実際にはテキスト"<script> document.write(x) </script>"を含むリテラル文字列であることがわかります。

echo "$content <br> <br> $content";はDOMに"<script> document.write(x) </script> <br> <br> <script> document.write(x) </script>";を印刷します。これはブラウザでJSとして実行されます。

PHPで何かを行うためのドロップダウン選択をしたい場合は、ドロップダウンの変更時にJS関数をトリガして、別のPHPファイルにAJAXリクエストを送信してから、それをあなたの関数に返します。これにより、別のPHPページに移動することなくHTMLを更新することができます。

関連する問題