2014-02-16 89 views
-1

我想確認用戶是否接受請求, 如果是成功或失敗,第二個查詢總是運行, 爲什麼?JavaScript和PHP - 查詢總是運行

<script> 
if (confirm('Some Question')) { 
    <?php 
     if (mssql_query ("some query...")) { 
      mssql_query ("some query 2...") 
      ?> alert('Succes!'); <?php 
     } 
     else { ?> alert('Query Fail'); <?php } 
    ?> 
} 
else { 
    alert('Fail'); 
} 

+1

...因爲,你使用的是JS/PHP的致命注入。爲什麼不僅僅使用Ajax和JS與PHP一起,還有定期的「工廠運行」條件語句?混合兩者總是會引起頭痛,更不用說是潛在的宿醉。 –

+0

是的,你需要閱讀客戶端和服務器端。如果你想JavaScript觸發一個PHP腳本,你需要使用AJAX,iframe或頁面加載。 –

+0

你應該知道PHP在Javascript之前執行,所以混合你的語言是一個壞主意,因爲你的PHP已經先運行了。您應該發送一個AJAX請求一個處理所有查詢邏輯的PHP腳本,並相應地返回。 – thescientist

回答

0

我可輕易下結論,但我不認爲你瞭解PHP代碼之間的差異在服務器上執行,以及JavaScript在客戶端上執行。您編寫的代碼中的JavaScript和PHP不會按照您預期的順序執行。

當你第一次加載你的PHP文件,該PHP將是由服務器首先執行:

if (mssql_query ("some query...")) { 
     mssql_query ("some query 2...") 
     ?> alert('Succes!'); <?php 
    } 
    else { ?> alert('Query Fail'); <?php } 

注意,mssql_query()函數正在無論上運行用戶的行動前端。

一旦你的PHP已經執行完畢,如果上面的if語句是真的,下面的JavaScript代碼將被提供給瀏覽器

if (confirm('Some Question')) { 
    alert(''Success!); 
} 
else { 
    alert('Fail'); 
} 

請注意,您的網頁瀏覽器加載,你的PHP的無能夠運行。

你必須重組你的邏輯,以達到你想要的。您的案例的快速解決方案將只有2個文件。 1文件用javascript詢問用戶的確認,如果confirm()然後使用AJAX或用戶直接重定向到yourscript.php,其中包含執行mssql查詢的代碼。

快樂編碼!

+0

感謝您的幫助和解釋,我嘗試在AJAX中使用:] – Almog

+0

快樂的幫助,祝您好運:) – Cameron