我正致力于保存各种按钮和链接的点击数据。我在服务器上使用PHP,每按一次按钮使用AJAX,在请求中发送一些信号,指定点击了哪个按钮。服务器收到此信息,在DB中找到相应的行,然后递增计数器值。如果没有找到行(添加了新按钮),则会创建一个新行。
所以我创建了以下类:
class MysqlDatabase extends Database
{
protected $db_driver;
protected $db_host;
protected $db_name;
protected $user;
protected $password;
// Allow for 1 query to be set at any time
protected $query;
public function getClicks($category)
{
$clicks = $this->db->prepare("SELECT num FROM clicks WHERE category = Five");
$clicks->execute();
$num = $clicks->fetch(PDO::FETCH_ASSOC);
print_r($num);
}
private function checkCategory($category)
{
// This needs to check to see if the category for the button exists...
$query = "SELECT 1 FROM clicks WHERE category = :category";
$prepare = $this->db->prepare($query);
$prepare->bindParam(':category', $category);
$prepare->execute();
$truth = $prepare->fetch(PDO::FETCH_ASSOC);
if(!$truth){
return 0;
}
else{
return 1;
}
}
public function addClickRow($category)
{
$clicks = 0;
$query = $this->db->prepare("INSERT INTO clicks (category, num) VALUES (:category, :num)");
$query->bindParam(":category", $category);
$query->bindParam(':num' , $clicks, PDO::PARAM_INT);
$query->execute();
}
public function incrementClick($category)
{
$checked = $this->checkCategory($category);
if($checked == 0){
$this->addClickRow($category);
}
$query = $this->db->prepare("UPDATE clicks SET num = num + 1 WHERE category = :category");
$query->bindParam(":category", $category);
$truth = $query->execute();
}
}
CODE TL; DR:
$this->addClickRow
仅供参考,班级Database
只是建立了一种联系。大多数功能都驻留在这个类上。另外,请忽略一些不一致的内容,例如我如何停止使用$query
属性。
我觉得我每个项目至少会来到这个十字路口,而且它总是一致的。我可以有一个方法返回1值并接受1个参数并简单地循环它直到我拥有一切。或者我可以创建一个没有参数的方法,只返回所有内容,并在服务器/客户端过滤,只显示用户想要看到的内容。
简短示例:假设用户想要为他创建的3个链接点击数据。他们使用的界面可以允许指定选项(这样他们就可以轻松选择这3个链接并仅为他们检索数据 - 可能他们有6个总链接但只想要3个信息)。
至于代码:该方法可以接受1个参数,检索值,并在客户端或服务器端循环(这里有2个选项)。或者,该方法可以接受可变数量的参数(然后使用splat运算符解包)。或者,该方法可以接受0个参数,返回EVERYTHING,然后在客户端OR服务器端进行过滤(另外2个不同的选择)。我几乎可以混合和匹配这些一般的想法,并有40种不同的组合,以达到相同的结果。
我应该为这种情况做最直观的事情吗?或者是某种最佳实践。我觉得检索单个值是最模块化和最灵活的,但也有时候它可能是不灵活或恼人的实现,比如我想要检索所有值 - 我必须生成30个AJAX请求或只是做1 AJAX请求服务器上的一个单独方法,该方法将调用此检索方法30次。
是否还有一个词来描述这个难题?
编辑:很抱歉这篇长篇文章,我试图在保留关键点的同时尽可能地压缩它。
答案 0 :(得分:1)
使用数组的1个参数如何使用 中的 过滤点击 条件?
示例 php> = 5.6
<div ng-app>
<ng-form name="namesForm_{{$index}}" ng-repeat="name in [1, 2]">
<input type="text"
placeholder="{{$index}}"
ng-required="true"
ng-model="test"
name="hey" />
<button ng-disabled="!namesForm_{{$index}}.$valid">
send
</button>
<br />
</ng-form>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.min.js"></script>