- ベストアンサー
pdfファイルの管理システム
pdfファイルの管理システムを作っています。 ファイルの置き場をきめて、ファイル名を任意に置き換え、 ファイルの情報だけDBに登録したいのですが、簡単にサンプルphpスクリプトを書いてもらえませんか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
まずデータベースをつくります、仮にmydb 次に管理用テーブルをつくります create table t_pdf_manage( id int not null auto_increment primary key ,name varchar(20) unique key ,size int ,upload_time datetime ,modify_time datetime ,flg tinyint default 1 ); 以下、サンプルプログラム <form enctype="multipart/form-data" method="post"> <input type="file" name="myfile" size="30"> <input type="submit" value="アップロード"> <?PHP $uploads_dir = '/uploads'; $link = mysql_connect('localhost', 'username', 'password'); mysql_select_db("mydb"); if(isset($_FILES["myfile"]) and $_FILES["myfile"]["type"]="application/pdf" and $_FILES["myfile"]["error"] == UPLOAD_ERR_OK) { $tmp_name = $_FILES["myfile"]["tmp_name"]; $name = mysql_real_escape_string($_FILES["myfile"]["name"]); $size = $_FILES["myfile"]["size"]; $sql ="insert into t_pdf_manage(name,size,upload_time,modify_time,flg)"; $sql.=" values('$name',$size,now(),now(),1)"; $sql.=" on duplicate key update size=$size,modify_time=now(),flg=1"; $res=mysql_query($sql); $sql ="select id from t_pdf_manage where name='$name'"; $res=mysql_query($sql); $row=mysql_fetch_row($res); $up_name=$row[0]; move_uploaded_file($tmp_name, "$uploads_dir/$up_name"); } if(isset($_POST["del"]) and is_array($_POST["del"])){ $sql ="update t_pdf_manage set flg=0 where id in("; $flg=true; foreach($_POST["del"] as $val){ if($flg){ $flg=false;}else{$sql.=",";} $sql.="'".mysql_real_escape_string($val)."'"; } $sql.=")"; $res=mysql_query($sql); } $sql ="select id,name,size,upload_time,modify_time from t_pdf_manage where flg=1"; $res=mysql_query($sql); print "<table border=1>\n"; print "<tr>\n"; print "<th>名前</th>\n"; print "<th>サイズ</th>\n"; print "<th>アップロード</th>\n"; print "<th>更新</th>\n"; print "<th>削除</th>\n"; print "</tr>\n"; while($row=mysql_fetch_array($res,MYSQL_ASSOC)){ print "<tr>\n"; print "<td>".htmlspecialchars($row["name"])."</td>\n"; print "<td>".$row["size"]."</td>\n"; print "<td>".$row["upload_time"]."</td>\n"; print "<td>".$row["modify_time"]."</td>\n"; print "<td><input type=\"checkbox\" name=\"del[]\" value=\"".$row["id"]."\"></td>\n"; print "</tr>\n"; } print "</table>\n"; mysql_close($link); ?> <input type="submit" value="削除"> </form>
その他の回答 (3)
- yambejp
- ベストアンサー率51% (3827/7415)
>$uploads_dir = '/uploads';はどこかに作らないとダメですよね? この例だとルートに/uploads を作った前提ですね これは設定次第なので公開ディレクトリにしてもいいし、 非公開でプログラムから参照するのでもいいと思います
お礼
yambejpさん、いつもありがとうございます。 今度は必要なPDFファイル検索してを表示できるようにしようと思います。キーワードで検索したいんですが、ファイルのアップロード時にタグをつけるにはどうすればできますか? よろしくお願いします。
- yambejp
- ベストアンサー率51% (3827/7415)
修正 ×and $_FILES["myfile"]["type"]="application/pdf" ○and $_FILES["myfile"]["type"]=="application/pdf"
お礼
yambejpさん、ありがとうございます。 一つ質問ですが、$uploads_dir = '/uploads';はどこかに作らないとダメですよね?
- yambejp
- ベストアンサー率51% (3827/7415)
ファイルのアップロードはinput type="file"でよいのでしょうか? ファイル名が競合するときは上書きでよいのでしょうか? 不要になったファイルは消すのでしょうか? それともファイルは消さずにファイル情報だけ消すのでしょうか?
お礼
yambejpさん、ありがとうございます。 ファイルのアップロードはinput type="file"です。 ファイル名が競合するときは上書きでいいです。 不要になったファイルは消さずにファイル情報だけ消すようにしたいです。 よろしくお願いします。
補足
yambejpさん、ありがとうございます。 ファイルのアップロードはinput type="file"です。 ファイル名が競合するときは上書きでいいです。 不要になったファイルは消さずにファイル情報だけ消すようにしたいです。 よろしくお願いします。
お礼
yambejp さん、ありがとうございます。 作っていただいたものでじっくり勉強して、身に付けられるように頑張りマス! また、教えてください。