2012-10-30 21 views
0

所以我試圖讓一個PHP文件執行2-3個不同的功能。一個文件中的多個PHP函數

基本上,當頁面加載(test.php)時,它會加載頁面上的通用html元素。它會加載一個jQuery選項卡UI以及從SQL數據庫填充的組合框。

上述兩個html元素我工作正常,沒有問題,但jquery ui選項卡和sql /組合框生成的代在不同的PHP文件中。我想將這兩個步驟合併到一個文件中。

在初始頁面加載時,它從上面的步驟加載兩個元素,但是如果組合框有onChange事件或onClick事件,我需要讓頁面發佈到自身(test.php)。我一直在閱讀關於使用isset()或空(),但我不完全確定如何以正確的方式去解決這個問題。

任何建議或例子在行動?我很確定這已被問了很多次,但到目前爲止我還沒有找到解決方案。

dropdown.php

<?php 
//Create the DB populated dropdown list 

$con = mysql_connect("localhost", "_user", "_pass"); 


$tables = mysql_query("SHOW TABLES FROM _dropdown"); 
mysql_select_db("items", $con); 

echo '<select id="Type" onChange="dropChange();">'; 
echo '<option value="" style="display:none;"></option>'; 
while ($row = mysql_fetch_row($tables)) { 
    foreach($row as $value){ 
     $i = mysql_query("SELECT * FROM $value ORDER BY name ASC", $con); 
     echo '<optgroup label="'.ucfirst($value).'"></optgroup>'; 
     while($row2 = mysql_fetch_row($i)){ 
      echo '<option id="'.$value.'" value="'.$row2[0].'">'.$row2[0].'</option>'; 
     } 
    } 
} 
echo '</select>'; 

mysql_close($con); 
?> 

tabs.php

<?php 

$con = mysql_connect("localhost", "_user", "_pass"); 
mysql_select_db("_database", $con) or die (mysql_error()); 
$result = mysql_query("SELECT * FROM _table") or die (mysql_error()); 
$num_rows = mysql_num_rows($result); 
mysql_close($con); 


echo ' 
    <script language="javascript" type="text/javascript"> 
     $("#tabs").tabs({ 
      beforeLoad: function(event, ui) { 
       ui.jqXHR.error(function() { 
        ui.panel.html(
         "Couldn\'t load this tab. We\'ll try to fix this as soon as possible. " + 
         "If this wouldn\'t be a demo."); 
       }); 
      } 
     }); 
    </script> 

    <ul> 
     <li id="S1"><a href="#S1">S1</a></li> 
     <li id="S2"><a href="#S2" style="color:red; text-decoration:line-through">S 2</a></li> 
     <li id="S3"><a href="#S3" style="color:red; text-decoration:line-through">S 3</a></li> 
    </ul> 
    <div id="breadcrumbs"></div> 
    <div id="s1"> 

    </div> 
    <div id="s2"> 

    </div> 
    <div id="s3"> 

    </div> 
    '; 

?> 

,所以我想有 「test.php的」 這兩個腳本合併成一個頁面(test.php的),並同時執行功能。而不是有onChange =「dropChange();」在dropdown.php頁面難道不一樣的東西:

onChange='<? php $_POST["PHP_SELF"] ?>' 
+2

顯示一些代碼來解釋這一點。我不確定你想要完成什麼。 –

+0

同意@MarcB,但在黑暗中拍攝...如果沒有設置複選框,它不在POST請求中。因此,empty()或!isset()將測試非存在。還可以使用include()/ require()來拉入其他文件。讓我看看你的代碼,我將能夠收緊我的建議。 – HappyTimeGopher

+1

使用mysqli_而不是mysql_。在這裏看到紅色信息:http://php.net/manual/en/function.mysql-query.php – Kamil

回答

0

既然你已經使用jQuery,你可以在頁面的頂部添加事件監視器使頁面認爲表單已提交彷彿被點擊提交按鈕 -

$(document).ready(function() { 
    $("#id_of_your_drop_down").onChange(function(event){ 
     event.preventDefault(); //prevents the usual redraw behavior 
     $("#id_of_your_submit_button").click() //triggers form submission for that submit 
     } 
    }); 
}); 

你可以只是把$( 「#id_of_your_submit_button」)點擊()代替dropChange的()。但上述方法是更好的做法。

+0

由於這未經測試,您可能需要刪除preventDefault行以允許字段重新填充用戶選擇提交事件發生之前。 – RelicScoth

+0

所以我仍然使用jquery click()事件調用test.php頁面上的某個函數? – Matt

+0

你基本上會調用任何頁面動作。 click()動作就像用戶點擊一樣,由於它是一個提交按鈕,點擊()將表單提交給它的動作,這是你的php頁面。 – RelicScoth

相關問題