首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我想显示随机图像在不同的页面,没有重复从数据库在php

要在不同的页面上显示随机图像且不重复,你可以采用以下步骤:

基础概念

  1. 数据库查询:从数据库中检索图像信息。
  2. 随机选择:使用PHP的随机函数来选择图像。
  3. 会话管理:使用会话来记录已经显示过的图像,以确保不会重复。

相关优势

  • 用户体验:随机显示图像可以增加页面的趣味性和吸引力。
  • 内容多样性:避免重复显示同一图像,保持内容的新鲜感。

类型

  • 纯随机:每次请求都随机选择图像。
  • 不重复随机:确保同一图像不会在短时间内重复显示。

应用场景

  • 网站横幅:在网站的顶部或底部显示随机广告或特色图像。
  • 社交媒体:在用户的动态中插入随机背景图像。
  • 游戏:在游戏中显示随机的背景或道具图像。

实现步骤

  1. 数据库设计:确保你的数据库中有一个存储图像路径的表。
  2. PHP脚本:编写PHP脚本来从数据库中随机选择图像,并记录已显示的图像。

示例代码

代码语言:txt
复制
<?php
session_start();

// 假设你的数据库表名为 images,包含 id 和 path 字段
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database_name";

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);

// 检查连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}

// 获取所有图像ID
$sql = "SELECT id FROM images";
$result = $conn->query($sql);

$allImages = [];
while ($row = $result->fetch_assoc()) {
    $allImages[] = $row['id'];
}

// 移除已经显示过的图像ID
$displayedImages = isset($_SESSION['displayed_images']) ? $_SESSION['displayed_images'] : [];
$availableImages = array_diff($allImages, $displayedImages);

if (empty($availableImages)) {
    // 如果所有图像都已显示过,重置会话
    $_SESSION['displayed_images'] = [];
    $availableImages = $allImages;
}

// 随机选择一个图像ID
$randomIndex = array_rand($availableImages);
$randomImageId = $availableImages[$randomIndex];

// 获取图像路径
$sql = "SELECT path FROM images WHERE id = $randomImageId";
$result = $conn->query($sql);
$imagePath = $result->fetch_assoc()['path'];

// 记录已显示的图像ID
$_SESSION['displayed_images'][] = $randomImageId;

$conn->close();

// 显示图像
echo "<img src='$imagePath' alt='Random Image'>";
?>

可能遇到的问题及解决方法

  1. 图像重复显示:确保会话中的displayed_images数组正确记录了已显示的图像ID。
  2. 数据库连接问题:检查数据库连接参数是否正确,确保数据库服务器正常运行。
  3. 性能问题:如果图像数量很大,可以考虑使用缓存机制来减少数据库查询次数。

参考链接

通过以上步骤和代码示例,你可以在不同的页面上显示随机图像且不重复。希望这对你有所帮助!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Z-BlogPHP开运锦鲤前来报道(更新说明及操作教程,必看文章)

更新说明:(2020/08/21) V、修复php兼容性代码(php5.6导致一处错误)。 更新说明(2020/08/14) V、优化SEO规范,减少部分页面描述及关键词重复显示问题。...显示方法:模块管理-图文推荐(如果没有重新点击启用主题)-拖拽到右侧对应侧栏即可。 V、修改部分PHP逻辑代码,减少数据库请求次数。...如果想要首页自带翻页功能,所显示文章数量,需要在网站设置,页面管理“列表页显示文章数量”设置(跟分类显示文章数量是一致),显示几篇就填写对应数字就行。 V、修复部分BUG。...(别再来找我说H2没有了,受够了,喏,给你们更新了) --.优化导航栏间距。 --.删除和优化搜索框,减少导航栏所占用空间。 --.新增评论用户加V标识。...自定义缩略图(设置分类所显示缩略图,如果文章没有图片,则优先显示自定义,如果没有自定义那么随机显示图片,文章没有图片移动端则不显示,默认关闭)。

3.4K30

