[PHP-users 12541] csvデータの配列ソートについてお願いします。

R_Yamaguchi php-users@php.gr.jp
Mon, 13 Jan 2003 22:47:17 +0900


This is a multi-part message in MIME format.

------=_NextPart_000_0019_01C2BB55.B9388AE0
Content-Type: text/plain;
	charset="iso-2022-jp"
Content-Transfer-Encoding: 7bit

HTMLファイルからPOSTで送られてきたデータをcsvファイルに収める前に、既存デー
タのIDと比較して昇順になるような方法を試したのですがうまくいきません。
言葉ではうまく伝わらないかもしれないので、以下、コードを載せていますのでご指
導ください。

送信用ファイル(index.html)
<html>
<body>
<form action="data.php" method="post">
id  <input type="text" name="formdata[]"><br>
link name <input type="text" name="formdata[]"><br>
link addr<input type="text" name="formdata[]"><br>
<input type="submit" value="go!">
</form>
</body>
</html>


受信ファイル(data.php)
/*既存データを読込*/
$fp = fopen("data.csv", "r");
    flock($fp, LOCK_EX);
    while($line = fgetcsv($fp, 1024)):
        foreach ($line as $key => $value):
        endforeach;

        この部分で既存データの読込をして、今送られてきたデータ($formdata)と
の比較をして
        昇順に並べ替え、下の書込に移りたい。

    endwhile;
    flock($fp, LOCK_UN);
fclose($fp);

/*昇順に並べ替えたデータを書込*/
$fp = fopen("data.csv", "a");
 flock($fp, LOCK_EX);

        必然的にここにも何か操作が必要ですよね。

 fputs($fp, implode(",", $formdata) . "\n");
 flock($fp, LOCK_UN);
fclose($fp);
?>

csvファイル(data.csv)
1,aaa,AAA
10,jjj,JJJ
5,eee,EEE
7,ggg,GGG
3,ccc,CCC

となってしまうところを、以下のようにしたいのですが、その方法を教えて下さい。
希望する形のcsvファイル
1,aaa,AAA
3,ccc,CCC
5,eee,EEE
7,ggg,GGG
10,jjj,JJJ


------=_NextPart_000_0019_01C2BB55.B9388AE0
Content-Type: text/html;
	charset="iso-2022-jp"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=3D"text/html; charset=3Diso-2022-jp" =
