Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.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在gridview中垂直显示数据_Php_Gridview - Fatal编程技术网

使用php在gridview中垂直显示数据

使用php在gridview中垂直显示数据,php,gridview,Php,Gridview,一个fo客户机需要按照网格的字母顺序显示产品。 像这样展示。 将从数据库中查询产品 A H O U B I P V C J Q W D K R X E L S Y 行可以递增,但列不能递增。 最大列数为4。 有人可以提出这样做的想法 提前谢谢 如果你有一系列想要显示的结果,那就很简单了。只需计算每个最后一列中的行数(在本例中,显示的结果总数除以4,然后向上取整)。然后,如果给定当前列中项目的索引,则这将成为获取下一列中项目索引的偏移量 类似这样的方法会奏效:

一个fo客户机需要按照网格的字母顺序显示产品。 像这样展示。 将从数据库中查询产品

A  H  O  U
B  I  P  V
C  J  Q  W
D  K  R  X 
E  L  S  Y 
行可以递增,但列不能递增。 最大列数为4。 有人可以提出这样做的想法


提前谢谢

如果你有一系列想要显示的结果,那就很简单了。只需计算每个最后一列中的行数(在本例中,显示的结果总数除以4,然后向上取整)。然后,如果给定当前列中项目的索引,则这将成为获取下一列中项目索引的偏移量

类似这样的方法会奏效:

<?php
    $rows= array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X');

    $numberOfTableRows= ceil(count($rows)/4.0);
?>
    <table>
<?php   
    for($ndx=0;$ndx<$numberOfTableRows;$ndx++)
    {
?>
    <tr>
        <td><?php echo $rows[$ndx]; ?></td>
        <td><?php echo (isset($rows[$ndx+$numberOfTableRows]) ? $rows[$ndx+$numberOfTableRows] : ''); ?></td>
        <td><?php echo (isset($rows[$ndx+($numberOfTableRows*2)]) ? $rows[$ndx+($numberOfTableRows*2)] : ''); ?></td>
        <td><?php echo (isset($rows[$ndx+($numberOfTableRows*3)]) ? $rows[$ndx+($numberOfTableRows*3)] : ''); ?></td>
    </tr>   
<?php   
    }
?>
    </table>
试试这个:

<?php
    $rows = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X');

    $numberOfTableRows = ceil(count($rows)/4.0);
?>
    <table>
<?php   
    for($ndx=0;$ndx<$numberOfTableRows;$ndx++)
    {
?>
    <tr>
        <td><?php echo $rows[$ndx]; ?></td>
        <td><?php echo $rows[$ndx+$numberOfTableRows]; ?></td>
        <td><?php echo $rows[$ndx+($numberOfTableRows*2)]; ?></td>
        <td><?php echo $rows[$ndx+($numberOfTableRows*3)]; ?></td>
    </tr>   
<?php   
    }
?>
    </table>

  • 谢谢

假设数据是按字母顺序排序的一维数组,这将根据需要将其拆分为行(它正在工作):

并且您希望按字母顺序显示它们(对于商店中的特定类别或部分):

它将为您提供按字母顺序排序的产品。然后你可以把它输入上面的代码

再次使用代码:

<?php

$pdo = new PDO('mysql:host=localhost;dbname=store', 'youruser', 'yourpasswd');

$pdo->query('SET NAMES UTF8'); # here we say NO to latin1

if(isset($_GET['id'])) {
  $category_id = (int) $_GET['id'];


  $prepared = $pdo->prepared('SELECT * FROM products WHERE category_id = :category_ud ORDER BY title ASC');
  $prepared->execute([':category_id' => $category_id]);

  # don't use this in production with large data sets
  $a = $prepared->fetchAll(PDO::FETCH_ASSOC);

  # spit data into columns
  $size = round(sizeof($a) / 4);

  $b = []; 

  for($i = 0; $i < 4; $i++) {
    $b[] = array_slice($a, $i * $size, $size); 
  }

  # transform it to rows
  $c = [];
  for($i  = 0; $i < $size; $i++) {
    $c[$i] = [];
    for($j = 0; $j < 4; $j++) {
      if(isset($b[$j][$i]))
        $c[$i][$j] = $b[$j][$i];
      else
        $c[$i][$j] = '';
    }
  }

  # send $c to output code here
}