Z-BlogPHP开运锦鲤前来报道(更新说明及操作教程,必看文章)

更新说明:(2020/08/21) V、修复php兼容性代码(php5.6导致一处错误)。 更新说明(2020/08/14) V、优化SEO规范,减少部分页面描述及关键词重复显示问题。...显示方法:模块管理-图文推荐(如果没有重新点击启用主题)-拖拽到右侧对应侧栏即可。 V、修改部分PHP逻辑代码,减少数据库请求次数。...如果想要首页自带翻页功能,所显示文章数量,需要在网站设置,页面管理“列表页显示文章数量”设置(跟分类显示文章数量是一致),显示几篇就填写对应数字就行。 V、修复部分BUG。...(别再来找我说H2没有了,受够了,喏,给你们更新了) --.优化导航栏间距。 --.删除和优化搜索框,减少导航栏所占用空间。 --.新增评论用户加V标识。...自定义缩略图(设置分类所显示缩略图,如果文章没有图片,则优先显示自定义,如果没有自定义那么随机显示图片,文章没有图片移动端则不显示,默认关闭)。

2.8K40
  • zblogPHP万能型主题模板希望(Hopelee)全新绽放,独具热爱,自成一派

    -- 新增列表文章无显示随机图片功能,功能设置-无显示随机,开启。 -- 优化列表摘要调用接口,可选择直接调用正文,文章设置-摘要调用正文,开启。...-- 修复分类未设置模板导致页面显示不完整问题。 1.2.9(21/12/08) -- 修复排序函数部分情况下兼容性代码。 -- 优化随机调用代码会调用草稿文章问题。...-- 修复文章列表调用标签重复问题。 -- 优化适配不同浏览器兼容性代码。 -- 优化更大屏幕尺寸网页最大宽度代码。 -- 其他细节优化。...更新日志:2021/11/05 -- 优化侧栏随机显示代码,减少文章基数大导致网站卡顿问题。 -- 优化部分php函数代码。 -- 优化部分后台代码闭合性及整体结果,减少页面错版问题。...-- 优化文章商品模板顶部模块svg移动端代码显示不友好问题。 -- 优化php授权代码。 -- 优化文章商品模板没有售价和演示接口问题(误删,已恢复)。

    2.2K30

    ZBP旗舰主题博览《Expolee》,新年新气象风格就是独“鼠”一帜!

    ,因为在于调用书缓存文件不是数据库实时查询,解决方法:修改部分侧栏内容后没有效果,点击文章管理,随便编辑任意一篇文章,直接点击提交即可生成新缓存文件,后前台刷新生效。...更新详情:09/09 -- 修复缩略图百度快照下不显示问题。 -- 优化文章打赏代码及接口。 更新详情:09/01 -- 修复图片延迟显示重复加载问题,优化图片延迟显示代码。...-- 优化分类模板背景默认文字信息。 更新详情:08/13 -- 优化网站代码格式。 -- 优化网站各页面SEO规范,防止出现重复关键词及页面描述。...优化后台授权验证PHP代码。 优化php代码格式。 更新详情:(06/05) 优化导航栏下方背景视觉差特效。 优化原侧栏调用缓存文件PHP代码, 优化后台校验代码,增加核心加密文件。...轮播设置:如图,除企业模板之外,另外三种风格轮播尺寸一直,建议尺寸(830*381),有些可能会问,换别的尺寸可以么?

    1.4K20

    推荐几个提升php技能练手项目

    chatrobot[1] 2023 年什么最火,一定是 chatgpt 出现,它出现在全球科技圈刮起了一场旋风,通过这个项目,你可以搭建出一个 AI 聊天机器人,不仅让你提升 php 技能,...您还可以添加其他功能,例如不同时区、根据要求选择课程学生选项或实时出勤记录更新。...通过这个项目,你将使用 Laravel 来构建一个模拟 Netflix PHP 网络应用程序。这还包括后端 MySQL 数据库。...每次重新加载页面时,您 Web 应用程序将包含随机选择电影,以及包含 10 部各种类型随机电影一系列轮播。用户可以查看电影详细信息,然后通过协作过滤技术访问基于这些选择电影推荐。...这个功能强大 PHP 项目看似简单,但却是学习创建像在线购物网站这样无处不在东西全栈过程好方法。

    30730

    8 行代码用Python画一个中国地图

    当然Jupyter也可以服务众多浏览器,但它更多还是方便研究人员,对研究人员来说简直是太方便了,你把代码像写文章一样直接写在输入框里,然后页面直接就看到了这个代码结果,随时修改,随时展现,文码混排...如果让你根据上面csv文件里信息,画一个,用Java该怎么做? 你当然会去找第三方插件库,然后又是一通折腾,终于把做出来,然后编译,然后运行。 如果要改配色呢?如果要求画地图呢?...第1行甚至可以不写,它定义了大小。第2行我们创建一个地图,第3行把海岸线画上,第4行显示这个地图,就是这样: 你用Java4行代码画一个地图出来?...=53) 然后就得到了中国地图: 看上去有点变形,这是因为我们没有添加任何投影原因,Basemap提供24种不同投影方式,你可以自己一个个试一下,比较常用是兰勃特投影,我们添加一下: m = Basemap...最后再为Java和PHP美言几句:大家分工不同,Java和PHP虽然做这样数字研究不是很方便,但还是非常适合web开发,而Python在这方面并不适合。

    1.3K20

    用 4 行代码画一幅中国地图

    ,然后页面直接就看到了这个代码结果,随时修改,随时展现,文码混排,是Markdown一个增强版,毕竟Markdown还只能显示文字,最多再加上一些图片,而Jupyter是可以直接运行Python...如果让你根据上面csv文件里信息,画一个,用Java该怎么做?你当然会去找第三方插件库,然后又是一通折腾,终于把做出来,然后编译,然后运行。如果要改配色呢?如果要求画地图呢?...第1行甚至可以不写,它定义了大小。第2行我们创建一个地图,第3行把海岸线画上,第4行显示这个地图,就是这样: ? 你用Java4行代码画一个地图出来?...我们加上省边界怎么办呢?Basemap缺省包里没有中国省区,只有美国州,毕竟是美国人做嘛。...最后再为Java和PHP美言几句:大家分工不同,Java和PHP虽然做这样数字研究不是很方便,但还是非常适合web开发,而Python在这方面并不适合。

    1.1K50

    PHP8 对象、模式和实践(六)

    一个没有充分分层系统中,自动化测试必须在一端协商 HTML 接口,而在另一端冒着触发对数据库随机查询风险,即使它们关注点不是针对这两个领域。尽管有测试总比没有好,但这种测试必然是偶然。...通过创建具有不同职责层,您可以构建一个组成部分更易于扩展和调试系统。通过将具有相同职责代码放在一个地方来限制重复(而不是用数据库调用或显示策略来限制系统)。...假设您想要呈现一个显示 Woo 系统中所有场馆列表页面。即使完成了数据库检索代码,没有前端控制器情况下,要获得这个简单结果仍然是一项艰巨任务。 视图是一个地点列表;请求是一个地点列表。...如果没有包含发生,则显示页面底部 HTML(视图)。 你可以 12-8 中看到控制器和视图组合。 这可以作为一个快速测试,但是任何规模或复杂性系统都可能需要更多支持。...实际上,认为大多数开发人员设计他们领域模型时至少会关注数据库没有设计这样结构,当涉及到将对象放入和取出数据库时,它会迫使您(或者,更糟是,您同事)陷入复杂代码困境。

    21510

    用Python画一个中国地图

    当然Jupyter也可以服务众多浏览器,但它更多还是方便研究人员,对研究人员来说简直是太方便了,你把代码像写文章一样直接写在输入框里,然后页面直接就看到了这个代码结果,随时修改,随时展现,文码混排...如果让你根据上面csv文件里信息,画一个,用Java该怎么做? 你当然会去找第三方插件库,然后又是一通折腾,终于把做出来,然后编译,然后运行。 如果要改配色呢?如果要求画地图呢?...第1行甚至可以不写,它定义了大小。第2行我们创建一个地图,第3行把海岸线画上,第4行显示这个地图,就是这样: ? 你用Java4行代码画一个地图出来?...我们加上省边界怎么办呢?Basemap缺省包里没有中国省区,只有美国州,毕竟是美国人做嘛。...最后再为Java和PHP美言几句:大家分工不同,Java和PHP虽然做这样数字研究不是很方便,但还是非常适合web开发,而Python在这方面并不适合。

    1.5K40

    用Python画一个中国地图

    ,然后页面直接就看到了这个代码结果,随时修改,随时展现,文码混排,是Markdown一个增强版,毕竟Markdown还只能显示文字,最多再加上一些图片,而Jupyter是可以直接运行Python...如果让你根据上面csv文件里信息,画一个,用Java该怎么做?你当然会去找第三方插件库,然后又是一通折腾,终于把做出来,然后编译,然后运行。如果要改配色呢?如果要求画地图呢?...第1行甚至可以不写,它定义了大小。第2行我们创建一个地图,第3行把海岸线画上,第4行显示这个地图,就是这样: ? 你用Java4行代码画一个地图出来?...我们加上省边界怎么办呢?Basemap缺省包里没有中国省区,只有美国州,毕竟是美国人做嘛。...最后再为Java和PHP美言几句:大家分工不同,Java和PHP虽然做这样数字研究不是很方便,但还是非常适合web开发,而Python在这方面并不适合。

    2.9K60

    用Python画一个中国地图【转】

    ,然后页面直接就看到了这个代码结果,随时修改,随时展现,文码混排,是 Markdown 一个增强版,毕竟 Markdown 还只能显示文字,最多再加上一些图片,而 Jupyter 是可以直接运行...scikit-learn 第三神器 scikit-learn ,一般缩写为 sclearn ,各种机器学习算法,基本上只要你能想得到,线性回归,逻辑回归,SVM,随机森林,最近邻居等等等等,各种算法全部...如果让你根据上面 csv 文件里信息,画一个,用 Java 该怎么做?你当然会去找第三方插件库,然后又是一通折腾,终于把做出来,然后编译,然后运行。如果要改配色呢?如果要求画地图呢?...第1行甚至可以不写,它定义了大小。第2行我们创建一个地图,第3行把海岸线画上,第4行显示这个地图,就是这样: ? 你用 Java 4 行代码画一个地图出来?...我们加上省边界怎么办呢? Basemap 缺省包里没有中国省区,只有美国州,毕竟是美国人做嘛。

    79430

    使用Ajax建立Server Push和Iframe建立Comet

    这里使用例子就是一个在线CD销售页面,前台发起ajax请求,后台随机取一个数,现在库中减去获得随机数,然后返回给前台; 前台如果改变库存数据,文字输入框输入相应数量,然后提交给后台。...因为代码是网上一篇文章(可点击查看详情)中下载过来,他使用了prototype中ajax,这里就没有作修改。...需要下载源代码,请点击这里>> 需要说明,它主页中form默认提交行为没有被阻止掉,将会导致页面被刷新。...> 2、使用Iframe建立Comet 这里针对IE和其它浏览器做了不同处理,因为IE中htmlfile添加iframe,浏览器当前窗口底部将看不到加载进度(看上去比较平静),而其它浏览器则会出现一个...这个示例就两个文件:html页面php页面,实现效果就是取当前服务器时间,然后在前台页面显示。 运行效果大致如下图所示(IE、Chrome): ? ? HTML页面的代码: <!

    84620

    最新宽字节注入攻击和代码分析技术

    访问id=1',页面的返回结果如图4-51所示,程序并没有报错,反而多了一个转义符(反斜杠)。 4-51 返回结果可以看出,参数id=1在数据库查询时是被单引号包围。...4-56 因为页面直接显示数据库内容,所以可以使用Union查询。...4-57 然后尝试页面中2位置查询当前数据库库名(user()),语句如下: id=-1%df' union select 1,user(),3,4,5%23 返回结果如图4-58所示。...4-59 返回结果可以看到,数据库第一个表名是users,如果查询后面的表名,则需要修改limit后数字,这里不再重复。...由于在数据库查询前执行了SET NAMES 'GBK',将数据库编码设置为宽字节GBK,所以此处存在宽字节注入漏洞。 PHP中,通过iconv()进行编码转换时,也可能存在宽字符注入漏洞。

    26130

    java和前端哪个好学_java和前端哪个难学?「建议收藏」

    问Java 和 前端哪个难学, 就像在问牛排和中餐哪个好吃一样。Java 是门编程语言,前端是一个领域不能相比较。 再回到正题。 Java 和 JavaScript 哪个难学? 答案是各有各难。...理解了也没有那么难吧。 大学第一门语言是 C 和 C++ 单纯就语言难说,刚开始接触 C++ 面向对象真的难。各种封装、继承、多态、接口、范性。弄得人头疼。理解之后没那么难了。...使用 SSH , 后端设计数据库到搭建缓存、再到前端页面。 大三期间去学校实验室做项目,接触了PHP, 后面就用PHP 写后端,当时就只觉得 PHP 语法简单,比Java 写 Web 简单很多。...接触了JavaScript ,用它来写动画,轮播之类。就语法学习难度而言 Java 比 JavaScript 难不到哪里去。当然可能并没有深入 Java 一些思想。...后来 精学了JavaScript 发现还是挺难, 但是很多理论 Java 和 JavaScript 中是通用。闭包、面向对象、模块化、垃圾回收 这些都得学。所有是不太理解 谁难谁简单。

    1.1K50

    李洋个人博客《mxlee》zblog主题-梦想家(精品推荐)

    2020/09/07更新: V、修复缩略图快照下不显示问题。 2020/09/04更新: V、优化图片延迟显示代码,修复图片延迟显示重复加载问题。...V、热门评论(图文显示,默认调用4篇)和热门文章天数采用同一接口。 V、优化PHP部分逻辑代码。 2019/09/17更新: V、修复SEO标题某个页面页数重复BUG。...--、更新搜索页侧栏文章调用没有数据BUG。 --、修复公共cdn静态资源库链接。 --、php代码精简、优化和重组,删除侧栏重复模块。...--.修复开启 “作者-佳句赏析” 无效BUG。 --.修复随机图文展示缩略图优先显示自定义功能。 --.修复文章单页没有右侧评论按钮功能BUG。 --.优化网站浏览总量PHP代码。...--.新增随机图文推荐,原来侧栏TAB随机更换成季度热门,具体修改如下: 侧栏图文数量,是指随机展示调用数量,效果: ****************切记,更新完主题先进行“侧栏图文数量”设置

    2.1K20

    Mantis安装记要

    最近研究一下Bug跟踪,好在以后项目中得到应用,花了几个晚上终于搞出来一个。Bug跟踪软件还是比较多,第一个见到是Microsoft Raid4.5。...权限设置灵活,不同角色有不同权限,每个项目可设为公开或私有状态,每个缺陷可设为公开或私有状态,每个缺陷可以不同项目间移动; l       主页可发布项目相关新闻,方便信息传播; l      ...2、安装 采用Windows2003环境下,Apache+PHP+MySql方式进行,具体怎么Windows下搭建这个环境就不用多说了,百度一下到处都是。...通过一个晚上摸索,总结出如下方法: 1,MySql安装好进行配置时候,一定要将字符编码改为UTF-8,这样保存中文到数据库时候才不会报错。...6,测试:再次输入index.php,这个时候将不会再出现要求数据库配置页面, 如果出现登录页面,则一切OK!

    1K10

    zblog明信片主题类型模板全新绽放,R角、透明、森系您想要都有

    轮播设置确保每张图片尺寸一致才行,否则可能会出现高低不同等错乱情况! 您有好建议也可以联系作者,可能会帮助您实现!...-- 修复不同移动端下部分页面出现错位问题。 -- 优化og富媒体标签代码,完善摘要关键词调用方案。 -- 优化模板首页轮播代码,减少无用js加载,加速网页速度。 -- 优化缩略图显示优化方案。...2021/11/03 -- 优化随机调用文章模块php代码。 -- 优化部分php代码,减少文章数过万导致加载延迟问题。...2021/08/04 -- 优化侧栏随机调用文章模块部分情况下调用为空BUG。 -- 优化夜间模式搜索框内字体颜色看不清问题。 -- 优化整体页面细节及样式代码。...-- 修复单页模板部分没有评论情况下主题布局没有对齐问题。 2021/03/13 -- 优化网站PHP代码,删除部分api接口。 -- 删除文章页顶部标题链接代码。

    1.9K20

    通过避免下列 10 个常见 ASP.NET 缺陷使网站平稳运行

    除此之外,即使 RNGCryptoServiceProvider 错误地生成了重复随机数字,也无法解释 ASP.NET 为何不可思议地将有效会话 ID 替换为新 ID(不唯一)。...具有不同应用程序和一组不同 Web 服务器另一家公司中,我们看到完全相同问题也消失了。就像在 Contoso.com 一样,消除输出缓存就能解决问题。...因此,您不必像在传统 ASP 中那样编写代码,以防止单击按钮时文本框中文本消失,或在回发后重新查询数据库和重新绑定 DataGrid。...使用自定义页适配器一个缺点是它全局性地作用于应用程序中每一页。如果您更愿意将其中一些页面的视图状态保留在会话状态中而不保留其他页面的视图状态,请使用 4 中显示方法。...该解决方案能够保持类本身设计。与 XML 序列化程序不同是,二进制序列化程序序列化字段,而不管是否可以访问。 7 显示 Posts 类修复版本并突出显示了更改附带配置文件定义。

    3.5K80

    WordPress架构简单剖析

    基于这个原因, 对WordPress进行了简单分析, 这就是开源好处嘛. index.php文件一步步跟踪了整个请求开始到结束. 因为能力有限, 这可能是最笨办法了...., 到数据库中查询需要显示数据, 将需要展示数据准备好. 4.页面展示 最终引入template-loader.php文件, 其作用是将数据进行可视化展示. 5.完成 至此, 整个页面的展示流程就走完了...页面展示 WordPress加载页面的地方, 就是最后template-loader.php这个文件了. 其根据当前页面, 加载不同文件进行展示....如果修改的话, 貌似只能修改源码了, 加载配置时候, 在请求缓存中先读了一次: 故可以预先将配置放到请求缓存中....查看缓存文件时候, 看到了这段代码: 但奇怪是, 全局搜索变量$wp_object_cache, 却没有找到定义地方. 最终一点一点找到了它定义地方.

    1.5K40

    学会编程更要学会找错误

    一直写点我在编程学习中遇到问题以及是如何解决是一个PHPer,而且对计算机有着深厚兴趣。...今天闲着没事,就顺手整理一点,随后会相继会做更多总结,敬请您关注…… 如果你是老鸟,想你看到这个应该可以勾起你当时这样菜鸟一步一步走过来回忆吧!...>,有很大一部分网友问过为何代码在他环境下不能解析就是这个短标签没有开启),这样就需要php.ini帮助了。...比如遇到会进行一些操作和解析) 说有点罗嗦,你可能还没有理解,那么就去百度或者google一下吧(网上有这样一句调侃的话:外事问谷歌,内事问百度,房事问天涯) 2、post和get...wd=web%D4%CB%D0%D0%D4%AD%C0%ED这样形式都是get方法传送数据(接收页面就可以用$_GET获取发送数据),剩下你表面看不到都是post方法,可以接受页面用$_

    94570
    领券