久久久久av_欧美日韩一区二区在线_国产精品三区四区_日韩中字在线

返回列表 發帖
樓主: roc29a

[求助] 分類信息字段中的選擇和多選的數據庫表,123替換

2

主題

19

回帖

24

積分

初學乍練

貢獻
0 點
金幣
0 個
11#
 樓主| 發表于 2023-9-27 08:53:01 | 只看Ta
$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 個
12#
 樓主| 發表于 2023-9-27 08:55:40 | 只看Ta
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 個
13#
 樓主| 發表于 2023-9-27 09:08:36 | 只看Ta
科站網 發表于 2023-9-27 08:37
直接寫一個插件不就完事了

正是在寫插件代碼,可是不大會
回復

使用道具 舉報

40

主題

3198

回帖

5451

積分

應用開發者

Discuz! 運維

貢獻
215 點
金幣
685 個
QQ
14#
發表于 2023-9-27 09:15:24 | 只看Ta
roc29a 發表于 2023-9-27 09:08
正是在寫插件代碼,可是不大會

定制或者開發文檔:https://www.discuzlab.com/x-docs/develop/dev.html
回復

使用道具 舉報

16

主題

80

回帖

138

積分

漸入佳境

貢獻
4 點
金幣
7 個
15#
發表于 2023-9-27 09:19:21 來自手機 | 只看Ta
roc29a 發表于 2023-9-27 08:29
帖子內容頁的內容能調到門戶文章內嗎?想把帖子的分類信息模板和內容調到文章里去。我這是在走數據庫表去 ...

打擾,再見!
回復

使用道具 舉報

2

主題

19

回帖

24

積分

初學乍練

貢獻
0 點
金幣
0 個
16#
 樓主| 發表于 2023-9-27 09:36:23 | 只看Ta

想把發帖投稿到文章中去,有這個插件,但不能滿足分類信息投稿到文章,是在解決這個問題。并不是DIY調用帖子。感謝參與我的問題,剛才說的急,冒犯了。
回復

使用道具 舉報

2

主題

19

回帖

24

積分

初學乍練

貢獻
0 點
金幣
0 個
17#
 樓主| 發表于 2023-9-27 09:39:41 | 只看Ta
科站網 發表于 2023-9-27 09:15
定制或者開發文檔:https://www.discuzlab.com/x-docs/develop/dev.html

只需處理數組問題就行了,需要PHP知識處理,我匱乏這方面知識。感謝大力支持
回復

使用道具 舉報

2

主題

19

回帖

24

積分

初學乍練

貢獻
0 點
金幣
0 個
18#
 樓主| 發表于 2023-9-27 09:46:13 | 只看Ta
rules部分:[rules]={1=xx2=yy3=zz}
value部分:[value]={123}
某字段值:[字段]={123}
需求結果:
value部分:[value]={xx,yy,zz}
某字段值:[字段}={xx,yy,zz}
回復

使用道具 舉報

2

主題

19

回帖

24

積分

初學乍練

貢獻
0 點
金幣
0 個
19#
 樓主| 發表于 2023-10-6 09:34:43 | 只看Ta
<!-- forum_typeoption表中所有1 = xx 2 = yy 3 = zz更改為 [rules]xx yy zz -->
$typeoption = DB::fetch_all("SELECT optionid,rules FROM %t WHERE optionid > %d", array('forum_typeoption', 6));
$typeoptionvar = DB::fetch_all("SELECT optionid,value FROM %t WHERE tid = %d", array('forum_typeoptionvar', $tid));
//取出含數字字符串中最大的數字
function extractMaxNumber($str) {
  $maxNumber = '';
  $isNumber = false;
  for ($i = 0; $i < strlen($str); $i++) {
    if (is_numeric($str[$i])) {
      if (!$isNumber) {
        $maxNumber = $str[$i];
        $isNumber = true;
      } else {
        $maxNumber .= $str[$i];
      }
    } else {
      $isNumber = false;
    }
  }
  return (int) $maxNumber;
}
//$typeoption的[rules],$choices分割成數組
foreach ($typeoption as $keys => $types) {
  if (strpos($types[rules], 'choices') !== false) {//$typeoption找出選擇和多選的rules
    $choices[$keys][rules]=$types[rules];
    $optionids[$keys]=$types[optionid];
    $optionids=array_values($optionids);
    $choices[$keys][rules]=strstr($choices[$keys][rules],'1 = ');
    $choices[$keys][rules]=strstr($choices[$keys][rules],'"',true);//把數組截取
      for($i=1;$i<=extractMaxNumber($choices[$keys][rules]);$i++){
        $choices[$keys][rules]=str_replace("$i = ", ",$i=", $choices[$keys][rules]);
      }
    $choices[$keys][rules]=substr($choices[$keys][rules],1);//去除第一個字符
    $choices[$keys][rules]=explode(",",$choices[$keys][rules]);//字符串分割成數組
    $typeoption[$keys][rules]=$choices[$keys][rules];
  }
}

