Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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 来自MySQL的路径报告_Php_Mysql - Fatal编程技术网

Php 来自MySQL的路径报告

Php 来自MySQL的路径报告,php,mysql,Php,Mysql,我有一个数据库表,它跟踪通过php脚本启动的所有页面视图。该表如下所示: SELECT ( SELECT p5.page_url FROM pageviews p5 WHERE p5.session_id = t.session_id AND p5.rowid < t.rowid ORDER BY p5.rowid DESC LIMIT 4,1 ) AS back_5_p

我有一个数据库表,它跟踪通过php脚本启动的所有页面视图。该表如下所示:

SELECT ( SELECT p5.page_url
           FROM pageviews p5
          WHERE p5.session_id = t.session_id
            AND p5.rowid < t.rowid
          ORDER BY p5.rowid DESC
          LIMIT 4,1
       ) AS back_5_page_url

     , ( SELECT p4.page_url 
           FROM pageviews p4
          WHERE p4.session_id = t.session_id
            AND p4.rowid      < t.rowid
          ORDER BY p4.rowid DESC
         LIMIT 3,1
      ) AS back_4_page_url

     , ( SELECT p3.page_url
           FROM pageviews p3
          WHERE p3.session_id = t.session_id
            AND p3.rowid      < t.rowid
          ORDER BY p3.rowid DESC
          LIMIT 2,1
       ) AS back_3_page_url

     , ( SELECT p2.page_url
           FROM pageviews p2
          WHERE p2.session_id = t.session_id
            AND p2.rowid      < t.rowid
          ORDER BY p2.rowid DESC
          LIMIT 1,1
       ) AS back_2_page_url

     , ( SELECT p1.page_url
           FROM pageviews p5
          WHERE p1.session_id = t.session_id
            AND p1.rowid      < t.rowid
          ORDER BY p1.rowid DESC
          LIMIT 0,1
       ) AS back_1_page_url

     , t.page_url
     , t.session_id
     , t.row_id
  FROM pageviews t
 WHERE t.page_url = 'X'
  • 罗维德(AI)
  • 用户id
  • 网页地址
  • 叶锡安
  • 会话号
我希望能够查询我的表以“显示访问者在单个会话中访问X页面的路径(最多5页)”。输出将是一个表,每个列中都有一个URL,因此路径是从左到右的,顺序是他们访问的页面具有相同的会话id,以某个页面结束


有线索吗?我一直在寻找一个报告工具来帮助我建立这些细分市场,但我没有想出任何东西,所以我试图看看是否有一种方法可以直接查询它。我希望避免使用其他工具进行收集,如果可以的话,只需查询我的数据库。

这样做是否能满足您的需要(警告-未测试):


一个想法是在选择列表中使用相关子查询

如果我理解了规范,那么查询的参数(parameter)将是一个特定的“page\u url”,在规范中用“X”表示

