如何阻止查询结果在列之间拆分单个行的数据?

Posted

技术标签:

【中文标题】如何阻止查询结果在列之间拆分单个行的数据?【英文标题】:How do I stop query results from splitting an individual row's data between columns? 【发布时间】:2015-12-14 15:35:40 【问题描述】:

我已从 mysql 数据库执行查询,结果正确返回。我用响应式 CSS 列格式化了这个 - 桌面上的三个列,随着屏幕宽度的减小,列的数量减少。 EZ PZ。但是,我希望单行的所有结果保持在一起,而不是在列之间拆分。当前发生的情况是,我可能在一列末尾有一个类别和名称,地址和其他信息跳到下一列的顶部。有没有办法将每一行的信息保存在一起?

我在 php 和 CSS 方面完全是菜鸟,所以请随时批评一切,以便我学习。编辑:添加 html

PHP:(编辑回原来的,因为它工作得更好)

    <?php
        $mysqli = NEW MySQLi ( 'localhost', 'user', 'password', 'db' );

        $resultSet = $mysqli->query("
            SELECT Category, Name, Address, City, State, Zip, Phone, Website
            FROM Table
            WHERE ColumnName = 'SomeCity'
         ");

        if($resultSet->num_rows != 0) 

            while($rows = $resultSet->fetch_assoc())
            
            $Category = $rows['Category'];
            $Name = $rows['Name'];
            $Address = $rows['Address'];
            $City = $rows['City'];
            $State = $rows['State'];
            $Zip = $rows['Zip'];
            $Phone = $rows['Phone'];
            $Website = $rows['Website'];

        echo "<h1>$Category</h1><p>$Name<br>$Address $City $State $Zip<br>$Phone<br>$Website</p>";

        
        

        ?>

CSS:

#listings 
  -webkit-columns: 3 200px;
     -moz-columns: 3 200px;
          columns: 3 200px;
  -webkit-column-gap: 3em;
     -moz-column-gap: 3em;
          column-gap: 3em;
  -webkit-column-rule: 1px dotted #ddd;
     -moz-column-rule: 1px dotted #ddd;
          column-rule: 1px dotted #ddd;
  -moz-column-fill: auto;
       column-fill: auto;


@media (min-width: 500px) 
  listings 
    height: 350px;
  

HTML:

<!DOCTYPE HTML>
<html>
    <head>
        <title>TITLE</title>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <link rel="stylesheet" href="assets/css/main.css" />
    </head>
    <body class="homepage">
        <div id="page-wrapper">

            <!-- Header -->
                <div id="header-wrapper">
                    <header id="header" class="container">

                        <!-- Logo -->
                            <div id="logo">
                                <h1><a href="index.html"><img src="images/logo.png" /></a></h1>
                            </div>

                        <!-- Nav -->
                            <nav id="nav">
                                <ul>
                                    <li><a href="index.html">Home</a></li>
                                    <li class="current"><a href="#">Page</a></li>
                                    <li><a href="#">Page</a></li>
                                </ul>
                            </nav>

                    </header>
                </div>

<!-- Main -->
    <div id="main-wrapper">
        <div class="container">
        <h3>Listings</h3>
            <div id="listings">

<?php require_once('my-php-listings.php'); ?>

            </div>
        </div>
    </div>

<!-- Footer -->

        </div>

<!-- Scripts -->

    </body>
</html>

【问题讨论】:

你可能想看看implode() 我添加了这个:$array = array($Category1,$Name,$Address,$City,$State,$Zip,$Phone,$Website); echo "
".implode("\n",$array)."
";但它会将地址城市州和 zip 都放在单独的一行上。我可以重写它,但它仍然不能解决它在列之间分离记录的问题。
编辑您的帖子以添加新信息。 发布您的 HTML。我必须在这里做出很多假设,但根据您所说的,您的 HTML 视图将一些结果推到了框的顶部——很可能是由于您的列表框设置的高度为 350 像素。如果内容“长于”超过 350px,则它无处可去,只能向上。另一个快速说明,如果您的“列表”框被重复,请将它们更改为一个类,而不是为其分配一个 ID。 添加了 HTML 的精简版。我只是在我想要的地方做了一个包含 php。我也把 350px 的高度去掉了,但我忘了在这里编辑它。我注意到并没有什么不同。 【参考方案1】:

不要使用&lt;pre&gt;,而是将每条记录放在自己的&lt;div&gt; 中。从 CSS 中删除 350 像素的高度,除非您确实知道每条记录的高度不超过 350 像素。如果您需要进一步控制一个或多个特定框,您可以为它分配一个类,甚至可以在遍历记录时添加一个唯一标识符。

【讨论】:

我认为确保每条记录都在自己的 div 中将是答案。我会尝试其他一些事情并在我弄清楚时报告。谢谢你:)【参考方案2】:

我还建议将每条记录包装在自己的&lt;div&gt; 中并应用样式display: inline-block。这将确保块不会覆盖列。

如果您在进行上述更改后仍然遇到问题,请尝试将break-inside CSS property 应用于&lt;div&gt; 记录元素:

div.record-class 
    -webkit-column-break-inside: avoid; /* Chrome, Safari, Opera */
              page-break-inside: avoid; /* Firefox */
                   break-inside: avoid; /* IE 10+ */

【讨论】:

以上是关于如何阻止查询结果在列之间拆分单个行的数据?的主要内容,如果未能解决你的问题,请参考以下文章

将分隔列拆分为另一个表中的单独行的高效查询

如何将存储在列中的 JSON 数组中的每个元素的行拆分为一行?

如何根据行的内容拆分pyspark数据框

在 postgresql 查询中需要拆分行的帮助

如何在 CListCtrl 中拆分单个单元格

拆分 url 并在列中从该 URl 获取值