26

こんにちは私はサーバーに画像をアップロードする方法を説明する多くのフォーラムやウェブサイトを読みました、そして私はこれをうまく動かすことができました、私は私のサーバーにファイルをアップロードすることができますがファイル名を保存することは私が見つけた次の例でうまくいきますまた、より多くのデータをデータベースに入力できるフォームを作成する必要があります。以前に多くのPHPを行ったことがあるので、私はこれに固執しています。私はさまざまなウェブサイトのチュートリアルを試すことに終わりましたが、あまり成功していません。誰か助けてください!私がやっているプロジェクトのためにそれをする必要があります。

私は基本的に、ユーザーがバンドメンバーの写真をアップロードし、それらに関する情報を保存して、一般の人が閲覧できるようにWebページに表示できるCMSを作成しようとしています。


私のテーブルは次のようになります。

Field              Type             Null    Default     
id                 int(10)          No                   
nameMember         varchar(25)      No                   
bandMember         text             No                   
photo              varchar(30)      No                   
aboutMember        text             No                   
otherBands         text             No      

私が欲しいフォームは次のようになります:

   <h1>Adding a new Band Member or Affiliate</h1>
      <form method="post" action="addMember.php" enctype="multipart/form-data">
       <p>
              Please Enter the Band Members Name.
            </p>
            <p>
              Band Member or Affiliates Name:
            </p>
            <input type="text" name="nameMember"/>
            <p>
              Please Enter the Band Members Position. Example:Drums.
            </p>
            <p>
              Member's Position:
            </p>
            <input type="text" name="bandMember"/>
            <p>
              Please Upload a Photo in gif or jpeg format. The file name should be named after the Members name. If the same file name is uploaded twice it will be overwritten!
            </p>
            <p>
              Photo:
            </p>
            <input type="file" name="filep" size=35 />
            <p>
              Please Enter any other information about the band member here.
            </p>
            <p>
              Other Member Information:
            </p>
<textarea rows="10" cols="35" name="aboutMember">
</textarea>
            <p>
              Please Enter any other Bands the Member has been in.
            </p>
            <p>
              Other Bands:
            </p>
            <input type="text" name="otherBands" size=30 />
            <br/>
            <br/>
            <input TYPE="submit" title="Add data to the Database" value="Add Member"/>
          </form>

サーバーに画像をアップロードする例、つまりこれは次のとおりです。

<?

