我已经提到了类似这样的类似问题,并且完全按照应有的方式完成,但没有成功。因此,如果有人可以帮助我,我将不胜感激
我有一个名为view.php的文件,它根据switch case条件调用类中的函数。此功能显示页面上的输出,链接很少。当点击链接时,它会调用另一个函数,该函数位于我的第一个函数中。但显然当我点击我的链接时,没有任何反应。那是我的代码。
view.php
require_once(..'/functions.php');
$functions = new myfile_functions();
<form method="post" action="view.php"><div>
<p><select name="potentialareas" id="potentialareas">
<option style="font-weight:bold;" value="-1">Select an area to view </option>
<?php
foreach($accessareas as $accessarea){
echo "<option value='".$accessarea->id."'>".$accessarea->name. " - " . $accessarea->reporttype. "</option>";
}
?>
</select>
</p>
<p><input name="view" id="view" type="submit" value="View" title="view" /><br /></p>
</div></form>
<div style="border-top:1px dotted #ccc;"></div>
<?php
if(isset($_POST['view']))
{
$hierarchyid = $_POST['potentialareas'];
$reporttype = $DB->get_record_sql("some query");
switch($reporttype->reporttype)
{
case "D Report":
$functions->getDepartmentReport($hierarchyid);
break;
case "S Report":
$functions->getSectionReport($hierarchyid);
break;
case "A Report":
$functions->getAreaReport($hierarchyid);
break;
}
}
的functions.php
class myfile_functions(){
function getDepartmentReport($departmentid)
{
global $USER, $CFG, $DB;
$dname = $DB->get_record_sql("some query");
$output = "<div id='actualreport'><p><b>" . $dname->name. " Department Report</b></p>";
$output .= "<p>Activities started: </p>";
$output .= "<p>Activities Completed: </p></div>";
$output .= "<div id='separator' style='border-top:1px dotted #ccc;'></div>";
$output .= "<div id='listofsections'><p><b><i>Select the following for a more detailed report.</i></b></p>";
$snames = $DB->get_records_sql('some query');
foreach($snames as $sname)
{$output .= "<p>" .$sname->name. " <a href='view.php?section=" .$sname->id. "' name='section'><i>view report</i></a></p>";
}
$output .= "</div>";
if(isset($_GET['section']))
{
$this->getSectionReport($_GET['section']);
}
echo $output;
}
function getSectionReport($sectionid)
{
global $USER, $CFG, $DB;
$sname = $DB->get_record_sql("some query");
$output = "<div id='actualreport'><p><b>" . $sname->name. " Report</b></p>";
$output .= "<p>Num Users: </p>";
$output .= "<p>Activities Completed: </p></div>";
$output .= "<div id='separator' style='border-top:1px dotted #ccc;'></div>";
$output .= "<div id='listofareas'><p><b><i>Select the following for a more detailed report.</i></b></p>";
$anames = $DB->get_records_sql('some query');
foreach($anames as $aname)
{$output .= "<p>" .$aname->name. " <a href='view.php?area=" .$aname->id. "' name='view' id='view'><i>view report</i></a></p>";
}
$output .= "</div>";
if(isset($_GET['area']))
{
$areaid = $_GET['area'];
$this->getAreaReport($areaid);
}
echo $output;
}
类似于调用上述函数的另一个函数,n等等。
function getAreaReport($id)
{ .. same content but calling another function...}
因此,当我点击我的view report
链接时,我会在我的查询字符串中获得id附加ID,例如
http://mydomain.com/view.php?section=5
理想情况下,getSectionReport()
的内容应该打印但不是。请指出我做错了什么。
提前致谢。
答案 0 :(得分:2)
用于显示所有内容的主要方法是什么?目前你有三个函数,所有函数都以各种方式相互链接,但它看起来并不像你先实例化任何东西。当然,PHP会在您的URL中输入一个参数,但是如果没有实例化类并声明了一个方法,那么它如何知道您希望它做什么?
对于myfile.php,也许你应该这样做:
class MyFile
{
public function other_function()
{
// Various stuff
return 'stuff';
}
public function other_other_function()
{
// Various other stuff
return 'other stuff';
}
public function page_view($file_id)
{
$var = $this->other_function($file_id);
return $this->other_other_function($var);
}
}
$class = new MyFile;
echo $class->page_view($_GET['id']);
答案 1 :(得分:0)
如果这两个函数是一个类的一部分(如上面提示的注释),则调用应写为
$this->getUserReport($id);
答案 2 :(得分:0)
如果您正在访问同一课程中的兄弟功能,请使用:
class ClassName
{
public function sibling_function()
{
return 'Hey bro!';
}
public function my_function()
{
return $this->sibling_function();
}
}
如果没有,请使用标准:
public function my_function()
{
return sibling_function();
}
如果您仍然遇到问题,请确保您的课程已正确实例化。如果您甚至不首先实例化该课程,那就没有必要再调用另一个函数了:
$obj = new ClassName;
echo $obj->my_function();