[英]Random gaps in results that are printed from a while loop?
I have created a search form that allows users to search for results in a packaging database. 我创建了一个搜索表单,该表单允许用户在包装数据库中搜索结果。 I recently had problems with printing the results out in rows of three, as all the results were printing one underneath, each of them. 最近,我在将结果打印成三行时遇到了问题,因为所有结果都在下面每行打印一个。 I managed to get that fixed and now the results are in rows of three, except now, there are random gaps where there will only be one result in a row or two, but then the results will carry on the next row with 3. I can't seem to pinpoint why this is randomly happening. 我设法解决了这个问题,现在结果分成三行,除了现在,存在随机间隔,一两行只有一个结果,但是结果将继续到下一行,为3。I似乎无法查明为什么这是随机发生的。
There doesn't seem to be any pattern to it, it varies depending on what the user searches for. 似乎没有任何模式,它取决于用户搜索的内容。
Here is the PHP code: 这是PHP代码:
<?php
$con = mysql_connect ("localhost", "horizon1", "");
mysql_select_db ("horizon1_delyn", $con);
if (!$con)
{
die ("Could not connect: " . mysql_error());
}
$descrip = mysql_real_escape_string($_POST['descrip']);
$depth = mysql_real_escape_string($_POST['depth']);
$varWidth = mysql_real_escape_string($_POST['traywidth']);
$varHeight= mysql_real_escape_string($_POST['trayheight']);
$varRange = mysql_real_escape_string($_POST['trayrange']);
$varType = mysql_real_escape_string($_POST['traytype']);
$varShape = mysql_real_escape_string($_POST['trayshape']);
$varImage = mysql_real_escape_string($_POST['imagename']);
if (isset($varHeight) && !empty($varHeight)) {
$low = ($varHeight."00");
$high = ($varHeight."99");
} else {
$low = ("000");
$high = ("999");
}
if (isset($varWidth) && !empty($varWidth)) {
$min = ($varWidth."00");
$max = ($varWidth."99");
} else {
$min = ("000");
$max = ("999");
}
$sql = "SELECT * FROM range WHERE
description LIKE '%".$descrip."%'
AND trayrange LIKE '%".$varRange."%'
AND traytype LIKE '%".$varType."%'
AND trayshape LIKE '%".$varShape."%'
AND traywidth BETWEEN '".$min."' AND '".$max."'
AND trayheight BETWEEN '".$low."' AND '".$high."' ";
$r_query = mysql_query($sql);
$count = 0;
while ($row = mysql_fetch_array($r_query))
{
$t = $count%1;
echo ($t==4) ? '<div id="results">' : '<div id="results" style="float:left">';
echo '<p class="image">
<img src=" '. $row['imagename'] . '" width="150" length="80">
</p>';
echo '<div id="table">
<br /><strong> Tool Code: </strong> '. $row['toolcode'];
echo '<br /><strong> Description:</strong> '. $row['description'];
echo '<br /><strong> Tray range: </strong> '. $row['trayrange'];
echo '<br /><strong> Tray type: </strong> '. $row['traytype'];
echo '<br /><strong> Tray size: </strong> '. $row['traysize'];
echo '<br /><strong> Tray shape: </strong> '. $row['trayshape'] . '</div>' . '<br />';
echo '<a href="http://www.delynpackaging.co.uk/contact.htm">Enquiry Page</a> <br />' .
'<a href="http://176.67.171.11/range-test/rangetest.php">Back to Search</a>';
echo '</div>' . '</div>';
$count++;
}
if (mysql_num_rows($r_query) <= 0){
echo 'No results match your search, please try again';
}
?>
Can anybody see why this might be happening? 有人可以看到为什么会这样吗?
It might depend on the width of the boxes, that they wrap when they don't fit the row. 这可能取决于盒子的宽度,当盒子不适合行时它们会包裹起来。 Also $t = $count%1; 同样$ t = $ count%1; looks unusual, it should be $t = $count%3; 看起来很不正常,应该是$ t = $ count%3; and then the condition should read: ($count>0 && $t==0) 然后条件应为:($ count> 0 && $ t == 0)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.