基于PHP / jQuery的学校项目

时间:2011-09-10 20:58:04

标签: php jquery

我正在开发一个父母晚间预订系统作为我的A级编程项目的一部分,但我刚刚陷入困境。 我会尝试在这篇文章中尽我所能地解释这个项目,所以我可以让你们清楚地了解应用程序的功能。

到目前为止: 我用php创建了一种语言选择器函数,它在根据cookie登录之前获取用户语言选择。这是脚本的代码(是的,现在非常混乱,但我稍后会修复它):

function check_language() { 

//directory name for the custom defined languages.
$dir = 'languages'; 

//set a default language
$default = 'english';

//make sure that we have a language selected...
if (!isset($_COOKIE["lang"])){ 
    //if there is no cookie set, set one.
    setcookie("lang", "english", time()+3600*24*365);
}else{ 
    $lang = ($_COOKIE["lang"]); 
} 

//build the path string.
$path = $dir."/".$lang.".php";


if (file_exists($path)) {
    //return the selected language pack directory.
    return $path;
}else{
    //protect the server, by returning the default language path...
    return $dir."/".$default.".php";
}

} 

每当我希望我的PHP脚本访问语言文件时,我会调用我创建的函数,然后在页面上包含语言文件,如下所示:

$lang = check_language();
include_once($lang); 

english.php文件......

$txt['languagename'] = "English";

//text for the index page...
$txt['titletext'] = 'Parents evening booking system'; 
$txt['welcometext1'] = 'Welcome to the parents evening booking system for '; 

welsh.php文件......

$txt['languagename'] = "Cymraeg";

//text am y tudalen index...
$txt['titletext'] = 'System bwcio noson rhieni'; 
$txt['welcometext1'] = 'Croeso i system bwcio noson rhieni '; 

因此,例如,如果用户cookie包含'welsh',则会包含文件welsh.php,并且我可以使用提供的翻译访问关联数组($ txt)。 到目前为止,我的剧本部分完美无缺。

现在我正在编写管理页面,我需要一个选项,可以通过管理面板将学年添加到数据库中。 这是我对该怎么做有点困惑的地方,因为在威尔士语中,字符串(例如'10年')将是'blwyddyn 10'。所以这意味着我需要为所有语言文件的关联数组添加另一个元素,并使用所需语言的字符串,以便在脚本中访问它。 (如果这有任何意义的话)。

我在数据库中为所有语言创建了一个表,如下所示:

languageid     name         filename
1              English  english.php
2              Welsh    welsh.php

然后我编写了这段代码来连接数据库并为数据库中的每种语言创建一个输入框,以及一个“翻译ID键”输入框。

include'/inc/functions.php');
ConnectToDB();

$query = "SELECT * FROM languages WHERE 1";
$result = mysql_query($query);

$languages = array();

while($row = mysql_fetch_assoc($result)){
    $languages[] = $row['name'];
}

    echo 'Translation key id: <input type="text" name="languagetermkey"/>';
    echo '</br>';

    foreach($languages as $item){
        echo 'Year name ('.$item. " string):";
        echo '<input type="text" name="'.$item.'String'.'"/>'; //e.g "EnglishString"
        echo "</br>";
    }

现在,如果我想将上述术语(两个输入框中的文本)添加到我的语言文件(“english.php”和“welsh.php”)中,我将如何发送带有ajax post请求的数组?

以前我一直在使用这段代码,但我想这次我想做的不适用:(

$.ajax({
  type: 'post',
  url: 'add_class.php',
  data: 'classname=' + "test",
  error: function(){
        alert('There was a problem adding the class !');
    },
  success: function() {
        alert("Class has been added successfuly");
    }
});

这是采取这种做法的正确方法吗?如果没有,有人可以指导我朝着正确的方向做什么吗?我只是有点困惑,这是我第一次使用jQuery。

我知道这篇文章很长,我很欣赏人们阅读整篇文章的努力。

预先感谢任何回复(Y)

3 个答案:

答案 0 :(得分:2)

关于使用AJAX发送数组的一点,您可以序列化一个表单并传递它,这意味着您可以访问它,就像它是来自PHP的普通POST一样。

$.ajax({
  type: 'post',
  url: 'add_class.php',
  data: $('#formID').serialize(),
  error: function(){
        alert('There was a problem adding the class !');
    },
  success: function() {
        alert("Class has been added successfuly");
    }
});

对于“10年级”,您可以像这样使用sprintfvsprintf - 示例同时显示sprintf和vsprintf。

$year = 'Year %d';
$yearWelsh = 'Blwyddyn %d';

echo sprintf($year, 10) . ', or in Welsh, we say ' . vsprintf($yearWelsh, array(10));

答案 1 :(得分:0)

如果我理解正确,您希望在选择新语言时更改语言cookie。您可以使用jQuery设置此cookie,然后加载页面。然后,Php可以选择正确的语言文件。

当然还有很多其他方法可以做同样的事情。希望这会有所帮助。

答案 2 :(得分:0)

$ .ajax 是一个更复杂但有效的方法,通过jquery发送ajax请求。您正在寻找类似的内容 - jQuery getJSONjQuery get。方案是一样的:

$.get('{queryURL}, data, function(response) { /* do something with the response */ });

数据变量可以是由jQuery的form.serialize()创建的数组,对象或字符串。