我有点紧张,这是我在这里的第一个问题,但我在这方面做得非常努力,可以使用一些帮助。
我制作了一个处理草图,通过向php脚本发送查询来访问,排序和保存csv列表。它返回已排序的列表并显示它们。 (我不想在以后进入xml或sql)
现在我想尝试对列表中的条目进行投票。
在我下面的代码片段中,我有一个查询来自处理,通过发送字符串对条目进行投票。
我想检查从数组中的字段处理传入的条目字符串,并通过添加一个投票来调整分数。
下面的代码不会破坏我的其他正在运行的代码,但也不会调整投票。 我怀疑有一些方法我没有正确访问字符串值,并想知道是否有人可以建议我....
$ListV[]='score';
$ListV[]='entry';
<Snip>
if ($type == "voteUp") {
$Entry = $_GET['Entry'];
if(($handle = fopen("List.csv", 'r')) !== FALSE) {
set_time_limit(0);
while(($data = fgetcsv($handle,0,',')) !== FALSE) {
$ListV[$row]=$data;
$row++;
}
fclose ($handle);
$count = count($ListV);
for($i=0; $i<$count; $i++){ //foreach???
if ($rListV[$i][1]==$Entry || strcmp($rListV[$i][1],$Entry)==0) {
$score =int($rListV[$i][0]);
$rListV[$i][0]=$score+1;
}
}
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=file.csv');
$listVote = fopen("List.csv",'w');
foreach ($ListV as $values) {fputcsv($listVote,$values);}
fclose($listVote);
}
}
我相信我已经构建了一个可行的2d数组,其中包含得分和输入字段。 我把得分放在首位的原因是我可以利用键排序,并在需要时使用数组索引(例如在php中)。
请注意,我不是试图通过此列表中的投票来更改索引,只是得分。 所以结果如下:
投票前:
2157 Kittenz
2157 Dogz
11 Antelopez
投票给Dogz后;
2157 Kittenz
2158 Dogz
11 Antelopez
所以,Kittenz总是索引1,Dogz总是索引2,依此类推...... (键排序稍后会给出一个排序数组)
答案 0 :(得分:2)
调整投票计数的(过于复杂)部分与不存在的$rListV
一起使用,然后将原始$ListV
放回文件中。
答案 1 :(得分:0)
做到了,我正在回答。
由于php中没有稳定的排序(没有附加代码),我保持表的排序和显示与主csv列表分开。
以下是从处理和投票中获取条目的代码;
else if ($type == "voteUp") { //vote up query
$eVote = $_GET['eVote']; //get voted string
$vList = loadCSV('List.csv'); //load main csv List
$count = count($vList); //string search and add to score
for($i=0; $i<$count; $i++){
if ($vList[$i]['entry']==$eVote || strcmp($vList[$i]['entry'],$eVote )==0) {
$vList[$i]['score'] += 1;
}
saveCSV('List.csv',$vList); //save new score to main csv List
}
}
并加载和保存csv函数......
function loadCSV($file)
{
$handle = fopen($file, 'r');
$header = fgetcsv($handle, 0, ",");
$data = array();
while ($row = fgetcsv($handle, 0, ",")) {
$row_assoc = array();
foreach ($row as $key => $field) {
$row_assoc[$header[$key]] = $field;
}
$data[] = $row_assoc;
}
fclose($handle);
return $data;
}
function saveCSV($file,$array)
{
$handle = fopen($file, 'w');
$header = array("score","entry");
fputcsv ($handle, $header, ",");
foreach($array as $row){
fputcsv($handle, $row, ",");
}
fclose($handle);
}