2017-02-10 53 views
2

我有一個頁面home.php它有一個按鈕'UPDATE'。
1. onclick函數'UPDATE'應該調用一個javascript函數'write()'。
2.'write()'函數get的用戶名和值 - 來自會話(php在此處使用)並將其寫入數據庫。在javascript函數中執行php插入到數據庫

下面是代碼: home.php

<html> 
<head> 
    <title> Sample Page </title> 
</head> 

<body> 

<script> 

function write(){ 
    <?php 

    include("dbConnect.php"); // connection works perfectly with other php files 
    // gets 'latestValue' from session variable 
    // gets 'username' from session variable 
    // updates 'patients' table with the latestValue, against the username 
    $query = "UPDATE patients SET lastLDNId = '$_SESSION[latestValue]' WHERE username='$_SESSION[username]'"; 
    $result = mysqli_query($con, $query); 

    ?> 
} 

</script> 

<input type="button" onclick="write()" value="UPDATE"> 

</body> 
</html> 

,當我運行的代碼,並通過檢查元素檢查,我得到的功能寫(以下錯誤),因爲瀏覽器其解釋

function writeLDN(lDNId){ 
    <br /> 
<b>Notice</b>: Undefined index: latestValue in  <b>C:\xampp\htdocs\MedPhil\home.php</b> on line <b>98</b><br /> 
} 

當我刪除javascript函數內部PHP的部分,不產生上述錯誤,這意味着它不可能在我用的方式使用PHP。

任何人都可以給我一個解決方案,而不是使用PHP回顯整個腳本內容?

在此先感謝

+0

研究AJAX。 PHP和JS是不可互換的,你試圖做的事不會每個工作 – Darren

+1

你**不能**這樣混合JS和PHP。 **所有** php都在服務器上執行,**所有** JS都在客戶端執行。有*沒有PHP左*一旦它擊中瀏覽器。閱讀一些關於** AJAX ** –

+0

的教程,當頁面到達您的瀏覽器時,php將永遠消失。 – WeAreRight

回答

1

我很抱歉,但你對服務器端代碼VS客戶端代碼一個嚴重的誤解。在您的技術堆棧中,PHP只在服務器上執行,並且只在請求頁面時執行一次,JavaScript僅在客戶端執行,並且僅在那裏執行。

所以你嘗試從JavaScript調用php無法正常工作。 這是此得到處理順序:

  1. 服務器可以看到您的<?php標記標籤,並執行與PHP代碼,在這種情況下是錯誤消息的結果有取代它的PHP代碼。
  2. 頁面被傳送到瀏覽器(客戶端)
  3. 瀏覽器試圖執行JavaScript代碼,這只是一個PHP錯誤消息,換句話說就是垃圾。