外部查询将检索该页面的行。选择列表中的子查询将获得会话中的上一个
页面url
。(我们看不到日期时间/时间戳,因此后续页面视图需要依赖'rowid'值的增加(即,以前的页面视图将具有'row_id'的“较低”值)

大概是这样的:

SELECT ( SELECT p5.page_url
           FROM pageviews p5
          WHERE p5.session_id = t.session_id
            AND p5.rowid < t.rowid
          ORDER BY p5.rowid DESC
          LIMIT 4,1
       ) AS back_5_page_url

     , ( SELECT p4.page_url 
           FROM pageviews p4
          WHERE p4.session_id = t.session_id
            AND p4.rowid      < t.rowid
          ORDER BY p4.rowid DESC
         LIMIT 3,1
      ) AS back_4_page_url

     , ( SELECT p3.page_url
           FROM pageviews p3
          WHERE p3.session_id = t.session_id
            AND p3.rowid      < t.rowid
          ORDER BY p3.rowid DESC
          LIMIT 2,1
       ) AS back_3_page_url

     , ( SELECT p2.page_url
           FROM pageviews p2
          WHERE p2.session_id = t.session_id
            AND p2.rowid      < t.rowid
          ORDER BY p2.rowid DESC
          LIMIT 1,1
       ) AS back_2_page_url

     , ( SELECT p1.page_url
           FROM pageviews p5
          WHERE p1.session_id = t.session_id
            AND p1.rowid      < t.rowid
          ORDER BY p1.rowid DESC
          LIMIT 0,1
       ) AS back_1_page_url

     , t.page_url
     , t.session_id
     , t.row_id
  FROM pageviews t
 WHERE t.page_url = 'X'
这假定页面url不包含制表符(0x09)字符

last_5_pages
列是一个以制表符分隔的页面url列表,首先是最近的页面视图,然后是以前查看的页面url,等等


将这些列拆分为单独的列将需要更多的工作,将查询包装在内联视图中,并结合子字符串索引(可能是反向),以及一个计算列表中页面url数量的函数……这在SQL中有点麻烦。如果我采用这种方法,我更愿意从选项卡中解析页面url客户机中的分隔列表。

以下是我最后做的事情-效果很好

<?php
require_once 'init.php';
// ----------------- PAGE PATH REPORT
$html = "<table>";
$html .= "<tr><th align='left'>PAGE PATHS HITTING GOAL.PHP</th></tr>";
$paths = array();
$sql = "SELECT cookie_uid, page_url FROM pageviews ORDER BY rowid";
$result = mysqli_query($conn, $sql);
$got_rows = mysqli_num_rows($result);

if ($got_rows) {
    while ($row = mysqli_fetch_array($result)) {
        // Create an array for the cookie_uid if it doesn't exist yet

        if ( ! array_key_exists($row['cookie_uid'], $paths) || ! is_array($paths[$row['cookie_uid']])) {
            $paths[$row['cookie_uid']] = [];
        }

        // Add to the array now that we know it exists
        array_push($paths[$row['cookie_uid']], $row['page_url']);
    }

    foreach ($paths as $session => $page) {
        $html .= "<tr>";
        $html .= '<td>' . implode('  --->   ', $page) . "</td>";
        $html .= "</tr>";
    }

} else {
    $html .= '<td colspan="2">No results</td>' . "";
}

$html .= "</table>";
echo $html;

if (!mysqli_query($conn,$sql))  {
    die('Error: ' . mysqli_error($conn));
}

// ----------------- ALL PAGES REPORT
echo "</br></br>";
echo "<tbody><table>";
echo "<tr><th align='left'>UNIQUE PAGES</th></tr>";
$sql = "SELECT distinct page_url FROM pageviews";
$allpages = mysqli_query($conn, $sql);
foreach ($allpages as $page){
    echo "<tr>";
    echo "<td>" . $page['page_url'] . "</td>";
    echo "</tr>";
}

echo "</tbody></table>";
mysqli_close($conn);
error_reporting(E_ALL);
?>

我来试一试。如何在php中回显结果?
<?php
require_once 'init.php';
// ----------------- PAGE PATH REPORT
$html = "<table>";
$html .= "<tr><th align='left'>PAGE PATHS HITTING GOAL.PHP</th></tr>";
$paths = array();
$sql = "SELECT cookie_uid, page_url FROM pageviews ORDER BY rowid";
$result = mysqli_query($conn, $sql);
$got_rows = mysqli_num_rows($result);

if ($got_rows) {
    while ($row = mysqli_fetch_array($result)) {
        // Create an array for the cookie_uid if it doesn't exist yet

        if ( ! array_key_exists($row['cookie_uid'], $paths) || ! is_array($paths[$row['cookie_uid']])) {
            $paths[$row['cookie_uid']] = [];
        }

        // Add to the array now that we know it exists
        array_push($paths[$row['cookie_uid']], $row['page_url']);
    }

    foreach ($paths as $session => $page) {
        $html .= "<tr>";
        $html .= '<td>' . implode('  --->   ', $page) . "</td>";
        $html .= "</tr>";
    }

} else {
    $html .= '<td colspan="2">No results</td>' . "";
}

$html .= "</table>";
echo $html;

if (!mysqli_query($conn,$sql))  {
    die('Error: ' . mysqli_error($conn));
}

// ----------------- ALL PAGES REPORT
echo "</br></br>";
echo "<tbody><table>";
echo "<tr><th align='left'>UNIQUE PAGES</th></tr>";
$sql = "SELECT distinct page_url FROM pageviews";
$allpages = mysqli_query($conn, $sql);
foreach ($allpages as $page){
    echo "<tr>";
    echo "<td>" . $page['page_url'] . "</td>";
    echo "</tr>";
}

echo "</tbody></table>";
mysqli_close($conn);
error_reporting(E_ALL);
?>