Php 从数据库中回显一组特定的行

Php 从数据库中回显一组特定的行,php,mysql,Php,Mysql,我是一个前端开发人员,在后端玩,所以请容忍。我只是在创建一个简单的应用程序来显示足球比赛的球队阵容。我已经在数据库中创建了表,可以在22名球员之间循环进行一场比赛。但是,我只想在一个div中显示前11个,在另一个div中显示第二个11 以下是我目前的代码: <?php try { $handler = new PDO('mysql:host=localhost;dbname=euro_missing_men','root',''); $handler->s

我是一个前端开发人员,在后端玩,所以请容忍。我只是在创建一个简单的应用程序来显示足球比赛的球队阵容。我已经在数据库中创建了表,可以在22名球员之间循环进行一场比赛。但是,我只想在一个div中显示前11个,在另一个div中显示第二个11

以下是我目前的代码:

    <?php

try {

    $handler = new PDO('mysql:host=localhost;dbname=euro_missing_men','root','');
    $handler->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

} catch(PDOException $e) {
    echo $e->getMessage();
    die('Sorry, database issue');
}




$query = $handler->query('SELECT * FROM `game` g 
    JOIN team t on (g.id = t.game_id) 
    JOIN team_name tn on (t.team_id = tn.id)
    JOIN position p on (t.position_id = p.id)
');

$results = $query->fetch(PDO::FETCH_OBJ);

while($row = $query->fetch(PDO::FETCH_OBJ)) {
    echo $row->player, "<br/>";
}


?>
但我想把它们分开。我知道可能有更好的方法,但是为了练习的目的,我想在一个div中重复前11个名字,在另一个div中重复第二个11个名字

谢谢。

//创建一个计数器
// create a counter
$i = 0;

// echo the opening div
echo "<div>";
while($row = $query->fetch(PDO::FETCH_OBJ)) {
    echo $row->player, "<br/>";
    if ( $i++ == 11 ) echo "</div><div>"; // increment the counter and at the 11th iteration close the div and start a new one
}
echo "</div>";
$i=0; //呼应开场白 回声“; while($row=$query->fetch(PDO::fetch_OBJ)){ echo$row->player,“
”; if($i++==11)echo“”;//递增计数器,在第11次迭代时关闭div并开始一个新的 } 回声“;
//创建一个计数器
$i=0;
//呼应开场白
回声“;
while($row=$query->fetch(PDO::fetch_OBJ)){
echo$row->player,“
”; if($i++==11)echo“”;//递增计数器,在第11次迭代时关闭div并开始一个新的 } 回声“;
您始终可以执行以下基本操作:

   <?php

try {

    $handler = new PDO('mysql:host=localhost;dbname=euro_missing_men','root','');
    $handler->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

} catch(PDOException $e) {
    echo $e->getMessage();
    die('Sorry, database issue');
}




$query = $handler->query('SELECT * FROM `game` g 
    JOIN team t on (g.id = t.game_id) 
    JOIN team_name tn on (t.team_id = tn.id)
    JOIN position p on (t.position_id = p.id)
');

$results = $query->fetch(PDO::FETCH_OBJ);
$upto = 0;
echo "<div>"; //Start the divs
while($row = $query->fetch(PDO::FETCH_OBJ)) {
    $upto ++; //add 1 to upto
    if($upto % 11 == 0) //if 11 results
        echo "</div><div>"; //create new div
    echo $row->player, "<br/>";

}
echo "</div>"; //close div


?>

您始终可以执行以下基本操作:

   <?php

try {

    $handler = new PDO('mysql:host=localhost;dbname=euro_missing_men','root','');
    $handler->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

} catch(PDOException $e) {
    echo $e->getMessage();
    die('Sorry, database issue');
}




$query = $handler->query('SELECT * FROM `game` g 
    JOIN team t on (g.id = t.game_id) 
    JOIN team_name tn on (t.team_id = tn.id)
    JOIN position p on (t.position_id = p.id)
');

$results = $query->fetch(PDO::FETCH_OBJ);
$upto = 0;
echo "<div>"; //Start the divs
while($row = $query->fetch(PDO::FETCH_OBJ)) {
    $upto ++; //add 1 to upto
    if($upto % 11 == 0) //if 11 results
        echo "</div><div>"; //create new div
    echo $row->player, "<br/>";

}
echo "</div>"; //close div


?>

这假设您可能有超过22个。如果你只有22个,那么@pamblam有更简单的答案

如果要将它们分成11组,可以使用运算符:

var $count = 1;
while($row = $query->fetch(PDO::FETCH_OBJ)) {
    // After every 11th row, echo a closing div / open a new div
    if ( ! ($count++ % 11) ) {
        echo '</div><div>';
    }

    // Don't use break tags, you can't style them well.
    echo '<p>' . $row->player . "</p>";
}
var$count=1;
while($row=$query->fetch(PDO::fetch_OBJ)){
//每11行之后,回显一个结束div/打开一个新div
如果(!($count++%11)){
回声';
}
//不要使用断开标记,您无法很好地设置它们的样式。
回声“”.$row->player.“

”; }
或者,另一种方法是将结果拆分为数组:

$results = $query->fetchAll();

$divs = array_chunk($results, 11);

foreach( $divs AS $div ) {
    echo '<div>';
    foreach ( $div AS $row ) {
        echo '<p>' . $row->player . '</p>';
    }
    echo '<div>';
}
$results=$query->fetchAll();
$divs=array\u chunk($results,11);
foreach($div作为$div){
回声';
foreach($div作为$row){
回显“”.$row->player.“

”; } 回声'; }
这假设您可能有超过22个。如果你只有22个,那么@pamblam有更简单的答案

如果要将它们分成11组,可以使用运算符:

var $count = 1;
while($row = $query->fetch(PDO::FETCH_OBJ)) {
    // After every 11th row, echo a closing div / open a new div
    if ( ! ($count++ % 11) ) {
        echo '</div><div>';
    }

    // Don't use break tags, you can't style them well.
    echo '<p>' . $row->player . "</p>";
}
var$count=1;
while($row=$query->fetch(PDO::fetch_OBJ)){
//每11行之后,回显一个结束div/打开一个新div
如果(!($count++%11)){
回声';
}
//不要使用断开标记,您无法很好地设置它们的样式。
回声“”.$row->player.“

”; }
或者,另一种方法是将结果拆分为数组:

$results = $query->fetchAll();

$divs = array_chunk($results, 11);

foreach( $divs AS $div ) {
    echo '<div>';
    foreach ( $div AS $row ) {
        echo '<p>' . $row->player . '</p>';
    }
    echo '<div>';
}
$results=$query->fetchAll();
$divs=array\u chunk($results,11);
foreach($div作为$div){
回声';
foreach($div作为$row){
回显“”.$row->player.“

”; } 回声'; }
简单拆分结果?然后循环每一个

$results = $query->fetchAll();

$team1 = array_slice($results, 0, 11);

$team2 = array_slice($results, 11);
正如所建议的那样

$results = $query->fetchAll();

$teams = array_chunk($results, 11);
然后输出这个

$results = $query->fetchAll(PDO::FETCH_OBJ);

$teams = array_chunk($results, 11);

foreach($teams as $team) {
    echo '<div>';
    foreach($team as $player) {
        echo $player->name . '<br />';
    }
    echo '</div>';
}
$results=$query->fetchAll(PDO::FETCH_OBJ);
$teams=array_chunk($results,11);
foreach($teams作为$team){
回声';
foreach($团队作为$玩家){
echo$player->name.“
”; } 回声'; }
简单拆分结果?然后循环每一个

$results = $query->fetchAll();

$team1 = array_slice($results, 0, 11);

$team2 = array_slice($results, 11);
正如所建议的那样

$results = $query->fetchAll();

$teams = array_chunk($results, 11);
然后输出这个

$results = $query->fetchAll(PDO::FETCH_OBJ);

$teams = array_chunk($results, 11);

foreach($teams as $team) {
    echo '<div>';
    foreach($team as $player) {
        echo $player->name . '<br />';
    }
    echo '</div>';
}
$results=$query->fetchAll(PDO::FETCH_OBJ);
$teams=array_chunk($results,11);
foreach($teams作为$team){
回声';
foreach($团队作为$玩家){
echo$player->name.“
”; } 回声'; }
您可以添加增量。如果$i fetch(PDO::fetch_OBJ); $i=0; while($row=$query->fetch(PDO::fetch_OBJ)){ $i++; 如果($i玩家“
”; } 否则{ 回音“{$i}共22个”$row->player。“
”; } }
您可以添加增量。如果$i fetch(PDO::fetch_OBJ); $i=0; while($row=$query->fetch(PDO::fetch_OBJ)){ $i++; 如果($i玩家“
”; } 否则{ 回音“{$i}共22个”$row->player。“
”; } }
我不认为low level意味着你认为它意味着什么。这都是相对高级的东西。你是否有机会尝试对这个stuf进行分页?如果有,在查询中使用LIMIT和OFFSET(或者使用两个参数缩短LIMIT,其中secound充当OFFSET)不要一次加载所有数据。如果要防止页面在分页更改时重新加载,请使用AJAX仅加载页面的这一部分。如果不这样做..忘记我的问题:)我不认为low-level意味着你认为它意味着什么。这都是相对高级的东西。你是否有机会尝试对此stuf进行分页?如果有,请在查询中使用LIMIT和OFFSET(或者使用两个参数缩短LIMIT,其中secound充当OFFSET)不要一次加载所有数据。如果您想防止页面在分页更改时重新加载,请使用AJAX仅加载页面的这一部分。如果不是……忘了我的问题:)哇,为什么不干脆
==
呢?这是有道理的,尽管我认为对于一个足球队来说,这个数字不会变化太大。陆军无线电工程网络;他们不允许有一定数量的人吗?我想你需要括号,比如
if(!($count++%11)){
woah对模运算符非常感兴趣,为什么不仅仅是
==
呢?这是有道理的,尽管我可以想象一个足球队的人数不会有太大的变化。他们不是只允许有一定数量的球员吗?我想你需要括号,比如
if(!($count++%11)){
为什么不将增量
$i++
合并到比较中?
如果($i++==11)
…是的,
===
可以工作,但是不需要严格的比较,对吗?
==
也可以工作?谢谢你,Pamblam。它确实可以工作,但我假设它的偏移量与10的偏移量相同。但出于某种原因,我实际上缺少了第一行(我在原始问题中没有注意到).所以只显示了21名玩家。有身份证吗