我正在尝试在一个PHP文件中实现一个按钮。具体来说,它是SCORM窗口。 我希望按钮具有“返回课程”功能。 目前,我设法通过链接完成此操作,但无法实现该按钮。我尝试使用HTML并在此文件中调用PHP函数。 我目前有以下内容:
<input type="submit" name="" value="Buscar" id="boton1" onclick = "funcion();">
<script>
function funcion(){
alert('<?php echo accion(); ?>');
}
</script>
function accion(){
echo html_writer::start_div('', array('id' => 'toctree'));
$exiturl2 = course_get_url($course, $cm->sectionnum);
$prueba = html_writer::link($exiturl2, $strexit2, array('title' => $strexit2));
echo "<div align='center'>$prueba</div><br>";
$PAGE->set_button($prueba);
}
答案 0 :(得分:1)
要直接解决该问题-您的问题是您
使用HTML并在此文件中调用PHP函数。
那是行不通的(如您所见...)
原因很简单-如果您牢记这一点,则可以在HTML文件中使用PHP(并且在as discussed here,here等正确完成的情况下,页面加载速度更快,因此非常成功在谈论Zend等各种框架时...)
如何在HTML文件中正确使用PHP
请特别注意,您将PHP信息用作“模板”和/或在页面加载时提取数据 。这是原始问题的错误-页面加载后,您无法从PHP获取数据(可以,但是不能直接-参见下文)。
请参阅引用的链接,以获取有关如何正确执行此操作的示例。页面加载时,您从PHP变量中获取数据并将其放入输入值(或任何需要的值)中。这里要注意的一件事是运行长的PHP函数,这些函数会收集大量数据等。经验法则是注意页面的“显示时间”,而不要使用很多函数,尽管在页面初始化时设置了变量(例如在允许用户查看页面之前收集用户的权限等)是可以接受的(这比您的问题要先进得多,尽管肯定会如何构建框架等)。
2)对于需要较长时间加载的数据(如上述功能),以及每次都需要执行的操作。...
使用HTML并在此文件中调用PHP函数。
您必须使用JS和AJAX来调用PHP页面并收集数据。有关在SO和整个Web上使用AJAX的问题不胜枚举-请阅读并了解有关内容-您将在很多需要PHP页面中的数据和/或操作的页面上使用AJAX。
3)掌握“将JS / PHP / HTML混合到一个文件中”的知识。您必须做的(如果您要混合使用它们-我相信以上声明阐明了何时/如何完成-包括在主要框架中等等),这就是我所说的“跳入/跳出HTML / PHP” ”。其他SO问题的链接也显示了这一点,尽管下面是一个分解示例:
从PHP开始页面 在这里,您可能需要授权用户等。(一个示例是查看PHP会话并针对服务器进行验证-这个答案太复杂了,因此我将其简短化)
<?php
// gather authorization and other "can't view the page without it" variables here. For our example, we will say that you have the $course variable
$course = "mycourse";
// 'jump out' of PHP and 'into' HTML by closing the PHP
?>
现在您使用的是HTML 您可以执行类似“为课程设置输入”这样的操作,以便在显示页面时看到在输入框中(这是页面上HTML / PHP的非常正确且常见的用法-不管那里是否有JS)是否...)
<input type="text" id="thecourse" name="thecourse" value="
我们需要PHP中的变量,因此我们再次“跳转”并转到PHP,回显该变量,然后返回HTML
<?php echo $course; ?>
并完成HTML
">
好吧,虽然我相信这会有所帮助,但这是对所引用示例的详细解释!
另一种方法(在同一页面上使用JS和PHP)是类似的
<script>
// Note here that we 'jump' out of HTML and into JS!
// also note that I'm using jQuery here as it is commonly used today
$("#thecourse").val('<?php echo $mycourse;?>'); // again a 'jump' to/from PHP - within JS!
// now, 'jump out' of JS and back to HTML...
</script>
关于如何移动和格式化数据(以及如何执行此操作的所有语言差异),有很多东西要学习。但是,随着时间的流逝,您将立即学习“跳跃”的想法,并且您可以做很多有趣的事情-快速的页面加载立即显示数据!
答案 1 :(得分:-1)
不确定要做什么。
但是也许是这样的:将<input type='submit'>
包裹在<form></form>
中,并使表单的动作指向PHP文件。然后,可以在PHP文件中使用header('Location: where/to/go')
或其他方法进行重定向。
<-- html stuff -->
<form action='path/to/php-file.php'>
<input type='submit' name="" value="Buscar" id="boton1">
</form>
不过,可以肯定的是,不要混用PHP和JS。