gpt4 book ai didi

php - 为多个 (128) 数据库值创建 (PHP) 重定向功能的有效方法

转载 作者:搜寻专家 更新时间:2023-10-30 23:47:00 25 4
gpt4 key购买 nike

目前我正在开发一个网页,其中正在从数据库中获取某些数据并将其显示给用户。此信息是关于某些项目信息和这些项目的主要合作伙伴。我想实现一个功能,用户可以单击主要合作伙伴(链接),该链接会将此用户重定向到另一个页面(所有组织的数据库信息都在该页面上)但是使用预定义搜索仅与点击的主要合作伙伴链接相同的组织。

我找到了一个关于如何做到这一点的解决方案,但问题是该解决方案(我在下面进一步描述)对于多个 (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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com