你研究过tablesorter插件吗?没有。你能告诉我那是什么吗?到目前为止你尝试过什么吗?@DamForums这是一个jquery插件,它将获取你返回的所有数据,并将其放入一个漂亮整洁的可排序表中。只需谷歌jquery表排序器插件就可以找到它,还有一些例子,我试图显示字母表。但问题是我知道如何将查询集成到其中。我刚刚在stackthis上发表了一篇文章,这对字母表有效。但是如果我使用mysql查询来获取数据,它只会显示动态表中的第一个数据项。这就是我所做的。我编写了一个查询来获取用户。$sql=mysql\U查询(“通过tbl\U user.user ASC从tbl\U用户订单中选择用户”)$cath=mysql\u fetch\u数组($sql);然后我将$cath传递给$rows。我做错了什么吗?@Danielpsc。我试图使用您的帮助显示所有USR。但是我遇到了一些问题。你能帮我吗?。我需要在一个单独的
    标签中显示用户。每个用户都列在一个
  • 标签中。我必须在href中列出他们的用户id。这是我做的代码
  • 。你能帮我一下吗?我有大麻烦了。因此将有4个ul标签。我可以重复这些吗?您不需要重复字段名称。因此,类似这样的方法应该有效:
  • 。当然,您还需要将
    user\u id
    添加到
    SELECT
    语句中。假设表中有25个用户。那么我如何在第一个
      标签中显示前7个用户,在另一个
        标签中显示第二个7个用户基本上会有4个独立的
          标签。这些
            标签将在div标签中。我如何使用这些代码来做到这一点?你能在这方面提供更多帮助吗?我是一个新手。如何使用mysql查询来获取要在这里显示的数据?但我使用的是5.4.7php@DamForums我已经更新的代码,它现在应该说明如何可以做到这一点。请注意,我在这里使用
            short\u open\u tags=on
            ini设置和
            PDO
            mysql驱动器这适用于字母表。但是如果我使用mysql查询来获取数据,它只显示动态表中的第一个数据项。这就是我所做的。编写一个查询来获取用户。$sql=mysql\u query(“通过tbl_user.user ASC从tbl_user ORDER中选择user”);$cath=mysql_fetch_数组($sql);然后我将$cath传递给$rows。我做错了什么?
            <?php
                $rows = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X');
            
                $numberOfTableRows = ceil(count($rows)/4.0);
            ?>
                <table>
            <?php   
                for($ndx=0;$ndx<$numberOfTableRows;$ndx++)
                {
            ?>
                <tr>
                    <td><?php echo $rows[$ndx]; ?></td>
                    <td><?php echo $rows[$ndx+$numberOfTableRows]; ?></td>
                    <td><?php echo $rows[$ndx+($numberOfTableRows*2)]; ?></td>
                    <td><?php echo $rows[$ndx+($numberOfTableRows*3)]; ?></td>
                </tr>   
            <?php   
                }
            ?>
                </table>
            
            <?php
            # generate alphabet for demo
            # warning: php5.5 generator
            function az1() { for($a = 65; $a < 91; $a++) { yield chr($a); } }
            
            $a = [];
            
            foreach(az1() as $s) { $a[] = $s; }
            
            # spit data into columns
            $size = round(sizeof($a) / 4);
            
            
            $b = []; 
            
            for($i = 0; $i < 4; $i++) {
              $b[] = array_slice($a, $i * $size, $size); 
            }
            
            # transform it to rows
            $c = [];
            for($i  = 0; $i < $size; $i++) {
              $c[$i] = [];
              for($j = 0; $j < 4; $j++) {
                if(isset($b[$j][$i]))
                  $c[$i][$j] = $b[$j][$i];
                else
                  $c[$i][$j] = '';
              }
            }
            
            print_r($c);
            
            id | category_id | title | content | image | price | qty 
            
            SELECT * FROM products WHERE category_id = 5 ORDER BY title ASC
            
            <?php
            
            $pdo = new PDO('mysql:host=localhost;dbname=store', 'youruser', 'yourpasswd');
            
            $pdo->query('SET NAMES UTF8'); # here we say NO to latin1
            
            if(isset($_GET['id'])) {
              $category_id = (int) $_GET['id'];
            
            
              $prepared = $pdo->prepared('SELECT * FROM products WHERE category_id = :category_ud ORDER BY title ASC');
              $prepared->execute([':category_id' => $category_id]);
            
              # don't use this in production with large data sets
              $a = $prepared->fetchAll(PDO::FETCH_ASSOC);
            
              # spit data into columns
              $size = round(sizeof($a) / 4);
            
              $b = []; 
            
              for($i = 0; $i < 4; $i++) {
                $b[] = array_slice($a, $i * $size, $size); 
              }
            
              # transform it to rows
              $c = [];
              for($i  = 0; $i < $size; $i++) {
                $c[$i] = [];
                for($j = 0; $j < 4; $j++) {
                  if(isset($b[$j][$i]))
                    $c[$i][$j] = $b[$j][$i];
                  else
                    $c[$i][$j] = '';
                }
              }
            
              # send $c to output code here
            }
            
            <? foreach($c as $row): ?>
            <tr>
              <? foreach($row as $product): ?>
                <td>
                   .. product information
                </td>
              <? endforeach ?>
            </tr>
            <? endforeach ?>