Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.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 仅在页面加载后打印变量_Php_Variables_Loops_Count_While Loop - Fatal编程技术网

Php 仅在页面加载后打印变量

Php 仅在页面加载后打印变量,php,variables,loops,count,while-loop,Php,Variables,Loops,Count,While Loop,我正在寻找一种使用php和javascript的简单方法,在页面顶部打印一个php变量,并且只在页面加载并通过while循环运行之后 基本上,我有一个while循环,它遍历我的数据库,并在表中打印出一行,其中包含用户详细信息。 每次它找到一个用户时,都会向页面开头声明的变量添加1 这是我计算搜索后找到多少用户的基本方法 然后我打印出变量以通知我。 唯一的问题是,我只能在循环结束后打印变量,这意味着它必须位于页面底部和表下面。这很愚蠢,因为我必须滚动到长表的底部才能找到数字 是否有一种方法,一旦循

我正在寻找一种使用php和javascript的简单方法,在页面顶部打印一个php变量,并且只在页面加载并通过while循环运行之后

基本上,我有一个while循环,它遍历我的数据库,并在表中打印出一行,其中包含用户详细信息。 每次它找到一个用户时,都会向页面开头声明的变量添加1

这是我计算搜索后找到多少用户的基本方法

然后我打印出变量以通知我。 唯一的问题是,我只能在循环结束后打印变量,这意味着它必须位于页面底部和表下面。这很愚蠢,因为我必须滚动到长表的底部才能找到数字

是否有一种方法,一旦循环完成并将计数设置为变量,我就可以让脚本返回并将变量打印到表上方

非常感谢你们提供的任何建议

干杯,Eds

编辑:添加代码示例:

<?php
$count = '0';
//Print all users with similar names
while($row = mysql_fetch_assoc($result))
{
//Start the form for each user to enable editing, along with row onhover colour
echo "<form method='post' action='editor.php'>
    <tr class='tablehover'>";
//Depending on searchby, change which column is bold. Helps pick out users
if($searchby == 'username') {
    echo "<td><div class='userhighlight'>".$row['Username']."</div></td>";
}
else {
    echo "<td>".$row['Username']."</td>";
}
if($searchby == 'firstname') {
    echo "<td><div class='userhighlight'>".$row['First Name']."</div></td>";
}
else {
    echo "<td>".$row['First Name']."</td>";
}
if($searchby == 'lastname') {
    echo "<td><div class='userhighlight'>".$row['Last Name']."</div></td>";
}
else {
    echo "<td>".$row['Last Name']."</td>";
}
if($searchby == 'office') {
    echo "<td><div class='userhighlight'>".$row['Office']."</div></td>";
}
else {
    echo "<td>".$row['Office']."</td>";
}
if($searchby == 'lastlogin') {
    echo "<td><div class='userhighlight'>".$row['Last_Login']."</div></td>";
}
else {
    echo "<td>".$row['Last_Login']."</td>";
}

//Set ID of found user
$id = $row['User ID'];
//Create query to load user roles
$roleqry = "SELECT * FROM `site roles` WHERE `User ID`='$id'";
$roleresult = mysql_query($roleqry);
//Set $roles to gather roles
while($roles = mysql_fetch_assoc($roleresult)) {

//Echo out the rest of the user details into the table
echo "<td>".$roles['Admin']."</td>";
echo "<td>".$roles['Create User']."</td>";
echo "<td>".$roles['Edit User']."</td>";
echo "<td>".$roles['SandS']."</td>";
echo "<td>".$roles['SandS Admin']."</td>";
//Echo the hidden ID field, for editing, along with the edit button
}
echo "<td><input type='text' name='id' size='1' value='".$row['User ID']."' readonly style='visibility:hidden;width:1px;'>
            <input type='submit' value='Edit'></td></tr></form>";
echo "<tr><td colspan='11'><hr /></td></tr>";
$count = $count + 1;
}
?>

这里有很多可能性,这既快又脏

<html>...<body>
Rows found: <span id="rowcount">still calculating</span>
<table>
....
</table>
<script language="JavaScript">
document.getElementById('rowcount').innerHTML='<?php echo $rowcount; ?>';
</script>
...
</html>
。。。
找到的行:仍在计算
....
document.getElementById('rowcount')。innerHTML='';
...

不必在循环时打印表行,您可以将它们连接到一个变量,稍后再打印

像这样:

$output = '';
$i = 0;

while($row = mysql_fetch_array($result))
{
    $i++;
    $output .= ....
}

echo $i;
echo $output;

但是,如果要打印所有行,则应使用mysql_num_rows()而不是这样计算它们。

嗯,这不是很清楚,但您可以在变量内创建表,然后首先打印增量:

$i=0;
$table = '<table>';
while($row = mysql_fetch_array($result))
{
  $table .= '<tr><td>'.htmlentities($row['field']).'</td></tr>';
  $i++;
}
$table .= '</table>';

echo $i;
echo $table;
$i=0;
$table='';
while($row=mysql\u fetch\u数组($result))
{
$table.=''.htmlentities($row['field'])。';
$i++;
}
$table.='';
echo$i;
echo$表;

您可以使用
mysql\u num\u rows()
简单地计算结果集中的行数,对吗? 然后,您可以在表格开始之前设置计数:

Count: <?php echo mysql_num_rows($result) ?>
<table>...</table>
计数:
...

我会将逻辑与页面的显示分离开来。 因此,您应该首先收集所需的所有数据,然后进行演示


像这样的模板系统可能会对此有所帮助。对于快速修复来说,只需将表存储在一个变量中,然后在加载完所有数据后打印就足够了。

另一方面,请停止使用古老的mysql_*函数编写新代码。它们不再被维护,社区已经开始了弃用过程。相反,你应该学习准备好的语句并使用PDO或MySQLi。谢谢你的建议,其他几个人建议我用这种方式工作,所以我可能会考虑这样做!多亏了这一点,其他一些人建议我将表存储在一个变量中,然后在最后打印出来。我可能会在未来的银行里为此做些调查。对于即时的解决方案,我会这样做,因为它不涉及太多的重新书写我的当前页面。感谢这一点,它完全符合法案。我决定简单地使用mysql_num_rows()函数来计算行数并在显示表格之前进行打印谢谢,其他一些人建议我将行数合并到变量中。我以后可能会开始这样做,但目前我只打印mysql_num_rows函数。谢谢
Count: <?php echo mysql_num_rows($result) ?>
<table>...</table>