if ($_POST["action"] == "Load")
{
$folder = "images/";

move_uploaded_file($_FILES["filep"]["tmp_name"] , "$folder".$_FILES["filep"]["name"]);

echo "
<p align=center>File ".$_FILES["filep"]["name"]."loaded...";

$result = mysql_connect("localhost", "******", "*****") or die ("Could not save image name

Error: " . mysql_error());

mysql_select_db("project") or die("Could not select database");
mysql_query("INSERT into dbProfiles (photo) VALUES('".$_FILES['filep']['name']."')");
if($result) { echo "Image name saved into database

"; }

}

?>

そして、私が使用しなければならないサンプルフォームはこれです:

<form action=addMember.php method=post enctype="multipart/form-data">
<table border="0" cellspacing="0" align=center cellpadding="3" bordercolor="#cccccc">
<tr>
<td>File:</td>
<td><input type="file" name="filep" size=45></td>
</tr>
<tr>
<td colspan=2><p align=center>
<input type=submit name=action value="Load">
</td>
</tr>
</table>
</form>

PS:画像ファイルは書き込み用に開いています。

4

6 に答える 6

3
<form method="post" action="addMember.php" enctype="multipart/form-data">
    <p>
              Please Enter the Band Members Name.
            </p>
            <p>
              Band Member or Affiliates Name:
            </p>
            <input type="text" name="nameMember"/>
            <p>
              Please Enter the Band Members Position. Example:Drums.
            </p>
            <p>
              Band Position:
            </p>
            <input type="text" name="bandMember"/>
            <p>
              Please Upload a Photo of the Member in gif or jpeg format. The file name should be named after the Members name. If the same file name is uploaded twice it will be overwritten! Maxium size of File is 35kb.
            </p>
            <p>
              Photo:
            </p>
            <input type="hidden" name="size" value="350000">
            <input type="file" name="photo"> 
            <p>
              Please Enter any other information about the band member here.
            </p>
            <p>
              Other Member Information:
            </p>
<textarea rows="10" cols="35" name="aboutMember">
</textarea>
            <p>
              Please Enter any other Bands the Member has been in.
            </p>
            <p>
              Other Bands:
            </p>
            <input type="text" name="otherBands" size=30 />
            <br/>
            <br/>
            <input TYPE="submit" name="upload" title="Add data to the Database" value="Add Member"/>
          </form>

addMember.phpとして保存します

<?php

//This is the directory where images will be saved
$target = "your directory";
$target = $target . basename( $_FILES['photo']['name']);

//This gets all the other information from the form
$name=$_POST['nameMember'];
$bandMember=$_POST['bandMember'];
$pic=($_FILES['photo']['name']);
$about=$_POST['aboutMember'];
$bands=$_POST['otherBands'];


// Connects to your Database
mysql_connect("yourhost", "username", "password") or die(mysql_error()) ;
mysql_select_db("dbName") or die(mysql_error()) ;

//Writes the information to the database
mysql_query("INSERT INTO tableName (nameMember,bandMember,photo,aboutMember,otherBands)
VALUES ('$name', '$bandMember', '$pic', '$about', '$bands')") ;

//Writes the photo to the server
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target))
{

//Tells you if its all ok
echo "The file ". basename( $_FILES['photo']['name']). " has been uploaded, and your information has been added to the directory";
}
else {

//Gives and error if its not
echo "Sorry, there was a problem uploading your file.";
}
?>

上記のコードで1つの小さなバグ、私はそのバグを修正しました。

于 2010-02-17T18:42:14.427 に答える
3

写真ごとに ID があるので、写真の名前を変更することをお勧めします。たとえば、日付で名前を変更します

<?php
 $date = getdate();
 $name .= $date[hours];
 $name .= $date[minutes];
 $name .= $date[seconds];
 $name .= $date[year];
 $name .= $date[mon];
 $name .= $date[mday];
?>

注:ファイルのファイル拡張子を忘れないでください。または、写真のランダムな文字列を生成できますが、お勧めしません. ディレクトリにアップロードする前に、ファイル拡張子を確認することもお勧めします。

<?php 
if ((($_FILES["photo"]["type"] == "image/jpeg")
            || ($_FILES["photo"]["type"] == "image/pjpg"))
            && ($_FILES["photo"]["size"] < 100000000))
            {
                move_uploaded_file($_FILES["photo"]["tmp_name"], $target.$name);

                if(mysql_query("your query"))
                {
                    //success handling
                }
                else 
                {
                    //failed handling
                }
            }
            else
            {
                //error handling
            }
?>

これが役立つことを願っています。

于 2012-12-30T11:47:12.953 に答える
1

以下を追加すると、ファイル名の引用符の問題を回避できます。

"freddy's pic.jpg"

一部のオペレーティング システムでは許容されます。

前:

$pic=($_FILES['photo']['name']);

後:

$pic=(mysql_real_escape_string($_FILES['photo']['name']));
于 2010-05-20T16:54:26.847 に答える
0

フォームにさらにデータを入力する場合は、$_POSTを介して送信されたデータにアクセスするだけです。

あなたが持っている場合

<input type="text" name="firstname" />

あなたはそれにアクセスします

$firstname = $_POST["firstname"];

次に、クエリ行を更新して読み取ります。

mysql_query("INSERT INTO dbProfiles (photo,firstname)
             VALUES('{$filename}','{$firstname}')");

注:データは常にフィルタリングおよびサニタイズしてください。

于 2009-01-16T17:19:43.820 に答える
0

あなたのパート:

$result = mysql_connect("localhost", "******", "*****") or die ("Could not save image name

Error: " . mysql_error());

mysql_select_db("project") or die("Could not select database");
mysql_query("INSERT into dbProfiles (photo) VALUES('".$_FILES['filep']['name']."')");
if($result) { echo "Image name saved into database

";

あまり意味がありません。接続に $result という名前を付けるべきではありませんが、これはコーディングではなく命名の問題です。

コーディングの問題は if($result) です。挿入クエリの失敗または成功に関係なくデータベースに接続できる場合、「データベースに画像が保存されました」と出力されます。

do を追加してみてください

$realresult = mysql_query("INSERT into dbProfiles (photo) VALUES('".$_FILES['filep']['name']."')");

if($result) を $realresult に変更します

クエリが失敗していると思われます。おそらく追加の列か何かがありますか?

「.$_FILES['filep']['name']」を置き換えて、クエリをコピーして貼り付けてみてください。テストしてクエリブラウザで実行し、それが入るかどうかを確認してください。

于 2009-01-16T17:39:09.053 に答える