找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 文档 工具 设计
查看: 4|回复: 0

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

[复制链接]

2万

主题

1584

回帖

3万

积分

超级版主

教育辅助界扛把子

附加身份标识
精华
1
热心
10
听众
1
威望
2
贡献
17791
违规
0
书币
55910
注册时间
2020-4-8

论坛元老灌水之王

发表于 2025-10-13 20:29 | 显示全部楼层 |阅读模式
使用的是 https://bbs.cdsy.xyz/thread-25907-1-1.html 的数据库
可以自己架设到本地,或者用免费的服务器跑也行,比如sevr00这类的,
PHP版本7.0以上即可。兼容手机端显示查询。
使用方法:将数据库文件drugs.db 和PHP文件放在同一目录即可。

[AppleScript] 纯文本查看 复制代码
<?php
/**
 * 药品数据库查询系统 - 智能组合搜索版
 * 使用说明:
 * 1. 将此文件保存为 index.php
 * 2. 将 drugs.db 放在同一目录
 * 3. 支持空格分隔多关键词组合搜索
 */

// 数据库配置
define('DB_PATH', __DIR__ . '/drugs.db');

// 错误处理
error_reporting(E_ALL);
ini_set('display_errors', 0);

// 处理查询请求
$results = [];
$error = '';
$query_info = '';
$search_term = '';
$search_type = 'smart';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $search_term = trim($_POST['search_term'] ?? '');
    $search_type = $_POST['search_type'] ?? 'smart';

    if (!empty($search_term)) {
        try {
            $pdo = new PDO('sqlite:' . DB_PATH);
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

            // 智能搜索:支持空格分隔的多关键词组合
            $keywords = array_filter(explode(' ', $search_term));

            if ($search_type === 'smart' && count($keywords) > 1) {
                // 多关键词组合搜索:所有关键词都必须在某个字段中出现
                $conditions = [];
                $params = [];

                foreach ($keywords as $idx => $keyword) {
                    $param_name = "keyword{$idx}";
                    $conditions[] = "(通用名称 LIKE :{$param_name} OR 
                                     商品名称 LIKE :{$param_name} OR 
                                     生产企业 LIKE :{$param_name} OR 
                                     批准文号 LIKE :{$param_name} OR 
                                     相关疾病 LIKE :{$param_name} OR 
                                     适应症 LIKE :{$param_name})";
                    $params[$param_name] = "%{$keyword}%";
                }

                $sql = "SELECT * FROM drug_info WHERE " . implode(' AND ', $conditions);
                $sql .= " ORDER BY 通用名称, 生产企业 LIMIT 100";

                $query_info = "智能组合搜索(" . count($keywords) . " 个关键词):\"" . $search_term . "\"";

            } else {
                // 单关键词或指定字段搜索
                $keyword = $keywords[0];

                switch ($search_type) {
                    case 'generic_name':
                        $sql = "SELECT * FROM drug_info WHERE 通用名称 LIKE :term ORDER BY 通用名称, 生产企业";
                        $query_info = "通用名称";
                        break;
                    case 'trade_name':
                        $sql = "SELECT * FROM drug_info WHERE 商品名称 LIKE :term ORDER BY 商品名称, 生产企业";
                        $query_info = "商品名称";
                        break;
                    case 'manufacturer':
                        $sql = "SELECT * FROM drug_info WHERE 生产企业 LIKE :term ORDER BY 生产企业, 通用名称";
                        $query_info = "生产企业";
                        break;
                    case 'approval_number':
                        $sql = "SELECT * FROM drug_info WHERE 批准文号 LIKE :term ORDER BY 批准文号";
                        $query_info = "批准文号";
                        break;
                    default:
                        // 智能模式单关键词:搜索所有主要字段
                        $sql = "SELECT * FROM drug_info WHERE 
                                通用名称 LIKE :term OR 
                                商品名称 LIKE :term OR 
                                生产企业 LIKE :term OR 
                                批准文号 LIKE :term OR 
                                相关疾病 LIKE :term OR 
                                适应症 LIKE :term 
                                ORDER BY 通用名称, 生产企业";
                        $query_info = "智能搜索";
                }
                $sql .= " LIMIT 100";
                $params = ['term' => "%{$keyword}%"];
                $query_info .= " 包含 \"{$keyword}\"";
            }

            $stmt = $pdo->prepare($sql);
            $stmt->execute($params);
            $results = $stmt->fetchAll();

            $query_info .= " 的药品,共找到 " . count($results) . " 条结果";

        } catch (PDOException $e) {
            $error = "数据库查询失败: " . $e->getMessage();
        }
    } else {
        $error = "请输入查询关键词";
    }
}

