返回列表 发布新帖

药品说明书查询软件网页PHP版本

2432 0
小K网牛逼 发表于 2025-10-14 00:00:12 | 查看全部 阅读模式 <

马上注册,结交更多好友,享用更多功能,让你轻松玩转小K网。

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

×
使用的是大佬YMXuan的数据库
可以自己架设到本地,或者用免费的服务器跑也行,比如sevr00这类的,
PHP版本7.0以上即可。兼容手机端显示查询。
使用方法:将数据库文件drugs.db 和PHP文件放在同一目录即可。

我用作者原版数据库文件 可能后续他修改了,导致部分人提示
“数据库查询失败:“SQLSTATEIHY000] General error: 1 no such column: 批准文号”


作者原版数据库文件网盘链接: https://pan.baidu.com/s/1FRh7MK1FtlJaF39T-EP0vw?pwd=hii2 提取码: hii2

药品说明书查询软件网页PHP版本

药品说明书查询软件网页PHP版本

  1. <?php
  2. /**
  3. * 药品数据库查询系统 - 智能组合搜索版
  4. * 使用说明:
  5. * 1. 将此文件保存为 index.php
  6. * 2. 将 drugs.db 放在同一目录
  7. * 3. 支持空格分隔多关键词组合搜索
  8. */
  9. // 数据库配置
  10. define('DB_PATH', __DIR__ . '/drugs.db');
  11. // 错误处理
  12. error_reporting(E_ALL);
  13. ini_set('display_errors', 0);
  14. // 处理查询请求
  15. $results = [];
  16. $error = '';
  17. $query_info = '';
  18. $search_term = '';
  19. $search_type = 'smart';
  20. if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  21.     $search_term = trim($_POST['search_term'] ?? '');
  22.     $search_type = $_POST['search_type'] ?? 'smart';
  23.      
  24.     if (!empty($search_term)) {
  25.         try {
  26.             $pdo = new PDO('sqlite:' . DB_PATH);
  27.             $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  28.             $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
  29.             
  30.             // 智能搜索:支持空格分隔的多关键词组合
  31.             $keywords = array_filter(explode(' ', $search_term));
  32.             
  33.             if ($search_type === 'smart' && count($keywords) > 1) {
  34.                 // 多关键词组合搜索:所有关键词都必须在某个字段中出现
  35.                 $conditions = [];
  36.                 $params = [];
  37.                  
  38.                 foreach ($keywords as $idx => $keyword) {
  39.                     $param_name = "keyword{$idx}";
  40.                     $conditions[] = "(通用名称 LIKE :{$param_name} OR
  41.                                      商品名称 LIKE :{$param_name} OR
  42.                                      生产企业 LIKE :{$param_name} OR
  43.                                      批准文号 LIKE :{$param_name} OR
  44.                                      相关疾病 LIKE :{$param_name} OR
  45.                                      适应症 LIKE :{$param_name})";
  46.                     $params[$param_name] = "%{$keyword}%";
  47.                 }
  48.                  
  49.                 $sql = "SELECT * FROM drug_info WHERE " . implode(' AND ', $conditions);
  50.                 $sql .= " ORDER BY 通用名称, 生产企业 LIMIT 100";
  51.                  
  52.                 $query_info = "智能组合搜索(" . count($keywords) . " 个关键词):"" . $search_term . """;
  53.                  
  54.             } else {
  55.                 // 单关键词或指定字段搜索
  56.                 $keyword = $keywords[0];
  57.                  
  58.                 switch ($search_type) {
  59.                     case 'generic_name':
  60.                         $sql = "SELECT * FROM drug_info WHERE 通用名称 LIKE :term ORDER BY 通用名称, 生产企业";
  61.                         $query_info = "通用名称";
  62.                         break;
  63.                     case 'trade_name':
  64.                         $sql = "SELECT * FROM drug_info WHERE 商品名称 LIKE :term ORDER BY 商品名称, 生产企业";
  65.                         $query_info = "商品名称";
  66.                         break;
  67.                     case 'manufacturer':
  68.                         $sql = "SELECT * FROM drug_info WHERE 生产企业 LIKE :term ORDER BY 生产企业, 通用名称";
  69.                         $query_info = "生产企业";
  70.                         break;
  71.                     case 'approval_number':
  72.                         $sql = "SELECT * FROM drug_info WHERE 批准文号 LIKE :term ORDER BY 批准文号";
  73.                         $query_info = "批准文号";
  74.                         break;
  75.                     default:
  76.                         // 智能模式单关键词:搜索所有主要字段
  77.                         $sql = "SELECT * FROM drug_info WHERE
  78.                                 通用名称 LIKE :term OR
  79.                                 商品名称 LIKE :term OR
  80.                                 生产企业 LIKE :term OR
  81.                                 批准文号 LIKE :term OR
  82.                                 相关疾病 LIKE :term OR
  83.                                 适应症 LIKE :term
  84.                                 ORDER BY 通用名称, 生产企业";
  85.                         $query_info = "智能搜索";
  86.                 }
  87.                 $sql .= " LIMIT 100";
  88.                 $params = ['term' => "%{$keyword}%"];
  89.                 $query_info .= " 包含 "{$keyword}"";
  90.             }
  91.             
  92.             $stmt = $pdo->prepare($sql);
  93.             $stmt->execute($params);
  94.             $results = $stmt->fetchAll();
  95.             
  96.             $query_info .= " 的药品,共找到 " . count($results) . " 条结果";
  97.             
  98.         } catch (PDOException $e) {
  99.             $error = "数据库查询失败: " . $e->getMessage();
  100.         }
  101.     } else {
  102.         $error = "请输入查询关键词";
  103.     }
  104. }
  105. // 获取数据库统计信息
  106. $db_stats = '';
  107. try {
  108.     $pdo = new PDO('sqlite:' . DB_PATH);
  109.     $stmt = $pdo->query("SELECT COUNT(*) as total FROM drug_info");
  110.     $total = $stmt->fetch()['total'];
  111.     $db_stats = "数据库共收录 {$total} 条药品信息";
  112. } catch (PDOException $e) {
  113.     $db_stats = "无法连接数据库";
  114. }
  115. // 辅助函数:安全输出
  116. function safe_output($value) {
  117.     return !empty($value) && $value !== '-' ? nl2br(htmlspecialchars($value)) : '<span style="color: #bbb;">暂无</span>';
  118. }
  119. ?>
  120. <!DOCTYPE html>
  121. <html lang="zh-CN">
  122. <head>
  123.     <meta charset="UTF-8">
  124.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  125.     <title>药品数据库查询系统</title>
  126.     <style>
  127.         * {
  128.             margin: 0;
  129.             padding: 0;
  130.             box-sizing: border-box;
  131.         }
  132.          
  133.         body {
  134.             font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Microsoft YaHei", sans-serif;
  135.             background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  136.             min-height: 100vh;
  137.             padding: 20px;
  138.         }
  139.          
  140.         .container {
  141.             max-width: 1400px;
  142.             margin: 0 auto;
  143.         }
  144.          
  145.         .header {
  146.             background: white;
  147.             border-radius: 10px;
  148.             padding: 25px 30px;
  149.             margin-bottom: 20px;
  150.             box-shadow: 0 10px 30px rgba(0,0,0,0.2);
  151.         }
  152.          
  153.         h1 {
  154.             color: #667eea;
  155.             margin-bottom: 8px;
  156.             font-size: 26px;
  157.         }
  158.          
  159.         .db-stats {
  160.             color: #666;
  161.             font-size: 14px;
  162.         }
  163.          
  164.         .search-box {
  165.             background: white;
  166.             border-radius: 10px;
  167.             padding: 25px 30px;
  168.             margin-bottom: 20px;
  169.             box-shadow: 0 10px 30px rgba(0,0,0,0.2);
  170.         }
  171.          
  172.         .search-hint {
  173.             color: #667eea;
  174.             font-size: 13px;
  175.             margin-bottom: 15px;
  176.             padding: 10px;
  177.             background: #f0f4ff;
  178.             border-radius: 5px;
  179.             border-left: 3px solid #667eea;
  180.         }
  181.          
  182.         .search-form {
  183.             display: flex;
  184.             gap: 10px;
  185.             flex-wrap: wrap;
  186.         }
  187.          
  188.         .search-type {
  189.             padding: 12px;
  190.             border: 2px solid #e0e0e0;
  191.             border-radius: 5px;
  192.             font-size: 15px;
  193.             flex: 0 0 140px;
  194.             background: white;
  195.         }
  196.          
  197.         .search-input {
  198.             padding: 12px;
  199.             border: 2px solid #e0e0e0;
  200.             border-radius: 5px;
  201.             font-size: 15px;
  202.             flex: 1;
  203.             min-width: 250px;
  204.         }
  205.          
  206.         .search-input:focus {
  207.             outline: none;
  208.             border-color: #667eea;
  209.         }
  210.          
  211.         .search-btn {
  212.             padding: 12px 30px;
  213.             background: #667eea;
  214.             color: white;
  215.             border: none;
  216.             border-radius: 5px;
  217.             font-size: 15px;
  218.             cursor: pointer;
  219.             transition: background 0.3s;
  220.             font-weight: 500;
  221.         }
  222.          
  223.         .search-btn:hover {
  224.             background: #5568d3;
  225.         }
  226.          
  227.         .message {
  228.             background: white;
  229.             border-radius: 10px;
  230.             padding: 15px 20px;
  231.             margin-bottom: 20px;
  232.             box-shadow: 0 5px 15px rgba(0,0,0,0.1);
  233.         }
  234.          
  235.         .error {
  236.             background: #fee;
  237.             color: #c33;
  238.             border-left: 4px solid #c33;
  239.         }
  240.          
  241.         .info {
  242.             background: #e7f3ff;
  243.             color: #0066cc;
  244.             border-left: 4px solid #0066cc;
  245.         }
  246.          
  247.         .results {
  248.             background: white;
  249.             border-radius: 10px;
  250.             padding: 20px;
  251.             box-shadow: 0 10px 30px rgba(0,0,0,0.2);
  252.         }
  253.          
  254.         .drug-card {
  255.             border: 1px solid #ddd;
  256.             border-radius: 8px;
  257.             margin-bottom: 20px;
  258.             overflow: hidden;
  259.             transition: all 0.3s;
  260.             background: #fafafa;
  261.         }
  262.          
  263.         .drug-card:hover {
  264.             border-color: #667eea;
  265.             box-shadow: 0 4px 15px rgba(102, 126, 234, 0.15);
  266.         }
  267.          
  268.         /* 核心信息区 */
  269.         .drug-header {
  270.             background: white;
  271.             padding: 20px 25px;
  272.             border-bottom: 2px solid #f0f0f0;
  273.         }
  274.          
  275.         .drug-title-row {
  276.             display: flex;
  277.             align-items: baseline;
  278.             gap: 15px;
  279.             margin-bottom: 15px;
  280.             flex-wrap: wrap;
  281.         }
  282.          
  283.         .drug-generic-name {
  284.             font-size: 22px;
  285.             font-weight: bold;
  286.             color: #333;
  287.         }
  288.          
  289.         .drug-trade-name {
  290.             font-size: 16px;
  291.             color: #667eea;
  292.             font-weight: 500;
  293.         }
  294.          
  295.         .drug-badges {
  296.             display: flex;
  297.             gap: 8px;
  298.             flex-wrap: wrap;
  299.         }
  300.          
  301.         .badge {
  302.             display: inline-block;
  303.             padding: 4px 12px;
  304.             background: #f0f0f0;
  305.             border-radius: 4px;
  306.             font-size: 12px;
  307.             color: #666;
  308.         }
  309.          
  310.         .badge.primary {
  311.             background: #e7f3ff;
  312.             color: #0066cc;
  313.         }
  314.          
  315.         /* 基础信息网格 */
  316.         .basic-info-grid {
  317.             display: grid;
  318.             grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  319.             gap: 12px;
  320.             padding: 20px 25px;
  321.             background: white;
  322.         }
  323.          
  324.         .info-row {
  325.             display: flex;
  326.             gap: 10px;
  327.             font-size: 14px;
  328.             line-height: 1.6;
  329.         }
  330.          
  331.         .info-label {
  332.             font-weight: 600;
  333.             color: #555;
  334.             min-width: 80px;
  335.             flex-shrink: 0;
  336.         }
  337.          
  338.         .info-value {
  339.             color: #333;
  340.             flex: 1;
  341.         }
  342.          
  343.         /* 详细说明区 */
  344.         .drug-details {
  345.             padding: 20px 25px;
  346.             background: white;
  347.         }
  348.          
  349.         .detail-block {
  350.             margin-bottom: 20px;
  351.             padding-bottom: 20px;
  352.             border-bottom: 1px solid #f0f0f0;
  353.         }
  354.          
  355.         .detail-block:last-child {
  356.             border-bottom: none;
  357.             margin-bottom: 0;
  358.             padding-bottom: 0;
  359.         }
  360.          
  361.         .detail-title {
  362.             font-weight: bold;
  363.             color: #667eea;
  364.             margin-bottom: 8px;
  365.             font-size: 15px;
  366.         }
  367.          
  368.         .detail-content {
  369.             color: #555;
  370.             line-height: 1.8;
  371.             font-size: 14px;
  372.         }
  373.          
  374.         .section-divider {
  375.             height: 2px;
  376.             background: #f0f0f0;
  377.             margin: 0;
  378.         }
  379.          
  380.         .no-results {
  381.             text-align: center;
  382.             padding: 40px;
  383.             color: #999;
  384.             font-size: 16px;
  385.         }
  386.          
  387.         @media (max-width: 768px) {
  388.             .basic-info-grid {
  389.                 grid-template-columns: 1fr;
  390.             }
  391.         }
  392.          
  393.         @media print {
  394.             body {
  395.                 background: white;
  396.             }
  397.             .search-box, .header {
  398.                 display: none;
  399.             }
  400.         }
  401.     </style>
  402. </head>
  403. <body>
  404.     <div class="container">
  405.         <div class="header">
  406.             <h1>药品数据库查询系统</h1>
  407.             <div class="db-stats"><?php echo htmlspecialchars($db_stats); ?></div>
  408.         </div>
  409.          
  410.         <div class="search-box">
  411.             <div class="search-hint">
  412.                 &#128161; <strong>智能搜索提示:</strong>输入多个关键词用空格分隔,如 "阿莫西林 进口"、"布洛芬 儿童",系统将自动组合匹配
  413.             </div>
  414.             <form method="POST" class="search-form">
  415.                 <select name="search_type" class="search-type">
  416.                     <option value="smart" <?php echo $search_type === 'smart' ? 'selected' : ''; ?>>智能搜索</option>
  417.                     <option value="generic_name" <?php echo $search_type === 'generic_name' ? 'selected' : ''; ?>>通用名称</option>
  418.                     <option value="trade_name" <?php echo $search_type === 'trade_name' ? 'selected' : ''; ?>>商品名称</option>
  419.                     <option value="manufacturer" <?php echo $search_type === 'manufacturer' ? 'selected' : ''; ?>>生产企业</option>
  420.                     <option value="approval_number" <?php echo $search_type === 'approval_number' ? 'selected' : ''; ?>>批准文号</option>
  421.                 </select>
  422.                 <input type="text" name="search_term" class="search-input"
  423.                        placeholder="如:阿莫西林 进口"
  424.                        value="<?php echo htmlspecialchars($search_term); ?>" required>
  425.                 <button type="submit" class="search-btn">&#128269; 查询</button>
  426.             </form>
  427.         </div>
  428.          
  429.         <?php if ($error): ?>
  430.             <div class="message error">
  431.                 &#10060; <?php echo htmlspecialchars($error); ?>
  432.             </div>
  433.         <?php endif; ?>
  434.          
  435.         <?php if ($query_info): ?>
  436.             <div class="message info">
  437.                 &#8505;&#65039; <?php echo htmlspecialchars($query_info); ?>
  438.             </div>
  439.         <?php endif; ?>
  440.          
  441.         <?php if (!empty($results)): ?>
  442.             <div class="results">
  443.                 <?php foreach ($results as $drug): ?>
  444.                     <div class="drug-card">
  445.                         <!-- 核心信息区 -->
  446.                         <div class="drug-header">
  447.                             <div class="drug-title-row">
  448.                                 <span class="drug-generic-name">
  449.                                     <?php echo htmlspecialchars($drug['通用名称'] ?? '未知药品'); ?>
  450.                                 </span>
  451.                                 <?php if (!empty($drug['商品名称'])): ?>
  452.                                     <span class="drug-trade-name">
  453.                                         [<?php echo htmlspecialchars($drug['商品名称']); ?>]
  454.                                     </span>
  455.                                 <?php endif; ?>
  456.                             </div>
  457.                              
  458.                             <div class="drug-badges">
  459.                                 <?php if (!empty($drug['药品性质'])): ?>
  460.                                     <span class="badge primary"><?php echo htmlspecialchars($drug['药品性质']); ?></span>
  461.                                 <?php endif; ?>
  462.                                 <?php if (!empty($drug['药品分类'])): ?>
  463.                                     <span class="badge"><?php echo htmlspecialchars($drug['药品分类']); ?></span>
  464.                                 <?php endif; ?>
  465.                             </div>
  466.                         </div>
  467.                         
  468.                         <!-- 基础信息网格 -->
  469.                         <div class="basic-info-grid">
  470.                             <div class="info-row">
  471.                                 <span class="info-label">生产企业</span>
  472.                                 <span class="info-value"><?php echo safe_output($drug['生产企业']); ?></span>
  473.                             </div>
  474.                              
  475.                             <div class="info-row">
  476.                                 <span class="info-label">批准文号</span>
  477.                                 <span class="info-value"><?php echo safe_output($drug['批准文号']); ?></span>
  478.                             </div>
  479.                              
  480.                             <div class="info-row">
  481.                                 <span class="info-label">规格</span>
  482.                                 <span class="info-value"><?php echo safe_output($drug['规格']); ?></span>
  483.                             </div>
  484.                              
  485.                             <div class="info-row">
  486.                                 <span class="info-label">汉语拼音</span>
  487.                                 <span class="info-value"><?php echo safe_output($drug['汉语拼音']); ?></span>
  488.                             </div>
  489.                              
  490.                             <div class="info-row">
  491.                                 <span class="info-label">贮藏</span>
  492.                                 <span class="info-value"><?php echo safe_output($drug['贮藏']); ?></span>
  493.                             </div>
  494.                              
  495.                             <div class="info-row">
  496.                                 <span class="info-label">有效期</span>
  497.                                 <span class="info-value"><?php echo safe_output($drug['有效期']); ?></span>
  498.                             </div>
  499.                              
  500.                             <?php if (!empty($drug['相关疾病'])): ?>
  501.                             <div class="info-row">
  502.                                 <span class="info-label">相关疾病</span>
  503.                                 <span class="info-value"><?php echo safe_output($drug['相关疾病']); ?></span>
  504.                             </div>
  505.                             <?php endif; ?>
  506.                              
  507.                             <?php if (!empty($drug['性状'])): ?>
  508.                             <div class="info-row">
  509.                                 <span class="info-label">性状</span>
  510.                                 <span class="info-value"><?php echo safe_output($drug['性状']); ?></span>
  511.                             </div>
  512.                             <?php endif; ?>
  513.                         </div>
  514.                         
  515.                         <div class="section-divider"></div>
  516.                         
  517.                         <!-- 详细说明区 -->
  518.                         <div class="drug-details">
  519.                             <?php if (!empty($drug['主要成份'])): ?>
  520.                             <div class="detail-block">
  521.                                 <div class="detail-title">主要成份</div>
  522.                                 <div class="detail-content"><?php echo safe_output($drug['主要成份']); ?></div>
  523.                             </div>
  524.                             <?php endif; ?>
  525.                              
  526.                             <?php if (!empty($drug['适应症'])): ?>
  527.                             <div class="detail-block">
  528.                                 <div class="detail-title">适应症</div>
  529.                                 <div class="detail-content"><?php echo safe_output($drug['适应症']); ?></div>
  530.                             </div>
  531.                             <?php endif; ?>
  532.                              
  533.                             <?php if (!empty($drug['用法用量'])): ?>
  534.                             <div class="detail-block">
  535.                                 <div class="detail-title">用法用量</div>
  536.                                 <div class="detail-content"><?php echo safe_output($drug['用法用量']); ?></div>
  537.                             </div>
  538.                             <?php endif; ?>
  539.                              
  540.                             <?php if (!empty($drug['不良反应'])): ?>
  541.                             <div class="detail-block">
  542.                                 <div class="detail-title">不良反应</div>
  543.                                 <div class="detail-content"><?php echo safe_output($drug['不良反应']); ?></div>
  544.                             </div>
  545.                             <?php endif; ?>
  546.                              
  547.                             <?php if (!empty($drug['禁忌'])): ?>
  548.                             <div class="detail-block">
  549.                                 <div class="detail-title">禁忌</div>
  550.                                 <div class="detail-content"><?php echo safe_output($drug['禁忌']); ?></div>
  551.                             </div>
  552.                             <?php endif; ?>
  553.                              
  554.                             <?php if (!empty($drug['注意事项'])): ?>
  555.                             <div class="detail-block">
  556.                                 <div class="detail-title">注意事项</div>
  557.                                 <div class="detail-content"><?php echo safe_output($drug['注意事项']); ?></div>
  558.                             </div>
  559.                             <?php endif; ?>
  560.                              
  561.                             <?php if (!empty($drug['孕妇及哺乳期妇女用药'])): ?>
  562.                             <div class="detail-block">
  563.                                 <div class="detail-title">孕妇及哺乳期妇女用药</div>
  564.                                 <div class="detail-content"><?php echo safe_output($drug['孕妇及哺乳期妇女用药']); ?></div>
  565.                             </div>
  566.                             <?php endif; ?>
  567.                              
  568.                             <?php if (!empty($drug['儿童用药'])): ?>
  569.                             <div class="detail-block">
  570.                                 <div class="detail-title">儿童用药</div>
  571.                                 <div class="detail-content"><?php echo safe_output($drug['儿童用药']); ?></div>
  572.                             </div>
  573.                             <?php endif; ?>
  574.                              
  575.                             <?php if (!empty($drug['老人用药'])): ?>
  576.                             <div class="detail-block">
  577.                                 <div class="detail-title">老人用药</div>
  578.                                 <div class="detail-content"><?php echo safe_output($drug['老人用药']); ?></div>
  579.                             </div>
  580.                             <?php endif; ?>
  581.                              
  582.                             <?php if (!empty($drug['药物相互作用'])): ?>
  583.                             <div class="detail-block">
  584.                                 <div class="detail-title">药物相互作用</div>
  585.                                 <div class="detail-content"><?php echo safe_output($drug['药物相互作用']); ?></div>
  586.                             </div>
  587.                             <?php endif; ?>
  588.                              
  589.                             <?php if (!empty($drug['药理毒理'])): ?>
  590.                             <div class="detail-block">
  591.                                 <div class="detail-title">药理毒理</div>
  592.                                 <div class="detail-content"><?php echo safe_output($drug['药理毒理']); ?></div>
  593.                             </div>
  594.                             <?php endif; ?>
  595.                              
  596.                             <?php if (!empty($drug['药代动力学'])): ?>
  597.                             <div class="detail-block">
  598.                                 <div class="detail-title">药代动力学</div>
  599.                                 <div class="detail-content"><?php echo safe_output($drug['药代动力学']); ?></div>
  600.                             </div>
  601.                             <?php endif; ?>
  602.                         </div>
  603.                     </div>
  604.                 <?php endforeach; ?>
  605.             </div>
  606.         <?php elseif ($_SERVER['REQUEST_METHOD'] === 'POST' && empty($error)): ?>
  607.             <div class="results">
  608.                 <div class="no-results">&#128533; 未找到符合条件的药品信息</div>
  609.             </div>
  610.         <?php endif; ?>
  611.     </div>
  612. </body>
  613. </html>
复制代码


回复

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

本版积分规则

您需要 登录 后才可以回复,轻松玩转社区,没有帐号?立即注册
快速回复
关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表