http-equiv=3DContent-Type>
<META content=3D"MSHTML 5.00.2920.0" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT=20
size=3D2>HTML=1B$B%U%!%$%k$+$i=1B(BPOST=1B$B$GAw$i$l$F$-$?%G!<%?$r=1B(Bcs=
v=1B$B%U%!%$%k$K<}$a$kA0$K!"4{B8%G!<%?$N=1B(BID=1B$B$HHf3S$7$F>:=3Dg$K$J$=
k$h$&$JJ}K!$r;n$7$?$N$G$9$,$&$^$/$$$-$^$;$s!#=1B(B</FONT></DIV>
<DIV><FONT =
size=3D2>=1B$B8@MU$G$O$&$^$/EA$o$i$J$$$+$b$7$l$J$$$N$G!"0J2<!"%3!<%I$r:\$=
;$F$$$^$9$N$G$4;XF3$/$@$5$$!#=1B(B</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT size=3D2>=1B$BAw?.MQ%U%!%$%k=1B(B(index.html)</FONT></DIV>
<DIV><FONT size=3D2>&lt;html&gt;</FONT></DIV>
<DIV><FONT size=3D2>&lt;body&gt;<BR>&lt;form action=3D"data.php"=20
method=3D"post"&gt;<BR>id&nbsp; &lt;input type=3D"text"=20
name=3D"formdata[]"&gt;&lt;br&gt;<BR>link name &lt;input type=3D"text"=20
name=3D"formdata[]"&gt;&lt;br&gt;<BR>link addr&lt;input type=3D"text"=20
name=3D"formdata[]"&gt;&lt;br&gt;<BR>&lt;input type=3D"submit"=20
value=3D"go!"&gt;<BR>&lt;/form&gt;<BR>&lt;/body&gt;</FONT></DIV>
<DIV><FONT size=3D2>&lt;/html&gt;</FONT></DIV>
<DIV><FONT size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT size=3D2>=1B$B<u?.%U%!%$%k=1B(B(data.php)</FONT></DIV>
<DIV><FONT size=3D2>/*=1B$B4{B8%G!<%?$rFI9~=1B(B*/</FONT></DIV>
<DIV><FONT size=3D2>$fp =3D fopen("data.csv", =
"r");<BR>&nbsp;&nbsp;&nbsp; flock($fp,=20
LOCK_EX);<BR>&nbsp;&nbsp;&nbsp;&nbsp;while($line =3D fgetcsv($fp,=20
1024)):<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach ($line as =
$key=20
=3D&gt;=20
$value):<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endforeach;</=
FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT size=3D2>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;=20
=1B$B$3$NItJ,$G4{B8%G!<%?$NFI9~$r$7$F!":#Aw$i$l$F$-$?%G!<%?=1B(B($formdat=
a)=1B$B$H$NHf3S$r$7$F=1B(B</FONT></DIV>
<DIV><FONT size=3D2>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;=20
=1B$B>:=3Dg$KJB$YBX$(!"2<$N=3Dq9~$K0\$j$?$$!#=1B(B</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT size=3D2>&nbsp;&nbsp;&nbsp; endwhile;<BR>&nbsp;&nbsp;&nbsp; =
flock($fp,=20
LOCK_UN);<BR>fclose($fp);</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT =
size=3D2>/*=1B$B>:=3Dg$KJB$YBX$($?%G!<%?$r=3Dq9~=1B(B*/<BR>$fp =3D =
fopen("data.csv",=20
"a");<BR>&nbsp;flock($fp, LOCK_EX);</FONT></DIV>
<DIV><FONT size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
=1B$BI,A3E*$K$3$3$K$b2?$+A`:n$,I,MW$G$9$h$M!#=1B(B</FONT></DIV>
<DIV><FONT size=3D2><BR>&nbsp;fputs($fp, implode(",", $formdata) .=20
"\n");<BR>&nbsp;flock($fp, =
LOCK_UN);<BR>fclose($fp);<BR>?&gt;</FONT></DIV>
<DIV><FONT size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT size=3D2>csv=1B$B%U%!%$%k=1B(B(data.csv)</FONT></DIV>
<DIV><FONT size=3D2>1,aaa,AAA</FONT></DIV>
<DIV><FONT size=3D2>10,jjj,JJJ</FONT></DIV>
<DIV><FONT size=3D2>5,eee,EEE</FONT></DIV>
<DIV><FONT size=3D2>7,ggg,GGG</FONT></DIV>
<DIV><FONT size=3D2>3,ccc,CCC</FONT></DIV>
<DIV><FONT size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT =
size=3D2>=1B$B$H$J$C$F$7$^$&$H$3$m$r!"0J2<$N$h$&$K$7$?$$$N$G$9$,!"$=3D$NJ=
}K!$r65$($F2<$5$$!#=1B(B</FONT></DIV>
<DIV><FONT =
size=3D2>=1B$B4uK>$9$k7A$N=1B(Bcsv=1B$B%U%!%$%k=1B(B</FONT></DIV>
<DIV><FONT size=3D2>1,aaa,AAA</FONT></DIV>
<DIV><FONT size=3D2>3,ccc,CCC</FONT></DIV>
<DIV><FONT size=3D2>5,eee,EEE</FONT></DIV>
<DIV><FONT size=3D2>7,ggg,GGG</FONT></DIV>
<DIV><FONT size=3D2>10,jjj,JJJ<BR></DIV></FONT></BODY></HTML>

------=_NextPart_000_0019_01C2BB55.B9388AE0--