Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将两个循环转换为smarty_Php_Mysql_Templates_Smarty - Fatal编程技术网

Php 将两个循环转换为smarty

Php 将两个循环转换为smarty,php,mysql,templates,smarty,Php,Mysql,Templates,Smarty,我有两个PHP周期,需要转换为smarty结构。Down包括PHP代码 代码: $query=mysqli\u query($cnn,“选择*,计数(*)作为课程内部的ph值连接完成的课程在course.id=completed\u course.id\u课程组按course.id”); 而($row=mysqli_fetch_数组($query)){ 好的,那么您的问题实际上是关于SQL的。让我们看看您的查询。第一个查询如下所示: SELECT COUNT(*) AS abs FROM pa

我有两个PHP周期,需要转换为smarty结构。Down包括PHP代码

代码:


$query=mysqli\u query($cnn,“选择*,计数(*)作为课程内部的ph值连接完成的课程在course.id=completed\u course.id\u课程组按course.id”);
而($row=mysqli_fetch_数组($query)){

好的,那么您的问题实际上是关于SQL的。让我们看看您的查询。第一个查询如下所示:

SELECT COUNT(*) AS abs
FROM participant
WHERE id_completed_course = {DATA FROM FIRST QUERY}
SELECT COUNT(*) AS abs
FROM participant
WHERE id_completed_course IN (
    SELECT id_kurz
    FROM completed_course
)
我假设(因为我对您的数据库方案一无所知),这将给出课程列表和学生人数(可能-我不知道
已完成课程表中的内容)谁完成了它们。如前所述,此查询还将从
completed\u course
表中提供一些数据,但它可能没有意义,因为您仅在
course.id
上分组

第二个问题是:

SELECT COUNT(*) AS abs
FROM participant
WHERE id_completed_course IN (
    SELECT course.id FROM
    FROM course
        INNER JOIN completed_course ON course.id = completed_course.id_kurz
)
这个查询大概是为了给您提供已完成课程的参与者总数。为了实现这一点,
WHERE
子句可以如下所示:

SELECT COUNT(*) AS abs
FROM participant
WHERE id_completed_course = {DATA FROM FIRST QUERY}
SELECT COUNT(*) AS abs
FROM participant
WHERE id_completed_course IN (
    SELECT id_kurz
    FROM completed_course
)
请注意,我在第一个查询中选择了值,并将它们作为
子句中的
的一部分。此查询可以大大简化-例如,子查询中的联接实际上只是从
已完成课程
表中选择的ID值:

SELECT COUNT(*) AS abs
FROM participant
    INNER JOIN completed_course ON participant.id_completed_course=completed_course.id_kurz
如果您完全去掉子查询,只将参与者加入到
completed\u course
表中,查询实际上会更有效


最后一个查询将为您提供一个值:
id\u completed\u course
值对应于
completed\u course
表中某个项目的参与者人数。您可以使用
mysqli
方法检索此数据并将其传递给Smarty模板。

查看。这是学习的好起点ing Smarty。@Kryten我试过了。我需要,作为第一个SQL查询的ID值,以获取第二个查询的WHERE。我实际上有:
$mysqli->query(“SELECT*,COUNT(*)as ph from course internal JOIN completed_course ON course.ID=completed_course.ID_kurz GROUP BY course.ID”);$data=$mysqli->fetch_all();$mysqli->query(“选择COUNT(*)作为id_完成的参与者的abs(课程={第一次查询的数据}”);$data2=$mysqli->fetch_all();