0

私の質問は、画像へのファイルパスをデータベース内のユーザーのスロットに追加することです。これがサンプルです。これは写真が選択されるページです。

   require_once("script.php");   
   <form method="post" action='golf.php'>
<?php
 require_once("golf_phot.php");
?>
</div>
<input id="butt" type="submit" value="add"/>
</form>

これがgolf_phot.phpの内容です。

$query="SELECT category_id FROM categories WHERE category_name='golf'";
$resultt=mysql_query($query);
$row=mysql_fetch_array($resultt);
$do=$row['category_id'];
$query2="SELECT photo FROM all_photos WHERE all_photos.category_id='$do'";
$result=mysql_query($query2); 
while ($row=mysql_fetch_array($result))
{
 $photo=$row['photo'];
 echo "<input type=\"checkbox\" name=\"addlist[]\" value=\"".$photo."\">"."<img    src=\"".$photo."\">";
echo "<br>";
echo "<br>";
echo "<br>";
}

私はすでにmysql接続とデータベース選択を行いました。それを投稿しませんが、問題はありません。「script.php」の内容は次のとおりです。

if(isset($_POST['addlist']))
{
$pics=$_POST['addlist'];
$n=count($pics);
//now, to open the database user_info, using the stored session

//make the session variable legit
if(isset($_SESSION['user']))
{
$user=$_SESSION['user'];
}
//get the user's id from the user_info table
$querya="SELECT * FROM user_info WHERE user_info.fb_id='$user'";
$result1=mysql_query($querya);
//now that we have the id, we can add the photos to 
//user_photos, using their id as a foreign key
if(mysql_num_rows($result1)>0){
$rowa=mysql_fetch_array($result1);}
$user_id=$rowa['USER_INFO_ID'];
//before we add them, we'll need to see whether they exist or not.
//adding time:
for($i=0;$i<$n;$i++){
$data=$pics[$i];
$queryb="SELECT * FROM user_photos";
$result3=mysql_query($queryb);
if(mysql_num_rows($result3)>0){
while($rowa=mysql_fetch_array($result3))
{
$data2=$rowa['USER_PHOTOS'];
if($data==$data2)
{ $var='exists';   }
else{
$queryb="INSERT INTO user_photos(USER_PHOTOS_ID,USER_INFO_ID,USER_PHOTOS) VALUES('NULL','".$user_id."','".$data."')";
$result2=mysql_query($queryb);
}
}
}
}

//選択した写真がユーザーのギャラリーに追加されました!}ユーザーデータ変数は、他の場所で使用するときにすべて設定され、データベースに正常に追加されます。上記のように、写真がすでに存在するかどうかを確認する方法が含まれていますが、存在する場合は追加しません(問題がある可能性があります)基本的に、写真のあるページが読み込まれ、ユーザーは必要な写真を確認してから同じページに送信します。このページでは、「script.php」がデータを処理してデータベースに追加します。 。データベースに写真が追加されていないので、ここで何が問題なのか本当にわかりません。これは簡単な質問かもしれませんが、私は親切に助けを求めます。何かを明確にする必要がある場合は、親切に尋ねてください。その間、誰か助けてもらえますか?前もって感謝します。

4

2 に答える 2

1

画像が同じかどうかを確認するための1つの解決策は、画像にハッシュアルゴリズムを使用して、同じ画像を決定することです。

すなわち:(擬似コード)

$hash=sha1_file('pic-filename');

$sql='select * from image_table where hash_col ='.$hash;

if(num_rows($sql)>0)
  //don't save pic.
else
  // save the pic and it's hash value.
  • hash_colは、特定の画像のハッシュ値を取得する画像テーブルの列です。
于 2012-11-10T21:37:59.023 に答える
0

script.phpでこのコードを試してください。これがあなたのために働くかもしれないことを願っています。
状態を削除しましたif(mysql_num_rows($result3)>0){

コード:

if(isset($_POST['addlist']))
    {
    $pics=$_POST['addlist'];
    $n=count($pics);
    //now, to open the database user_info, using the stored session

    //make the session variable legit
    if(isset($_SESSION['user']))
    {
    $user=$_SESSION['user'];
    }
    //get the user's id from the user_info table
    $querya="SELECT * FROM user_info WHERE user_info.fb_id='$user'";
    $result1=mysql_query($querya);
    //now that we have the id, we can add the photos to 
    //user_photos, using their id as a foreign key
    if(mysql_num_rows($result1)>0){
    $rowa=mysql_fetch_array($result1);}
    $user_id=$rowa['USER_INFO_ID'];
    //before we add them, we'll need to see whether they exist or not.
    //adding time:
    for($i=0;$i<$n;$i++){
    $data=$pics[$i];
    $queryb="SELECT * FROM user_photos";
    $result3=mysql_query($queryb);

    while($rowa=mysql_fetch_array($result3))
    {
    $data2=$rowa['USER_PHOTOS'];
    if($data==$data2)
    { $var='exists';   }
    else{
    $queryb="INSERT INTO user_photos(USER_PHOTOS_ID,USER_INFO_ID,USER_PHOTOS) VALUES('NULL','".$user_id."','".$data."')";
    $result2=mysql_query($queryb);
    }

    }
    }
于 2012-11-10T22:09:56.313 に答える