(这个问题现在已经解决了 - 谢谢@ChelseaStats)
我在PHP中构建了一个网页,用户登录并上传照片和故事,页面立即显示故事和照片。
问题是MySQL查询和PHP从数据库返回的照片到处显示。我已经将它们打印在一个id'ddiv中,但CSS无法控制它们的定位。
目前查询如下所示:
$q1 = "SELECT * from images ORDER BY date ASC";
它们是这样显示的...
row1 = @mysqli_query($dbc, $q1);
echo '<div id = "pictures">';
while ( $fix1 = mysqli_fetch_array($row1) ) {
echo '
<img style = "border: 1px solid black; padding: 10px;" height = "80" width = "80" src = "data:image;base64,'.$fix1['image'].'"><br>'.$fix1['image_id'].'
';}
echo '</div id = "pictures">';
我想做的是将所有"while 循环"编程存储在一个变量中,然后将该变量打印到 HTML 页面上远离 php 脚本的其他位置,以便在运行数据库查询时,我可以使用结果来填充/初始化变量(例如 $displayPics),然后将其打印在我希望它出现的 html 页面上。
我意识到这可能是不可能的,我愿意接受建议......
。或者我可能愿意运行一个限制为 20 的查询,以降序日期顺序给出结果,然后将"无循环"PHP 代码分配给一个变量,然后我可以在其他地方的页面上打印出来。
代码可能如下所示:
row1 = @mysqli_query($dbc, $q1);
$fix1 = mysqli_fetch_array($row1);
$displayPics = '
<img style = "border: 1px solid black; padding: 10px;" height = "40" width = "40" src = "data:image;base64,''.$row1[$fix1[''image'']].''"><br>''.$row1[$fix1[''image'']].''
';
(上面的代码是我想象它的外观)。(我认为 img src 代码和 html 可能已被论坛过滤掉)。
但是,也许此代码将在变量中重复 20 倍,并且行号可能会因每次后续重复而更改?
(我基本上希望更好地控制从数据库返回的图片的位置)。
在 foreach 中,你可以像这样分配给变量
$bob = ''; // set it
foreach($row as $image) {
// append to it
$bob .= '<div id=""><img src="" /></div>'.PHP_EOL;
}
print $bob;
类似的对你有用。
如果您使用 Bootstrap- 则可以在呈现时分配显示类。下面将按如下方式显示每个图像(在中型到大型视口上 4 个,在小视口上横跨 3 个,在移动大小的视口上跨 2 个)。另请注意使用无花果标题在每个图像上提供标题。
row1 = @mysqli_query($dbc, $q1);
while ( $fix1 = mysqli_fetch_array($row1) ) {
echo "<div class='col-md-3 col-sm-4 col-xs-6'>
<figure>
<img style = 'border: 1px solid black; padding: 10px;' height = '80' width = '80' src = 'data:image;base64,".$fix1['image']."'/>
<figcaption>".$fix1['image_id']."</figcaption>
</figure>
</div>
";}
只需编写一个函数,将所有行返回到 assoc 数组数组中,并在代码中的其他地方需要它们时遍历它们,并对行使用条件测试以更好地控制它们的去向!
function getImages(){
$imgs = array();
while(($next = mysqli_fetch_assoc(...)){
array_push($imgs, $next);
}
return $imgs; //array of assoc arrays
}