//$typeoptionvar,$optionids數組里的$choice分割成數組并替換
foreach ($typeoptionvar as $key => $type){
  if (in_array($type[optionid], $optionids)){
    $choice[$key][rules]=$type[value];
      for($i=1;$i<=extractMaxNumber($choice[$key][rules]);$i++){
        $choice[$key][rules]=preg_replace('/\s+/','', $choice[$key][rules]);
      }
    $choice[$key][rules]=str_split($choice[$key][rules]);
    //把$choice最底層數組含數字元素替換成對應的$choices含有數字的元素并去除數字和=
    foreach($choice[$key][rules] as $tion => $rule){
      foreach($choices[$key][rules] as $tions => $rules){
        if (strpos($rules, "$rule") !== false) {
          $choice[$key][rules][$tion]=$choices[$key][rules][$choice[$key][rules][$tion]-1];
        }
      }
      for($i=1;$i<=extractMaxNumber($choice[$key][rules][$tion]);$i++){
        $choice[$key][rules][$tion]=str_replace("$i=", " ", $choice[$key][rules][$tion]);
      }
      
      
    }
    $choice[$key][rules]=implode(" ", $choice[$key][rules]);
    $typeoptionvar[$key][value]=$choice[$key][rules];
  }
}
回復

使用道具 舉報

2

主題

19

回帖

24

積分

初學乍練

貢獻
0 點
金幣
0 個
20#
 樓主| 發表于 2023-10-6 09:36:52 | 只看Ta
roc29a 發表于 2023-10-6 09:34
$typeoption = DB::fetch_all("SELECT optionid,rules FROM %t WHERE optionid > %d", array('forum_typeo ...
  1. <!-- forum_typeoption表中所有1 = xx 2 = yy 3 = zz更改為 [rules]xx yy zz -->
  2. $typeoption = DB::fetch_all("SELECT optionid,rules FROM %t WHERE optionid > %d", array('forum_typeoption', 6));
  3. $typeoptionvar = DB::fetch_all("SELECT optionid,value FROM %t WHERE tid = %d", array('forum_typeoptionvar', $tid));
  4. //取出含數字字符串中最大的數字
  5. function extractMaxNumber($str) {
  6.   $maxNumber = '';
  7.   $isNumber = false;
  8.   for ($i = 0; $i < strlen($str); $i++) {
  9.     if (is_numeric($str[$i])) {
  10.       if (!$isNumber) {
  11.         $maxNumber = $str[$i];
  12.         $isNumber = true;
  13.       } else {
  14.         $maxNumber .= $str[$i];
  15.       }
  16.     } else {
  17.       $isNumber = false;
  18.     }
  19.   }
  20.   return (int) $maxNumber;
  21. }
  22. //$typeoption的[rules],$choices分割成數組
  23. foreach ($typeoption as $keys => $types) {
  24.   if (strpos($types[rules], 'choices') !== false) {//$typeoption找出選擇和多選的rules
  25.     $choices[$keys][rules]=$types[rules];
  26.     $optionids[$keys]=$types[optionid];
  27.     $optionids=array_values($optionids);
  28.     $choices[$keys][rules]=strstr($choices[$keys][rules],'1 = ');
  29.     $choices[$keys][rules]=strstr($choices[$keys][rules],'"',true);//把數組截取
  30.       for($i=1;$i<=extractMaxNumber($choices[$keys][rules]);$i++){
  31.         $choices[$keys][rules]=str_replace("$i = ", ",$i=", $choices[$keys][rules]);
  32.       }
  33.     $choices[$keys][rules]=substr($choices[$keys][rules],1);//去除第一個字符
  34.     $choices[$keys][rules]=explode(",",$choices[$keys][rules]);//字符串分割成數組
  35.     $typeoption[$keys][rules]=$choices[$keys][rules];
  36.   }
  37. }

  38. //$typeoptionvar,$optionids數組里的$choice分割成數組并替換
  39. foreach ($typeoptionvar as $key => $type){
  40.   if (in_array($type[optionid], $optionids)){
  41.     $choice[$key][rules]=$type[value];
  42.       for($i=1;$i<=extractMaxNumber($choice[$key][rules]);$i++){
  43.         $choice[$key][rules]=preg_replace('/\s+/','', $choice[$key][rules]);
  44.       }
  45.     $choice[$key][rules]=str_split($choice[$key][rules]);
  46.     //把$choice最底層數組含數字元素替換成對應的$choices含有數字的元素并去除數字和=
  47.     foreach($choice[$key][rules] as $tion => $rule){
  48.       foreach($choices[$key][rules] as $tions => $rules){
  49.         if (strpos($rules, "$rule") !== false) {
  50.           $choice[$key][rules][$tion]=$choices[$key][rules][$choice[$key][rules][$tion]-1];
  51.         }
  52.       }
  53.       for($i=1;$i<=extractMaxNumber($choice[$key][rules][$tion]);$i++){
  54.         $choice[$key][rules][$tion]=str_replace("$i=", " ", $choice[$key][rules][$tion]);
  55.       }
  56.       
  57.       
  58.     }
  59.     $choice[$key][rules]=implode(" ", $choice[$key][rules]);
  60.     $typeoptionvar[$key][value]=$choice[$key][rules];
  61.   }
  62. }
復制代碼
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

  • 關注公眾號
  • 有償服務微信
  • 有償服務QQ

手機版|小黑屋|Discuz! 官方交流社區 ( 皖ICP備16010102號 |皖公網安備34010302002376號 )|網站地圖|star

GMT+8, 2025-9-19 06:34 , Processed in 0.080184 second(s), 24 queries .

Powered by Discuz! W1.0 Licensed

Copyright © 2001-2025 Discuz! Team.

關燈 在本版發帖
有償服務QQ
有償服務微信
返回頂部
快速回復 返回頂部 返回列表