我正在使用PHP和MySQL.
如果我使用INSERT ON DUPLICATE UPDATESQL语句,那么如何知道上一次操作是否是成功插入而不是更新或不成功插入?
假设是有问题的表没有使用自动增量,所以我不能用一个mysql_insert_id来帮助我找出答案.
我的情况:
向用户呈现表格或项目列表.在每个项目旁边,他们可以单击一个复选框来选择它,然后在底部是一个选择框,其中显示"使用所选项目...",以及诸如"删除","移动到项目","下载"等内容你知道这笔交易 - 批量操作.有些操作会立即执行,不需要自己的视图,但是其他操作需要一个中间视图(例如:"将这些操作移动到哪个项目?").
由于每个单独的操作都由不同的操作(可能是不同的控制器)处理,但是表单只能发布到一个地址,我需要一个操作来获取发布的数据并将其发送到适当的位置.
使用redirect()也不会起作用,因为这需要在不久的将来进行AJAX.
基本上我只想要一个动作,它将委托给不同的控制器/动作,就像原始请求一样:维护帖子数据,渲染视图等.
有任何想法吗?
我有一个我写的javascript函数,它被用来包含一个外部JS文件,但只有一次.我需要这样一个函数的原因是因为在通过AJAX加载某些内容时调用它并且我需要为该内容运行特定于页面的代码(不,只是使用.live不会覆盖它).
这是我的尝试,为简洁而缩短:
$.include_once = function(filename) {
if ($("script[src='" + filename + "']").length === 0) {
var $node = $("<script></script>")
.attr({
src : filename,
type : "text/javascript"
})
;
$(document.body).append($node);
}
};
Run Code Online (Sandbox Code Playgroud)
这样可以正常工作:调用该函数,它加载外部文件,并在加载时运行该文件.完善.
问题是它将始终重新加载该外部文件:我用来检查脚本是否存在的查询总是找不到任何东西!
在调试时,我添加了一些行:
alert($("script").length); // alerts: 4
$(document.body).append($node);
alert($("script").length); // alerts: 4
Run Code Online (Sandbox Code Playgroud)
查看动态源代码(Firebug的HTML选项卡),我根本找不到脚本标记.
我知道我可以维护一个我以前包含的文件数组,但是我希望使用这样的方法,如果它工作的话,它看起来更健壮了,因为不是所有的JS文件都是以这种方式包括在内.
任何人都可以解释在第二个片段中看到的行为吗?
鉴于这样的简化文档:
<div id="outerDiv">
<div id="innerDiv">
<input id="theInput" />
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
如果我点击#theInput,点击事件会冒泡到#innerDiv然后#outerDiv.我想做的就是设置一个处理程序#outerDiv来监听这些点击,然后检查'bubble-chain'以查看哪些元素之前已收到过同样的点击事件.
因此,例如,点击#theInput处理程序#outerDiv会给我[#outerDiv, #innerDiv, #theInput].如果我在外面点击#theInput,但仍然在里面#innerDiv,结果将是[#outerDiv, #innerDiv]
只是为了澄清,实际文件并不像这样简单,每个级别可能有任意数量的儿童或兄弟姐妹.另外,当我提到时#theInput,我指的是元素本身,也就是说,我不是在寻找一个ID数组.最后,鉴于可能有任意数量的元素,我想避免为中间元素添加额外的处理程序.
jQuery在我家欢迎.
简而言之:我有两个可能不同的数组,我希望将差异/转换作为一系列"动作"(添加和删除).也就是说,在一个基本的例子中:
Current: [a, b, d]
Desired: [a, b, c, d]
Actions: Add c in position 2
Run Code Online (Sandbox Code Playgroud)
基本上,指令是如何转换当前数组,以便它具有与所需数组相同的成员和顺序.对于我的应用程序,每个更改都会触发更新UI等的事件,因此如果操作不是"冗余"的话,这将是非常可取的:也就是说,上面可能已经存在remove d, add c @ 2, add d @ 3,但这会导致其他地方的大量不需要的处理系统.
也许作为另一个可能有助于说明的例子:
Current: [a, b, d]
Desired: [b, c, d, a]
Actions: remove a, add c @ 1, add a @ 3
Run Code Online (Sandbox Code Playgroud)
我认为这是之前已经解决过的问题,但是搜索它有点困难,因为"数组差异"并没有给你正确的结果.
如果重要的话,我在Javascript中实现这个,但我想这个算法是语言无关的.
我正在研究一些绘制到画布的代码.代码的一部分在画布上绘制了一些线条.这些行的位置和颜色不会改变,但它们通常需要重新绘制,因为其他代码可能会影响它(例如:绘制在它的顶部).
可以有几百行绘制,在这些情况下,分析显示我需要大约200毫秒绘制,所以我想要稍微优化一下.
我注意到的一件事是,当绘制到画布时,您基本上是在路径上添加点,然后一旦准备好,您就可以填充或描绘该路径.虽然画布上的像素已经过时,但如果我能够保留对路径的引用,那么更新就像重新描绘先前构建的路径一样简单.
我的问题是:你到底怎么得到一个Path对象?
填充和描边方法似乎接受路径对象,规范定义了Path的方法,但我似乎无法在Path任何地方找到实际的类...
所以,回顾一下:
我有这样的事情:
function update() {
context.beginPath();
// lots of lines added to the default path...
context.moveTo(x1, y1); context.lineTo(somewhere, else);
context.moveTo(x2, y2); context.lineTo(somewhere, else);
context.stroke();
}
Run Code Online (Sandbox Code Playgroud)
我想要的是这样的:
function update() {
if (!this.path) {
this.path = new Path(); // <-- here's the magic
this.path.moveTo(x1, y2); this.path.lineTo(somewhere, else); // etc
}
this.path.stroke();
}
Run Code Online (Sandbox Code Playgroud) 我有一个通用接口和两个接口“Person”和“Employee”,它们扩展了第一个接口:
export interface Common {
id: number,
name: string
}
export interface Person extends Common {
age: number;
}
export interface Employee extends Common {
role: string;
}
Run Code Online (Sandbox Code Playgroud)
我需要一个与这些接口混合的数组,例如:
listOfPeople: Person[] | Employee[] = [{id: 1, name: 'George', age: 4}, {id: 2, name: 'Micheal', role: 'software developer'}];
Run Code Online (Sandbox Code Playgroud)
但这样我就得到了一个错误。获得我想要的结果的正确方法是什么?
我的语言是PHP,但算法应该相当普遍.
我有一个(比方说)评级的关联数组和给出评级的次数.
$ratings = array(
1 => 1,
2 => 3,
3 => 6,
4 => 3,
5 => 3
);
Run Code Online (Sandbox Code Playgroud)
这相当于:[1, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5],但考虑到我正在使用的数字,从第一种形式转换为第二种形式是非常低效的.
计算上述数字平均值的算法是什么?
使用PHP和MySQL,我有一个我正在尝试构建的论坛系统.我想知道的是,我如何设置它,以便当用户阅读论坛条目时,无论他们在哪个论坛,它都显示为该用户的JUST,直到有人在其上发帖.
目前,对于每个线程,我有一个带有PostID的表,并且具有发布它的UserID,将其链接到的ThreadID,实际的Post(作为Text),然后是它发布的日期/时间.
对于每个论坛中的线程列表,有threadID(主键),ThreadName,它所属的ForumID,NumPosts,NumViews,LastPostDateTime和CreateDateTime.有帮助吗?
我正在做一些工作来处理某个月的家庭批准的一些统计数据.我希望能够显示趋势 - 也就是说,自上个月以来哪些区域的相对增加或减少很大.
我的第一个天真的方法是计算两个月之间的百分比变化,但是当数据非常低时会出现问题 - 任何变化都会被放大:
// diff = (new - old) / old
Area | June | July | Diff |
--------------|--------|--------|--------|
South Sydney | 427 | 530 | +24% |
North Sydney | 167 | 143 | -14% |
Dubbo | 1 | 3 | +200% |
Run Code Online (Sandbox Code Playgroud)
我不想忽视任何区域或价值作为异常值,但我不希望Dubbo每月增加2个,超过南悉尼增加103个.有没有更好的方程式可以用来显示更有用的趋势信息?
此数据最终会在Google地图上绘制.在第一次尝试中,我只是将差异转换为"热图颜色"(蓝色 - 减少,绿色 - 没有变化,红色 - 增加).可能使用一些其它度量来改变每个区域的视图可能是一个解决办法,例如,改变基于批准或类似的东西的总数α通道,在这种情况下,多宝将是明亮的红色,但相当透明的,而南悉尼将更接近黄色但非常不透明.
有关显示此数据的最佳方式的任何想法?
php ×4
algorithm ×3
javascript ×3
jquery ×2
mysql ×2
statistics ×2
arrays ×1
cakephp ×1
canvas ×1
dom ×1
events ×1
forum ×1
google-maps ×1
html5 ×1
typescript ×1