123下一页
返回列表 发帖
查看: 2922|回复: 21

[求助] 分类信息字段中的选择和多选的数据库表,123替换

2

主题

19

回帖

24

积分

初学乍练

贡献
0 点
金币
0 个
发表于 2023-9-26 14:23:22 | 查看全部 |阅读模式
pre_forum_typeoption数据库表在选择或多选时有1=xx2=yy3=zz等等。pre_forum_typeoptionvar表及pre_forum_optionvalue1用123代表式,怎么能让这两个表筛选并输出变量,1替换为xx,2替换为yy,3替换为zz等等
我知道答案 回答被采纳将会获得1 贡献 + 3 金币 已有21人回答
回复

使用道具 举报

2

主题

19

回帖

24

积分

初学乍练

贡献
0 点
金币
0 个
 楼主| 发表于 2023-9-27 08:53:01 | 查看全部
$tid=任意帖子ID;
pre_forum_typeoptionvar表:$typeoption = DB::fetch_all("SELECT rules FROM %t WHERE optionid > %d", array('forum_typeoption', 6));
pre_forum_typeoptionvar表:$typeoptionvar = DB::fetch_all("SELECT value FROM %t WHERE tid = %d", array('forum_typeoptionvar', $tid));
pre_forum_optionvalue1表:$optionvalue1= DB::fetch_first("SELECT * FROM %t WHERE tid = %d", array('forum_optionvalue1', $tid));
这时$typeoption的选择和多选的字段对应的元素中会出现1=xx2=yy3=zz还有其他不知道什么码包围。$typeoptionvar和$optionvalue1的选择和多选的元素中会有某个选项1或2或3或23或13或23或123等等。其实123就是代表值,怎么能让这两个变量$typeoptionvar和$optionvalue1,1替换为xx,2替换为yy,3替换为zz等等


回复

使用道具 举报

2

主题

19

回帖

24

积分

初学乍练

贡献
0 点
金币
0 个
 楼主| 发表于 2023-9-27 08:55:40 | 查看全部
