gpt4 book ai didi

php - 根据请求获得包含大量结果的页面的最有效方法

转载 作者:行者123 更新时间:2023-11-29 14:29:51 25 4
gpt4 key购买 nike

我能想到的最好的例子是体育名人堂页面。

然后,您可以使用导航来根据用户的请求(例如过去 3 个月和拳击)限制结果。

例如,显示多种结果布局的最佳方式是什么,

游泳成绩的布局与足球不同,足球与拳击不同,然后通过时间戳添加时间限制器。

这些是我到目前为止想到的选项,希望得到您的意见。

简单的 PHP

if($_GET['sport'] = "boxing"){
if(isset($_GET['timescale'])){
$start = 1334752108;
$end = 1334759108;
$query = "SELECT athlete_name, athlete_age, athlete_desc FROM `athletes` WHERE `timestamp` BETWEEN '".$start."' AND '".$end."' AND `sport` = 'boxing' LIMIT 30";
} else {
$query = "SELECT athlete_name, athlete_age, athlete_desc FROM `athletes` WHERE `sport` = 'boxing' LIMIT 30";
}

while($row = mysql_fetch_array(mysql_query($query))){
echo "<div class='boxing'>";
//show results
echo "</div>";
}
}
if($_GET['sport'] = "swimming"){
//repeated
}
if($_GET['sport'] = "football"){
//repeated
}

Ajax

有一个页面可以处理所有请求 (ajax_request_hof.php),其中包含与上面的 PHP 类似的代码。

编辑skafandri 建议使用数据映射类,其他人会建议这个或能够向我展示一个示例吗?

任何关于如何改进这一点的想法都非常受欢迎和需要。

最佳答案

您在 SO 聊天中提到您没有任何框架经验,因此这里是一个没有框架的建议。

我知道我可能会因此而受到批评,但知道这是一个组织结构问题,您可以窃取 MVC 的一些概念并使用它们,直到您可以将其移植到更合适的结构,至少使其成为更干净,更容易管理。

免责声明:这绝不是一个好的结构,但对于您的问题来说,考虑到您告诉我您没有任何 OOP 和/或模式背景,但它作为临时解决方案“足够好”。

如果您像这样订购它,您可以将其插入到几乎任何框架中,而无需做大量工作。

这是一种方法。

具有以下类:

<?php

class BasketballPage
{
protected $mapper;

public construct ( $mapper )
{
$this->mapper = $mapper;
}

public function display_player_info( $playerid, $sportid )
{
$basketball_player = $this->mapper->get_sports_player( $playerid, $sportid )

echo '<p>Basketball player name ' . $basketball_player['name'];
echo '<p>Some other HTML, etc</p>';
}

public function display_match_data($matchid, $sportid)
{
//Same as above but would call to $this_mapper->get_match_data(); And display relevant HTML.
}

public function display_player_info_AJAX( $playerid, $sportid )
{
$player = $this->mapper->get_sports_player();
header('Content-type: text/json');
header('Content-type: application/json');
echo json_encode( $player );
exit();
}
}

class BoxingPage
{
protected $mapper;

public function display_player_info( $playerid, $sportid)
{
$boxing_person = $this->mapper->get_sports_player( $playerid, $sportid)

echo '<p>Person\'s boxing name ' . $boxing_person['name'];
echo '<p>Some other HTML, etc</p>';
}
}

class Mapper
{
protected $connection;

public function __construct ( $connection )
{
$this->connection = $connection;
}

public function get_sports_player($id, $sportid)
{
$query = $this->connection->prepare( 'SELECT * FROM players WHERE id = :player_id AND sport_id' );
$query->bindValue(':player_id', $id, PDO::PARAM_INT);
$query->bindValue(':sport_id', $sport_id, PDO::PARAM_INT);
$query->execute();

return $query->fetchAll( PDO::FETCH_ASSOC );
}

public function get_match_data($matchid, $sportid)
{
//some query here that returns match data.
}
}

?>

对于这些类中的每一个类,您都会有一个单独的 php 页面,因为它们会变得很大。即:

  • 篮球页面.php
  • Boxingpage.php
  • Mapper.php

然后将这些文件包含到您的index.php中。您的索引可能如下所示:

index.php?playerid=1&sportid=2

<?php

//Instantiate the classes first.

$connection = new PDO($dsn,$username,$password); //your database credentials
$mapper = new Mapper( $connection );
$basketballpage = new BasketballPage( $mapper );
$boxingpage = new BoxingPage( $mapper );

if( $_GET['page'] == 2]) //lets say basketball is id 2 in your database
{
$basketballpage->display_player_info( $_GET['playerid'], $_GET['sportid'] );
}

//In this same page you'd also add this other line, but lets say they visit the bottom link instead: index.php?playerid=1&sportid=3

if( $_GET['page'] == 3]) //lets say boxing is 3 in your database
{
$boxing->display_player_info( $_GET['playerid'], $_GET['sportid'] );
}

//THEN lets say someone visits a different link like: index.php?index.php?matchid=1&sportid=2&page=2

if( $_GET['page'] == 2] && $_GET['matchid'])
{
$boxingpage->display_match_data( $_GET['playerid'] );
}

//On the above you can use that same category, but a different function will display a different page!

//Bonus example, you can use it for AJAX easily. Lets say they visit the url index.php?playerid=1&sportid=2&AJAX=1


if( $_GET['page'] == 2 && GET['AJAX'] == 1)
{
$basketballpage->display_player_info_AJAX( $_GET['playerid'], $_GET['sportid'] );
}

?>

这看起来很复杂,但是一旦你看到它是如何连接的,就会发现你的索引页只有大约 30-40 行!它可以使事情变得非常整洁,您可以只专注于在 index.php 上路由您的请求,而其他文件则负责其余的事情。

关于php - 根据请求获得包含大量结果的页面的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10211313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com