• ベストアンサー

pdfファイルの管理システム

pdfファイルの管理システムを作っています。 ファイルの置き場をきめて、ファイル名を任意に置き換え、 ファイルの情報だけDBに登録したいのですが、簡単にサンプルphpスクリプトを書いてもらえませんか?

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

まずデータベースをつくります、仮に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>

egawa0812
質問者

お礼

yambejp さん、ありがとうございます。 作っていただいたものでじっくり勉強して、身に付けられるように頑張りマス! また、教えてください。

その他の回答 (3)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4

>$uploads_dir = '/uploads';はどこかに作らないとダメですよね? この例だとルートに/uploads を作った前提ですね これは設定次第なので公開ディレクトリにしてもいいし、 非公開でプログラムから参照するのでもいいと思います

egawa0812
質問者

お礼

yambejpさん、いつもありがとうございます。 今度は必要なPDFファイル検索してを表示できるようにしようと思います。キーワードで検索したいんですが、ファイルのアップロード時にタグをつけるにはどうすればできますか? よろしくお願いします。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

修正 ×and $_FILES["myfile"]["type"]="application/pdf" ○and $_FILES["myfile"]["type"]=="application/pdf"

egawa0812
質問者

お礼

yambejpさん、ありがとうございます。 一つ質問ですが、$uploads_dir = '/uploads';はどこかに作らないとダメですよね?

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

ファイルのアップロードはinput type="file"でよいのでしょうか? ファイル名が競合するときは上書きでよいのでしょうか? 不要になったファイルは消すのでしょうか? それともファイルは消さずにファイル情報だけ消すのでしょうか?

egawa0812
質問者

お礼

yambejpさん、ありがとうございます。 ファイルのアップロードはinput type="file"です。 ファイル名が競合するときは上書きでいいです。 不要になったファイルは消さずにファイル情報だけ消すようにしたいです。 よろしくお願いします。

egawa0812
質問者

補足

yambejpさん、ありがとうございます。 ファイルのアップロードはinput type="file"です。 ファイル名が競合するときは上書きでいいです。 不要になったファイルは消さずにファイル情報だけ消すようにしたいです。 よろしくお願いします。

関連するQ&A