roc29a 发表于 2023-9-27 08:53
$tid=任意帖子ID;
pre_forum_typeoptionvar表:$typeoption = DB::fetch_all("SELECT rules FROM %t WHERE  ...

这是一个PHP处理数组的问题
回复

使用道具 举报

2

主题

19

回帖

24

积分

初学乍练

贡献
0 点
金币
0 个
 楼主| 发表于 2023-9-27 09:46:13 | 查看全部
rules部分:[rules]={1=xx2=yy3=zz}
value部分:[value]={123}
某字段值:[字段]={123}
需求结果:
value部分:[value]={xx,yy,zz}
某字段值:[字段}={xx,yy,zz}
回复

使用道具 举报

2

主题

19

回帖

24

积分

初学乍练

贡献
0 点
金币
0 个
 楼主| 发表于 2023-10-6 10:33:52 | 查看全部
改进了一下,并把图片的杂乱码去掉
  1. //取出含数字字符串中最大的数字
  2. function extractMaxNumber($str) {
  3.   $maxNumber = '';
  4.   $isNumber = false;
  5.   for ($i = 0; $i < strlen($str); $i++) {
  6.     if (is_numeric($str[$i])) {
  7.       if (!$isNumber) {
  8.         $maxNumber = $str[$i];
  9.         $isNumber = true;
  10.       } else {
  11.         $maxNumber .= $str[$i];
  12.       }
  13.     } else {
  14.       $isNumber = false;
  15.     }
  16.   }
  17.   return (int) $maxNumber;
  18. }
  19. //$typeoption的[rules],$choices分割成数组
  20. foreach ($typeoption as $keys => $types) {
  21.   if (strpos($types[rules], 'choices') !== false) {//$typeoption找出选择和多选的rules
  22.     $choices[$keys][rules]=$types[rules];
  23.     $optionids[$keys]=$types[optionid];
  24.     $optionids=array_values($optionids);
  25.     $choices[$keys][rules]=strstr($choices[$keys][rules],'1 = ');
  26.     $choices[$keys][rules]=strstr($choices[$keys][rules],'"',true);//把数组截取
  27.       for($i=1;$i<=extractMaxNumber($choices[$keys][rules]);$i++){
  28.         $choices[$keys][rules]=str_replace("$i = ", ",$i=", $choices[$keys][rules]);
  29.       }
  30.     $choices[$keys][rules]=substr($choices[$keys][rules],1);//去除第一个字符
  31.     $choices[$keys][rules]=explode(",",$choices[$keys][rules]);//字符串分割成数组
  32.     $typeoption[$keys][rules]=$choices[$keys][rules];
  33.   }
  34. }

  35. //$typeoptionvar,$optionids数组里的$choice分割成数组并替换
  36. foreach ($typeoptionvar as $key => $type){
  37.   if (in_array($type[optionid], $optionids)){
  38.     $choice[$key][value]=$type[value];
  39.       for($i=1;$i<=extractMaxNumber($choice[$key][value]);$i++){
  40.         $choice[$key][value]=preg_replace('/\s+/','', $choice[$key][value]);
  41.       }
  42.     $choice[$key][value]=str_split($choice[$key][value]);
  43.     //把$choice最底层数组含数字元素替换成对应的$choices含有数字的元素并去除数字和=
  44.     foreach($choice[$key][value] as $tion => $rule){
  45.       foreach($choices[$key][rules] as $tions => $rules){
  46.         if (strpos($rules, "$rule") !== false) {
  47.           $choice[$key][value][$tion]=$choices[$key][rules][$choice[$key][value][$tion]-1];
  48.         }
  49.       }
  50.       for($i=1;$i<=extractMaxNumber($choice[$key][value][$tion]);$i++){
  51.         $choice[$key][value][$tion]=str_replace("$i=", " ", $choice[$key][value][$tion]);
  52.       }   
  53.     }
  54.     $choice[$key][value]=implode(" ", $choice[$key][value]);
  55.     $typeoptionvar[$key][value]=$choice[$key][value];
  56.   }
  57. }

  58. foreach ($typeoptionvar as $key => $type) {
  59.     if (strpos($type[value], 'data') !== false) {
  60.         $image[$key][value]=strstr($typeoptionvar[$key][value],'data');
  61.         $image[$key][value]=str_replace('";}','',$image[$key][value]);
  62.         $typeoptionvar[$key][value]=$image[$key][value];
  63.     }
  64. }
复制代码
回复

使用道具 举报

43

主题

3261

回帖

5545

积分

应用开发者

Discuz! 运维

贡献
218 点
金币
685 个
QQ
发表于 2023-9-26 14:32:29 | 查看全部
你看到是123,但实际中间有一个制表符,应该是
  1. 1        2
复制代码
回复

使用道具 举报

2

主题

19

回帖

24

积分

初学乍练

贡献
0 点
金币
0 个
 楼主| 发表于 2023-9-26 14:38:43 | 查看全部
科站网 发表于 2023-9-26 14:32
你看到是123,但实际中间有一个制表符,应该是

嗯,看起来像个空格,能去掉,整体我就搞不下来了。
回复

使用道具 举报

43

主题

3261

回帖

5545

积分

应用开发者

Discuz! 运维

贡献
218 点
金币
685 个
QQ
发表于 2023-9-26 14:45:15 | 查看全部
mysql update replace下
回复

使用道具 举报

43

主题

3261

回帖

5545

积分

应用开发者

Discuz! 运维

贡献
218 点
金币
685 个
QQ
发表于 2023-9-26 14:45:43 | 查看全部
再不行写个脚本跑一下
回复

使用道具 举报

2

主题

19

回帖

24

积分

初学乍练

贡献
0 点
金币
0 个
 楼主| 发表于 2023-9-26 14:58:02 | 查看全部
科站网 发表于 2023-9-26 14:45
mysql update replace下

这个不行啊,不想改变数据库字段值
回复

使用道具 举报

2

主题

19

回帖

24

积分

初学乍练

贡献
0 点
金币
0 个
 楼主| 发表于 2023-9-26 15:00:10 | 查看全部
科站网 发表于 2023-9-26 14:45
再不行写个脚本跑一下

已经查资料,查百度,查百度AI折磨四五天了,我是初学者还是没搞定
回复

使用道具 举报

16

主题

80

回帖

138

积分

渐入佳境

贡献
4 点
金币
7 个
发表于 2023-9-26 17:52:47 来自手机 | 查看全部
不太清楚你的具体诉求,但如果是要在帖子内容页特定显示分类字段的信息,可以直接编写自定义分类信息的帖子内容页模板,想怎么调用就怎么调用。如果是要在其他地方筛选分类信息字段展示,看能不能在后端获取到帖子的分类信息字段变量写一个逻辑判断来输出,没必要动数据库字段信息
回复

使用道具 举报

2

主题

19

回帖

24

积分

初学乍练

贡献
0 点
金币
0 个
 楼主| 发表于 2023-9-27 08:29:45 | 查看全部
酷画创意 发表于 2023-9-26 17:52
不太清楚你的具体诉求,但如果是要在帖子内容页特定显示分类字段的信息,可以直接编写自定义分类信息的帖子 ...

帖子内容页的内容能调到门户文章内吗?想把帖子的分类信息模板和内容调到文章里去。我这是在走数据库表去实现
回复

使用道具 举报

43

主题

3261

回帖

5545

积分

应用开发者

Discuz! 运维

贡献
218 点
金币
685 个
QQ
发表于 2023-9-27 08:37:57 | 查看全部
roc29a 发表于 2023-9-27 08:29
帖子内容页的内容能调到门户文章内吗?想把帖子的分类信息模板和内容调到文章里去。我这是在走数据库表去 ...

直接写一个插件不就完事了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 关注公众号
  • 有偿服务微信
  • 有偿服务QQ

手机版|小黑屋|Discuz! 官方交流社区 ( 皖ICP备16010102号 |皖公网安备34010302002376号 )|网站地图|star

GMT+8, 2025-12-13 12:37 , Processed in 0.057834 second(s), 14 queries , Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
有偿服务QQ
有偿服务微信
返回顶部
快速回复 返回顶部 返回列表