アプリ版:「スタンプのみでお礼する」機能のリリースについて

PHPによる行データのアップダウン

フォームからデータ行をGETした内容をアップダウンさせたいのですが、どうにも入れ替えができません。
プログラムコードのアドバイスをください。


*ログファイルの中(data.dat)
ゴリラ
チューリップ
ばなな
ストロベリー
ペンギン



<?php
$data = "data.dat";

function row_up() {
$lines = @file($data);
$lines[$ont] = $lines[$_GET[row]]; //自分
$lines[$_GET[row]] = $lines[$_GET[row]-1]; //前の人

$fp = fopen($data,"w");
rewind($fp);
for($i=0;$i<count($lines);$i++) {

if($lines[$i] == $lines[$_GET[row]]){
fputs($fp,$lines[$_GET[row]]);
}
elseif($lines[$i] == $lines[$ont]){
fputs($fp,$lines[$ont]);
}
fputs($fp,$lines[$i]);
}
fclose($fp);
}


function row_down() {
$lines = @file($data);

$lines[$ont] = $lines[$_GET[row]]; //自分
$lines[$_GET[row]] = $lines[$_GET[row]+1]; //次の人

$fp = fopen($data,"w");
rewind($fp);
for($i=0;$i<count($lines);$i++) {

if($lines[$i] == $lines[$ont]){
fputs($fp,$lines[$ont]);
}
elseif($lines[$i] == $lines[$_GET[row]]){
fputs($fp,$lines[$_GET[row]]);
}
fputs($fp,$lines[$i]);
}
fclose($fp);
}


switch($_GET[mode]) {
case up:
row_up();
break;
case down:
row_down();
break;
default:
break;
}

?>

A 回答 (1件)

file_exists($data_fn = 'data.dat') or trigger_error("{$data_fn} is not found.", E_USER_ERROR);



$index = intval($_GET['row']);

$data = file($data_fn, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

switch($_GET['mode']) {
case 'up': $index > 1 && swap($data, $index, $index - 1); break;
case 'down': $index < count($data) && swap($data, $index, $index + 1); break;
}
file_put_contents($data_fn, implode(PHP_EOL, $data));


function swap(&$data, $index1, $index2) {
(isset($data[$index1]) && isset($data[$index2])) or trigger_error('Range error', E_USER_WARNING);

$tmp = $data[$index1];
$data[$index1] = $data[$index2];
$data[$index2] = $tmp;
return -1;
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!