- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
目前我正在开发一个网页,其中正在从数据库中获取某些数据并将其显示给用户。此信息是关于某些项目信息和这些项目的主要合作伙伴。我想实现一个功能,用户可以单击主要合作伙伴(链接),该链接会将此用户重定向到另一个页面(所有组织的数据库信息都在该页面上)但是使用预定义搜索仅与点击的主要合作伙伴链接相同的组织。
我找到了一个关于如何做到这一点的解决方案,但问题是该解决方案(我在下面进一步描述)对于多个 (128) 个组织来说并不是那么好/高效。所以问题是,你知道一个更好/更有效的解决方案来实现这一目标。要回答这个问题,您可能还需要一些背景信息:
背景信息
在输出的数据库信息中(在表格中完成)有几个信息列/标题,例如:
数据的获取是通过一个简单的查询完成的,其中某些数据库列具有特定的标识符。例如,项目网站列显然是一个链接,因此在查询中它是这样进行的: $SomeQueryVar = ("SELECT project_website as LINK FROM xxxx WHERE project_website ('$some_website') "); - 只是一个简短的例子来澄清事情。
对于显示,数据像这样被“捕获”:
if(count($SomeQueryVar)>0){
for($i=0;$i<count($SomeQueryVar);$i++){
echo "<tr>";
foreach($SomeQueryVar[$i] as $key=>$value){
echo "<td>";
$b=unserialize($value);
if($key =='LINK' && $value != NULL){
$first = true;
array_filter($b);
foreach($b as $y){
echo '<a href="'.$y.'">'."Project website".'</a>';
$first = false;
if(!$first) break;
}
} else {
echo $value;
}
echo "</td>";
}
echo "</tr>";
}
}
正如您在上面的代码中看到的,某些数据库列需要其他显示。例如,链接必须是可点击的,而不仅仅是纯文本。这些'异常' 被if $key == 捕获,对于只需要定期显示的数据(纯文本),最后插入的只是echo 的else $值。
我找到的解决方案
所以关于这个问题,我发现我可以使用项目页面上的 ?SomePage 创建重定向链接,并使用组织页面上的这个“附加链接值”来比较它。如果链接相等,则进行特定查询。但将代码粘贴到此处可能更容易:
“捕捉”部分为了捕捉特定的主要合作伙伴,我还在查询中使用了一个名为 ORG(代表组织)的标识符。所以这是我捕获组织表的代码:
if($key =='ORG' && $value != NULL){
$needle = array('Brainport','Development','BRAINPORT',
'brainport','DEVELOPMENT','development');
$needle2 = array('Casa','CASA', 'casa');
if (strpos_arr($value,$needle) !== false) {
echo '<a href="http://portal.e-ucare.eu/database/organisations/?a=brainport" >'.$value.'</a>';
}
if (strpos_arr($value,$needle2) !== false) {
echo '<a href="http://portal.e-ucare.eu/database/organisations/?a=casa" >'.$value.'</a>';
}
}
在上面的代码中,我刚刚为 2 个组织(brainport 和 casa)创建了它。对于这个解决方案,我使用了一个名为 strpos_arr 的函数,它在大海捞针中搜索针头;)所以在上面的代码中,我将针头设置为数据库中必须为其创建链接的名称。因此,例如,如果数据库中存在一家名为 Brainport 的公司,则此“捕手”将看到并显示该组织并使该名称可点击。
$needle 的 strpos_arr 函数如下:
function strpos_arr($value, $needle) {
if(!is_array($needle)) $needle = array($needle);
foreach($needle as $what) {
if(($pos = strpos($value, $what))!==false) return $pos;
}
return false;
}
在重定向页面中,代码还将捕获某些链接以对该链接进行查询——因此对于 brainport 链接,这是 http://portal.e-ucare.eu/database/organisations/?a=brainport -- 在第二页代码中,此链接是这样捕获的:
$host = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if($host == 'portal.e-ucare.eu/database/organisations/?a=brainport')
{
$link_word = "Brainport";
$tmp = $wpdb->get_results("
SELECT
name_of_company__organization, company_location,
company_website as LINK, organisation_type,
organisation_active_in_, organisation_scope,
organisation_files as DOC
FROM
wp_participants_database
WHERE
name_of_company__organization REGEXP ('$link_word')
ORDER BY
name_of_company__organization ASC
");
}
有了这个解决方案,我可以做我想做的事,但是就像我一开始说的,我不仅需要 2 个组织,还有 128 个组织! 这意味着我必须在两个页面上复制捕获代码块 128 次!! 这显然不是很有效..
那么有没有更有效的方法来实现这一点呢?抱歉,如果有点不清楚,但我发现很难轻易地写下来;)
无论如何,先谢谢你了!
最佳答案
你可以重写的第一部分
if($key =='ORG' && $value != NULL){
$needles = array(
'brainport'=>array('Brainport','Development','BRAINPORT','brainport','DEVELOPMENT','development'),
'casa'=>array('Casa','CASA', 'casa')
);
foreach($needles AS $nkey => $needle){
if(strpos_arr($value,$needle) !== false) {
echo "<a href='http://portal.e-ucare.eu/database/organisations/?a={$nkey}' >{$value}</a>";
}
}
}
对于第二部分,制作一个数组[编辑]
$link_words = array(
'portal.e-ucare.eu/database/organisations/?a=brainport'=>'Brainport',
'portal.e-ucare.eu/database/organisations/?a=casa'=>'Casa',
);
然后你可以使用
$host = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if(!empty($link_words[$host])){
$link_word = $link_words[$host];
$tmp = $wpdb->get_results("
SELECT
name_of_company__organization, company_location, company_website as LINK, organisation_type, organisation_active_in_, organisation_scope, organisation_files as DOC
FROM
wp_participants_database
WHERE
name_of_company__organization REGEXP ('$link_word')
ORDER BY
name_of_company__organization ASC
");
}
关于php - 为多个 (128) 数据库值创建 (PHP) 重定向功能的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27360631/
我正在尝试使用谷歌浏览器的 Trace Event Profiling Tool分析我正在运行的 Node.js 应用程序。选择点样本后,我可以在三种 View 之间进行选择: 自上而下(树) 自上而
对于一个可能是菜鸟的问题,我们深表歉意,但尽管在 SO 上研究了大量教程和其他问题,但仍找不到答案。 我想做的很简单:显示一个包含大量数据库存储字符串的 Android ListView。我所说的“很
我已经开始了一个新元素的工作,并决定给 Foundation 5 一个 bash,看看它是什么样的。在创建带有水平字段的表单时,我在文档中注意到的第一件事是它们使用大量 div 来设置样式。所以我在下
我有一个 Windows 窗体用户控件,其中包含一个使用 BeginInvoke 委托(delegate)调用从单独线程更新的第 3 方图像显示控件。 在繁重的 CPU 负载下,UI 会锁定。当我附加
我有一堆严重依赖dom元素的JS代码。我目前使用的测试解决方案依赖于 Selenium ,但 AFAIK 无法正确评估 js 错误(addScript 错误不会导致您的测试失败,而 getEval 会
我正在制作一款基于滚动 2D map /图 block 的游戏。每个图 block (存储为图 block [21][11] - 每个 map 总共 231 个图 block )最多可以包含 21 个
考虑到以下情况,我是前端初学者: 某个 HTML 页面应该包含一个沉重的图像(例如 - 动画 gif),但我不想强制客户缓慢地等待它完全下载才能享受一个漂亮的页面,而是我更愿意给他看一个轻量级图像(例
我正在设计一个小软件,其中包括: 在互联网上获取资源, 一些用户交互(资源的快速编辑), 一些处理。 我想使用许多资源(它们都列在列表中)来这样做。每个都独立于其他。由于编辑部分很累,我想让用户(可能
我想比较两个理论场景。为了问题的目的,我简化了案例。但基本上它是您典型的生产者消费者场景。 (我关注的是消费者)。 我有一个很大的Queue dataQueue我必须将其传输给多个客户端。 那么让我们
我有一个二元分类问题,标签 0 和 1(少数)存在巨大不平衡。由于测试集带有标签 1 的行太少,因此我将训练测试设置为至少 70-30 或 60-40,因此仍然有重要的观察结果。由于我没有过多地衡量准
我是一名优秀的程序员,十分优秀!