“如何修复”;而";循环和php来构建HTML表,该表只在HTML表中显示一个结果,其他所有结果都不显示HTML表
我使用“while”循环浏览我的PDO数据库结果,并且只要结果存在,我就使用PHP构建HTML表。当查询返回数据时,PHP代码将只在HTML表中放置一个结果,而在表格式之外的所有结果都将被放置。我的代码中缺少了什么 我已经将我的表编码移动到while循环的内部和外部。我尝试在while循环中嵌入一个foreach循环,但它只返回11个结果,仍然只有一个HTML表格式的结果“如何修复”;而";循环和php来构建HTML表,该表只在HTML表中显示一个结果,其他所有结果都不显示HTML表,php,html,mysql,Php,Html,Mysql,我使用“while”循环浏览我的PDO数据库结果,并且只要结果存在,我就使用PHP构建HTML表。当查询返回数据时,PHP代码将只在HTML表中放置一个结果,而在表格式之外的所有结果都将被放置。我的代码中缺少了什么 我已经将我的表编码移动到while循环的内部和外部。我尝试在while循环中嵌入一个foreach循环,但它只返回11个结果,仍然只有一个HTML表格式的结果 <?php public static function find_members() { /* -----
<?php
public static function find_members() {
/* -------------BEGIN PDO-----------*/
if (!extension_loaded ('PDO' )) {
echo 'PDO is NOT loaded!'."\n";
if (!extension_loaded('pdo_mysql')){
echo 'PDO mysql driver is NOT loaded.'."\n";
}
}
try {
// calling stored procedure command
$sql = 'CALL `Members`()';
//$sql = "SELECT * FROM members";
// prepare for execution of the stored procedure
$stmt = self::$database->prepare($sql);
// execute the stored procedure
$stmt->execute();
if ($stmt->rowCount() > 0) {
echo "<table class='membertable'>";
echo "<thead>" . "header for table" ."</thead>";
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$mejpeg = $row['photojpeg'];
$email = $row['me_email'];
$name = $row['me_name'];
echo "<tbody>";
echo "<tr>";
echo "<td>
{$name}<br />
{$email }<br />
</td>";
echo "<td>". '<img src="data:image/jpeg;base64, ' .base64_encode($mejpeg). ' " height="120" width="" />'."</td>";
echo "</tboby>";
echo "</tr>";
echo "<tfoot>";
echo "<tr>";
echo "<td>"."</td>";
echo "</tr>";
echo "</tfoot>";
echo "</table>";
}} else {
echo "0 results";
}
} catch (PDOException $e) {
die("Error occurred:" . $e->getMessage());
}
return null;
}
?>
在结果网页上调用:
<?php $mbs = array(memberPage::find_members()); foreach($mbs as $mb) { echo $mb;} ?>
<?php $mbs = array(memberPage::find_members()); foreach($mbs as $mb) { echo $mb;} ?>
我希望php代码为每个结果构建表。但是,实际结果是只有第一条记录使用表标记格式化,而其他结果没有表标记
我的最终解决方案
PHP代码:
<?php $mbs = array(memberPage::find_members()); foreach($mbs as $mb) { echo $mb;} ?>
<?php $mbs = array(memberPage::find_members()); foreach($mbs as $mb) { echo $mb;} ?>
然后我的网页HTML/PHP用于主DIV search.PHP
成员
然后我通过CSS管理网页的输出
@charset“utf-8”;
/*CSS文档*/
* {
保证金:0;
填充:0;
}
/*这已经在网页上了,并且没有从php中得到响应。下面的所有内容都在打开和关闭标记之间调用*/
.成员{
显示:网格;
网格模板列:自动;
栅极间隙:20px 50px;
网格模板区域:
“头”
“内容”;
}
.头{
网格区域:头部;
显示:网格;
边缘顶部:20px;
文本对齐:居中;
}
.内容{
网格区域:内容;
显示:网格;
网格模板列:自动;
左边距:10px;
右边距:10px;
网格列开始:1;
网格柱端:2;
网格行间距:10px;
栅柱间隙:10px;
}
#信息{
轮廓:立体;
}
.textwrap{
浮动:左;
保证金:1px;
位置:相对位置;
宽度:自动;
高度:160px;
背景位置:50%50%;
背景重复:无重复;
背景尺寸:封面;
}
.info{
网格区域:信息;
}
.照片{
网格区域:照片;
}
.隐藏{
显示:无;
}
最终输出循环浏览结果,并在带有样式的网页上显示结果。这比使用表更简单、更灵活。试试这个,这是从函数返回数据的正确方法
<?php
public static function find_members()
{
/* -------------BEGIN PDO-----------*/
if (!extension_loaded('PDO')) {
echo 'PDO is NOT loaded!' . "\n";
if (!extension_loaded('pdo_mysql')) {
echo 'PDO mysql driver is NOT loaded.' . "\n";
}
}
try {
// calling stored procedure command
$sql = 'CALL `Members`()';
// $sql = "SELECT * FROM members";
// prepare for execution of the stored procedure
$stmt = self::$database->prepare($sql);
// execute the stored procedure
$stmt->execute();
if ($stmt->rowCount() > 0) {
$returnDataOutter[] = "<table class='membertable'>";
$returnDataOutter[] = "<thead>" . "header for table" . "</thead>";
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$mejpeg = $row['photojpeg'];
$email = $row['me_email'];
$name = $row['me_name'];
$returnData = "<tbody>";
$returnData.= "<tr>";
$returnData.= "<td>
{$name}<br />
{$email}<br />
</td>";
$returnData .= "<td>" . '<img src="data:image/jpeg;base64, ' . base64_encode($mejpeg) . ' " height="120" width="" />' . "</td>";
$returnData .= "</tr>";
$returnData .= "</tboby>";
$returnData .= "<tfoot>";
$returnData .= "<tr>";
$returnData .= "<td>" . "</td>";
$returnData .= "</tr>";
$returnData .= "</tfoot>";
$returnData .= "</table>";
$returnDataOutter[] = returnData;
}
} else {
$returnDataOutter[] = "0 results";
}
return $returnDataOutter;
}
catch(PDOException $e) {
die("Error occurred:" . $e->getMessage());
}
return [];
}
?>
在结果网页上调用:
<?php $mbs = array(memberPage::find_members()); foreach($mbs as $mb) { echo $mb;} ?>
<?php $mbs = array(memberPage::find_members()); foreach($mbs as $mb) { echo $mb;} ?>
试试这个,这是从函数返回数据的正确方法
<?php
public static function find_members()
{
/* -------------BEGIN PDO-----------*/
if (!extension_loaded('PDO')) {
echo 'PDO is NOT loaded!' . "\n";
if (!extension_loaded('pdo_mysql')) {
echo 'PDO mysql driver is NOT loaded.' . "\n";
}
}
try {
// calling stored procedure command
$sql = 'CALL `Members`()';
// $sql = "SELECT * FROM members";
// prepare for execution of the stored procedure
$stmt = self::$database->prepare($sql);
// execute the stored procedure
$stmt->execute();
if ($stmt->rowCount() > 0) {
$returnDataOutter[] = "<table class='membertable'>";
$returnDataOutter[] = "<thead>" . "header for table" . "</thead>";
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$mejpeg = $row['photojpeg'];
$email = $row['me_email'];
$name = $row['me_name'];
$returnData = "<tbody>";
$returnData.= "<tr>";
$returnData.= "<td>
{$name}<br />
{$email}<br />
</td>";
$returnData .= "<td>" . '<img src="data:image/jpeg;base64, ' . base64_encode($mejpeg) . ' " height="120" width="" />' . "</td>";
$returnData .= "</tr>";
$returnData .= "</tboby>";
$returnData .= "<tfoot>";
$returnData .= "<tr>";
$returnData .= "<td>" . "</td>";
$returnData .= "</tr>";
$returnData .= "</tfoot>";
$returnData .= "</table>";
$returnDataOutter[] = returnData;
}
} else {
$returnDataOutter[] = "0 results";
}
return $returnDataOutter;
}
catch(PDOException $e) {
die("Error occurred:" . $e->getMessage());
}
return [];
}
?>
在结果网页上调用:
<?php $mbs = array(memberPage::find_members()); foreach($mbs as $mb) { echo $mb;} ?>
<?php $mbs = array(memberPage::find_members()); foreach($mbs as $mb) { echo $mb;} ?>
未经测试,但我过去是这样做的
<?php
public static function find_members() {
/* -------------BEGIN PDO-----------*/
if (!extension_loaded ('PDO' )) {
echo 'PDO is NOT loaded!'."\n";
if (!extension_loaded('pdo_mysql')){
echo 'PDO mysql driver is NOT loaded.'."\n";
}
}
try {
// calling stored procedure command
$sql = 'CALL `Members`()';
// prepare for execution of the stored procedure
$stmt = self::$database->prepare($sql);
// execute the stored procedure
$stmt->execute();
if ($stmt && $stmt->rowCount() > 0) {
echo '<table class="membertable">';
echo '<thead><tr><th>Name/Email</th><th>Photo</th></tr></thead>';
echo '<tbody>';
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$mejpeg = '<img src=data:image/jpeg;base64, ' . base64_encode($row['photojpeg']) . ' height="120" width="80" />';
$email = $row['me_email'];
$name = $row['me_name'];
echo '<tr>';
echo '<td>'.$name.'<br />'.$email.'<br /></td>';
echo '<td>'.$mejpeg.'</td>';
echo '</tr>';
}
echo '</tbody>';
echo '<tfoot>';
echo '<tr>';
echo '<td>something 1</td>';
echo '<td>something 2</td>';
echo '</tr>';
echo '</tfoot>';
echo '</table>';
} else {
echo '<div>0 results</div>';
}
} catch (PDOException $e) {
die('Error occurred: ' . $e->getMessage());
}
}
未经测试,但我过去是这样做的
<?php
public static function find_members() {
/* -------------BEGIN PDO-----------*/
if (!extension_loaded ('PDO' )) {
echo 'PDO is NOT loaded!'."\n";
if (!extension_loaded('pdo_mysql')){
echo 'PDO mysql driver is NOT loaded.'."\n";
}
}
try {
// calling stored procedure command
$sql = 'CALL `Members`()';
// prepare for execution of the stored procedure
$stmt = self::$database->prepare($sql);
// execute the stored procedure
$stmt->execute();
if ($stmt && $stmt->rowCount() > 0) {
echo '<table class="membertable">';
echo '<thead><tr><th>Name/Email</th><th>Photo</th></tr></thead>';
echo '<tbody>';
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$mejpeg = '<img src=data:image/jpeg;base64, ' . base64_encode($row['photojpeg']) . ' height="120" width="80" />';
$email = $row['me_email'];
$name = $row['me_name'];
echo '<tr>';
echo '<td>'.$name.'<br />'.$email.'<br /></td>';
echo '<td>'.$mejpeg.'</td>';
echo '</tr>';
}
echo '</tbody>';
echo '<tfoot>';
echo '<tr>';
echo '<td>something 1</td>';
echo '<td>something 2</td>';
echo '</tr>';
echo '</tfoot>';
echo '</table>';
} else {
echo '<div>0 results</div>';
}
} catch (PDOException $e) {
die('Error occurred: ' . $e->getMessage());
}
}
您正在关闭循环中的表。如果您希望所有内容以行的形式显示,您应该在循环内放置
和
标记,在循环外放置
、
和
打开和关闭标记。您还应该将
和
标记嵌套在一起。@tshimkus感谢您的反馈。你的推荐很有帮助。当你撞到墙的时候,能有第二双眼睛真是太好了。谢谢你的回复。我已经用我的解决方案更新了代码。您正在关闭循环中的表。如果您希望所有内容以行的形式显示,您应该在循环内放置
和
标记,在循环外放置
、
和
打开和关闭标记。您还应该将
和
标记嵌套在一起。@tshimkus感谢您的反馈。你的推荐很有帮助。当你撞到墙的时候,能有第二双眼睛真是太好了。谢谢你的回复。我已经用我的解决方案更新了代码。这是我的答案。这解决了我的问题。我唯一要解决的问题是让他们并排而不是上下排成一排。谢谢你的帮助。@WesHenderson不知道你说的“…并排排…”是什么意思。你能分享一个屏幕截图吗?评论框不允许我添加屏幕截图。如果将其视为一个网格,则第1列第1行第1单元格将包含第一条记录,因为代码会在上面回响。然后第1列第2行第1单元回显第二条记录。我希望列1、2、3—第1行—单元格1、2、3显示前三条记录,然后开始新行。这将持续到循环结束,然后停止。这有意义吗?~~~------------------------------------------------------------------------------------------------------------------校长1 |校长2 |校长3 |-----------------------------------------------------------------------------------------------姓名1 |name2 | name3 | | email1pic1 | email2pic2 | email3pic3 |--------------------------------------------------------------------------------------------~~~像这样吗?对不起,我不知道如何使用或```或~~~获得良好的格式。这就是我的答案。这解决了我的问题。我唯一要解决的问题是让他们并排而不是上下排成一排。谢谢你的帮助。@WesHenderson不知道你说的“…并排排…”是什么意思。你能分享一个屏幕截图吗?评论框不允许我添加屏幕截图。如果将其视为一个网格,则第1列第1行第1单元格将包含第一条记录,因为代码会在上面回响。然后第1列第2行第1单元回显第二条记录。我希望列1、2、3—第1行—单元格1、2、3显示前三条记录,然后开始新行。这将持续到循环结束,然后停止。这有意义吗?~~~-----------------------------------------------------