如何根据网址和数据库数据加载不同的文本框?

时间:2014-06-10 12:33:59

标签: javascript php

我正在尝试根据页面的url和数据库中的先前设置来控制不同文本框的加载。

例如:我有一个如下所示的数据库表:

db settings

浏览 www.mysite.com/us/mypage 时,我希望自己的页面看起来像这样 US

浏览 www.mysite.com/canada/mypage

Canada

浏览 www.mysite.com/italy/mypage

Italy

所以我试图了解如何设计我的代码。它应该只在客户端解决,在页面加载时使用javascript,还是应该在服务器端使用控制器处理。

谢谢!

3 个答案:

答案 0 :(得分:1)

首先,因为你已经有了规则。首先进行设置。其次,你需要解析网址(获取国家并将其视为slu g)并将其提供给规则。第三,如果需要打印,只需使用正常的foreach循环和内部条件(1/0或true / false)。考虑这个例子:

<?php

// $current_url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$url1 = 'www.mysite.com/us/mypage';
$url2 = 'www.mysite.com/canada/mypage';
$url3 = 'www.mysite.com/italy/mypage';
// dummy values

// setup the rules
$rules = array(
    'us' => array(
        'textbox1' => 1,
        'textbox2' => 1,
        'textbox3' => 1,
        'textbox4' => 1,
    ),
    'canada' => array(
        'textbox1' => 1,
        'textbox2' => 1,
        'textbox3' => 0,
        'textbox4' => 0,
    ),
    'italy' => array(
        'textbox1' => 1,
        'textbox2' => 0,
        'textbox3' => 1,
        'textbox4' => 0,
    ),
);

// properly parse the url
$current_url = $url2; // i just chosen canada for this example
if (!preg_match("~^(?:f|ht)tps?://~i", $current_url)) {
    $current_url = "http://" . $current_url;
}
$current_url = array_filter(explode('/', parse_url($current_url, PHP_URL_PATH)));
$country = reset($current_url);

?>

<!-- after getting the slug/country, loop it with a condition -->
<form method="POST" action="">
<?php foreach($rules[$country] as $key => $value): ?>
    <?php if($value == 1): ?>
        <label><?php echo $key; ?></label>
        <input type="text" name="<?php echo $key; ?>" /><br/>
    <?php endif; ?>
<?php endforeach; ?>
    <input type="submit" name="submit" />
</form>

<!-- textbox1 and textbox3 should be the only inputs in here since i picked canada -->

答案 1 :(得分:0)

您必须设置条件并检查值

if($isset($textbox) && $textbox==1)
{
//print the label and text box 
}

答案 2 :(得分:0)

最好的办法是尝试在服务器端获得输出。 我认为以下代码对您有用。

尝试从url获取国家/地区代码并将数据库值获取到$ textboxA数组中,然后运行以下代码。

$textboxA = array(1,1,0,1);
foreach($textboxA as $key => $value){
    switch($key){
        case 0: if($value) print $textbox1;
        break;
        case 1: if($value) print $textbox2;
        break;
        case 2: if($value) print $textbox3;
        break;
        case 3: if($value) print $textbox4;
        break;
        default: print "";
    }
}