// 获取数据库统计信息
$db_stats = '';
try {
    $pdo = new PDO('sqlite:' . DB_PATH);
    $stmt = $pdo->query("SELECT COUNT(*) as total FROM drug_info");
    $total = $stmt->fetch()['total'];
    $db_stats = "数据库共收录 {$total} 条药品信息";
} catch (PDOException $e) {
    $db_stats = "无法连接数据库";
}

// 辅助函数:安全输出
function safe_output($value) {
    return !empty($value) && $value !== '-' ? nl2br(htmlspecialchars($value)) : '<span style="color: #bbb;">暂无</span>';
}
?>

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>药品数据库查询系统</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body {
            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Microsoft YaHei", sans-serif;
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            min-height: 100vh;
            padding: 20px;
        }

        .container {
            max-width: 1400px;
            margin: 0 auto;
        }

        .header {
            background: white;
            border-radius: 10px;
            padding: 25px 30px;
            margin-bottom: 20px;
            box-shadow: 0 10px 30px rgba(0,0,0,0.2);
        }

        h1 {
            color: #667eea;
            margin-bottom: 8px;
            font-size: 26px;
        }

        .db-stats {
            color: #666;
            font-size: 14px;
        }

        .search-box {
            background: white;
            border-radius: 10px;
            padding: 25px 30px;
            margin-bottom: 20px;
            box-shadow: 0 10px 30px rgba(0,0,0,0.2);
        }

        .search-hint {
            color: #667eea;
            font-size: 13px;
            margin-bottom: 15px;
            padding: 10px;
            background: #f0f4ff;
            border-radius: 5px;
            border-left: 3px solid #667eea;
        }

        .search-form {
            display: flex;
            gap: 10px;
            flex-wrap: wrap;
        }

        .search-type {
            padding: 12px;
            border: 2px solid #e0e0e0;
            border-radius: 5px;
            font-size: 15px;
            flex: 0 0 140px;
            background: white;
        }

        .search-input {
            padding: 12px;
            border: 2px solid #e0e0e0;
            border-radius: 5px;
            font-size: 15px;
            flex: 1;
            min-width: 250px;
        }

        .search-input:focus {
            outline: none;
            border-color: #667eea;
        }

        .search-btn {
            padding: 12px 30px;
            background: #667eea;
            color: white;
            border: none;
            border-radius: 5px;
            font-size: 15px;
            cursor: pointer;
            transition: background 0.3s;
            font-weight: 500;
        }

        .search-btn:hover {
            background: #5568d3;
        }

        .message {
            background: white;
            border-radius: 10px;
            padding: 15px 20px;
            margin-bottom: 20px;
            box-shadow: 0 5px 15px rgba(0,0,0,0.1);
        }

        .error {
            background: #fee;
            color: #c33;
            border-left: 4px solid #c33;
        }

        .info {
            background: #e7f3ff;
            color: #0066cc;
            border-left: 4px solid #0066cc;
        }

        .results {
            background: white;
            border-radius: 10px;
            padding: 20px;
            box-shadow: 0 10px 30px rgba(0,0,0,0.2);
        }

        .drug-card {
            border: 1px solid #ddd;
            border-radius: 8px;
            margin-bottom: 20px;
            overflow: hidden;
            transition: all 0.3s;
            background: #fafafa;
        }

        .drug-card:hover {
            border-color: #667eea;
            box-shadow: 0 4px 15px rgba(102, 126, 234, 0.15);
        }

        /* 核心信息区 */
        .drug-header {
            background: white;
            padding: 20px 25px;
            border-bottom: 2px solid #f0f0f0;
        }

        .drug-title-row {
            display: flex;
            align-items: baseline;
            gap: 15px;
            margin-bottom: 15px;
            flex-wrap: wrap;
        }

        .drug-generic-name {
            font-size: 22px;
            font-weight: bold;
            color: #333;
        }

        .drug-trade-name {
            font-size: 16px;
            color: #667eea;
            font-weight: 500;
        }

        .drug-badges {
            display: flex;
            gap: 8px;
            flex-wrap: wrap;
        }

        .badge {
            display: inline-block;
            padding: 4px 12px;
            background: #f0f0f0;
            border-radius: 4px;
            font-size: 12px;
            color: #666;
        }

        .badge.primary {
            background: #e7f3ff;
            color: #0066cc;
        }

        /* 基础信息网格 */
        .basic-info-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
            gap: 12px;
            padding: 20px 25px;
            background: white;
        }

        .info-row {
            display: flex;
            gap: 10px;
            font-size: 14px;
            line-height: 1.6;
        }

        .info-label {
            font-weight: 600;
            color: #555;
            min-width: 80px;
            flex-shrink: 0;
        }

        .info-value {
            color: #333;
            flex: 1;
        }

        /* 详细说明区 */
        .drug-details {
            padding: 20px 25px;
            background: white;
        }

        .detail-block {
            margin-bottom: 20px;
            padding-bottom: 20px;
            border-bottom: 1px solid #f0f0f0;
        }

        .detail-block:last-child {
            border-bottom: none;
            margin-bottom: 0;
            padding-bottom: 0;
        }

        .detail-title {
            font-weight: bold;
            color: #667eea;
            margin-bottom: 8px;
            font-size: 15px;
        }

        .detail-content {
            color: #555;
            line-height: 1.8;
            font-size: 14px;
        }

        .section-divider {
            height: 2px;
            background: #f0f0f0;
            margin: 0;
        }

        .no-results {
            text-align: center;
            padding: 40px;
            color: #999;
            font-size: 16px;
        }

        @media (max-width: 768px) {
            .basic-info-grid {
                grid-template-columns: 1fr;
            }
        }

        @media print {
            body {
                background: white;
            }
            .search-box, .header {
                display: none;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="header">
            <h1>药品数据库查询系统</h1>
            <div class="db-stats"><?php echo htmlspecialchars($db_stats); ?></div>
        </div>

        <div class="search-box">
            <div class="search-hint">
                &#128161; <strong>智能搜索提示:</strong>输入多个关键词用空格分隔,如 "阿莫西林 进口"、"布洛芬 儿童",系统将自动组合匹配
            </div>
            <form method="POST" class="search-form">
                <select name="search_type" class="search-type">
                    <option value="smart" <?php echo $search_type === 'smart' ? 'selected' : ''; ?>>智能搜索</option>
                    <option value="generic_name" <?php echo $search_type === 'generic_name' ? 'selected' : ''; ?>>通用名称</option>
                    <option value="trade_name" <?php echo $search_type === 'trade_name' ? 'selected' : ''; ?>>商品名称</option>
                    <option value="manufacturer" <?php echo $search_type === 'manufacturer' ? 'selected' : ''; ?>>生产企业</option>
                    <option value="approval_number" <?php echo $search_type === 'approval_number' ? 'selected' : ''; ?>>批准文号</option>
                </select>
                <input type="text" name="search_term" class="search-input"
                       placeholder="如:阿莫西林 进口"
                       value="<?php echo htmlspecialchars($search_term); ?>" required>
                <button type="submit" class="search-btn">&#128269; 查询</button>
            </form>
        </div>

        <?php if ($error): ?>
            <div class="message error">
                &#10060; <?php echo htmlspecialchars($error); ?>
            </div>
        <?php endif; ?>

        <?php if ($query_info): ?>
            <div class="message info">
                &#8505;&#65039; <?php echo htmlspecialchars($query_info); ?>
            </div>
        <?php endif; ?>

        <?php if (!empty($results)): ?>
            <div class="results">
                <?php foreach ($results as $drug): ?>
                    <div class="drug-card">
                        <!-- 核心信息区 -->
                        <div class="drug-header">
                            <div class="drug-title-row">
                                <span class="drug-generic-name">
                                    <?php echo htmlspecialchars($drug['通用名称'] ?? '未知药品'); ?>
                                </span>
                                <?php if (!empty($drug['商品名称'])): ?>
                                    <span class="drug-trade-name">
                                        [<?php echo htmlspecialchars($drug['商品名称']); ?>]
                                    </span>
                                <?php endif; ?>
                            </div>

                            <div class="drug-badges">
                                <?php if (!empty($drug['药品性质'])): ?>
                                    <span class="badge primary"><?php echo htmlspecialchars($drug['药品性质']); ?></span>
                                <?php endif; ?>
                                <?php if (!empty($drug['药品分类'])): ?>
                                    <span class="badge"><?php echo htmlspecialchars($drug['药品分类']); ?></span>
                                <?php endif; ?>
                            </div>
                        </div>

                        <!-- 基础信息网格 -->
                        <div class="basic-info-grid">
                            <div class="info-row">
                                <span class="info-label">生产企业</span>
                                <span class="info-value"><?php echo safe_output($drug['生产企业']); ?></span>
                            </div>

                            <div class="info-row">
                                <span class="info-label">批准文号</span>
                                <span class="info-value"><?php echo safe_output($drug['批准文号']); ?></span>
                            </div>

                            <div class="info-row">
                                <span class="info-label">规格</span>
                                <span class="info-value"><?php echo safe_output($drug['规格']); ?></span>
                            </div>

                            <div class="info-row">
                                <span class="info-label">汉语拼音</span>
                                <span class="info-value"><?php echo safe_output($drug['汉语拼音']); ?></span>
                            </div>

                            <div class="info-row">
                                <span class="info-label">贮藏</span>
                                <span class="info-value"><?php echo safe_output($drug['贮藏']); ?></span>
                            </div>

                            <div class="info-row">
                                <span class="info-label">有效期</span>
                                <span class="info-value"><?php echo safe_output($drug['有效期']); ?></span>
                            </div>

                            <?php if (!empty($drug['相关疾病'])): ?>
                            <div class="info-row">
                                <span class="info-label">相关疾病</span>
                                <span class="info-value"><?php echo safe_output($drug['相关疾病']); ?></span>
                            </div>
                            <?php endif; ?>

                            <?php if (!empty($drug['性状'])): ?>
                            <div class="info-row">
                                <span class="info-label">性状</span>
                                <span class="info-value"><?php echo safe_output($drug['性状']); ?></span>
                            </div>
                            <?php endif; ?>
                        </div>

                        <div class="section-divider"></div>

                        <!-- 详细说明区 -->
                        <div class="drug-details">
                            <?php if (!empty($drug['主要成份'])): ?>
                            <div class="detail-block">
                                <div class="detail-title">主要成份</div>
                                <div class="detail-content"><?php echo safe_output($drug['主要成份']); ?></div>
                            </div>
                            <?php endif; ?>

                            <?php if (!empty($drug['适应症'])): ?>
                            <div class="detail-block">
                                <div class="detail-title">适应症</div>
                                <div class="detail-content"><?php echo safe_output($drug['适应症']); ?></div>
                            </div>
                            <?php endif; ?>

                            <?php if (!empty($drug['用法用量'])): ?>
                            <div class="detail-block">
                                <div class="detail-title">用法用量</div>
                                <div class="detail-content"><?php echo safe_output($drug['用法用量']); ?></div>
                            </div>
                            <?php endif; ?>

                            <?php if (!empty($drug['不良反应'])): ?>
                            <div class="detail-block">
                                <div class="detail-title">不良反应</div>
                                <div class="detail-content"><?php echo safe_output($drug['不良反应']); ?></div>
                            </div>
                            <?php endif; ?>

                            <?php if (!empty($drug['禁忌'])): ?>
                            <div class="detail-block">
                                <div class="detail-title">禁忌</div>
                                <div class="detail-content"><?php echo safe_output($drug['禁忌']); ?></div>
                            </div>
                            <?php endif; ?>

                            <?php if (!empty($drug['注意事项'])): ?>
                            <div class="detail-block">
                                <div class="detail-title">注意事项</div>
                                <div class="detail-content"><?php echo safe_output($drug['注意事项']); ?></div>
                            </div>
                            <?php endif; ?>

                            <?php if (!empty($drug['孕妇及哺乳期妇女用药'])): ?>
                            <div class="detail-block">
                                <div class="detail-title">孕妇及哺乳期妇女用药</div>
                                <div class="detail-content"><?php echo safe_output($drug['孕妇及哺乳期妇女用药']); ?></div>
                            </div>
                            <?php endif; ?>

                            <?php if (!empty($drug['儿童用药'])): ?>
                            <div class="detail-block">
                                <div class="detail-title">儿童用药</div>
                                <div class="detail-content"><?php echo safe_output($drug['儿童用药']); ?></div>
                            </div>
                            <?php endif; ?>

                            <?php if (!empty($drug['老人用药'])): ?>
                            <div class="detail-block">
                                <div class="detail-title">老人用药</div>
                                <div class="detail-content"><?php echo safe_output($drug['老人用药']); ?></div>
                            </div>
                            <?php endif; ?>

                            <?php if (!empty($drug['药物相互作用'])): ?>
                            <div class="detail-block">
                                <div class="detail-title">药物相互作用</div>
                                <div class="detail-content"><?php echo safe_output($drug['药物相互作用']); ?></div>
                            </div>
                            <?php endif; ?>

                            <?php if (!empty($drug['药理毒理'])): ?>
                            <div class="detail-block">
                                <div class="detail-title">药理毒理</div>
                                <div class="detail-content"><?php echo safe_output($drug['药理毒理']); ?></div>
                            </div>
                            <?php endif; ?>

                            <?php if (!empty($drug['药代动力学'])): ?>
                            <div class="detail-block">
                                <div class="detail-title">药代动力学</div>
                                <div class="detail-content"><?php echo safe_output($drug['药代动力学']); ?></div>
                            </div>
                            <?php endif; ?>
                        </div>
                    </div>
                <?php endforeach; ?>
            </div>
        <?php elseif ($_SERVER['REQUEST_METHOD'] === 'POST' && empty($error)): ?>
            <div class="results">
                <div class="no-results">&#128533; 未找到符合条件的药品信息</div>
            </div>
        <?php endif; ?>
    </div>
</body>
</html>



Great works are not done by strength, but by persistence! 历尽艰辛的飞升者,成了围剿孙悟空的十万天兵之一。
相信我 学习就是不断的重复 不需要什么技巧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号


免责声明:
本站所发布的第三方软件及资源(包括但不仅限于文字/图片/音频/视频等仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢某程序或某个资源,请支持正版软件及版权方利益,注册或购买,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To: admin@cdsy.xyz

QQ|Archiver|手机版|小黑屋|城东书院 ( 湘ICP备19021508号-1|湘公网安备 43102202000103号 )

GMT+8, 2025-10-15 03:55 , Processed in 0.049415 second(s), 27 queries .

Powered by Discuz! CDSY.XYZ

Copyright © 2019-2025, Tencent Cloud.

快速回复 返回顶部 返回列表