2009-09-01 1 views
0

とが必要です:PHP - 私は現在、この順序で、次の処理を行いPHP/MySQLのスクリプトに取り組んでいるロジック

1) 2を変換する必要がある任意のビデオのためのDBをチェック)は一度と判断しましたビデオを変換する必要があります、それは変換を開始します *)作成されたビデオの "作成者"に通知します。 * 4)ビデオの「受信者」であるすべてのユーザーに、新しいビデオがあることを通知します。

注:私は上記の星印の数字のヘルプを探しています。

は、ここで私はそれらを入力したくないので、意図的に、取り残さ一部(私の基本的なDB /テーブル構造です:

video_data: 
    id 
    creator_id 
    needs_process 

video_info 
    id 
    video_id (relational to 'id' in table above). 
    receiver_id 

tblusers 
    usrID 
    usrFirst 
    usrLast 
    usrEmail 

は、ここに私は現在、私のスクリプトを持っているものです。

<?php 
    require("connection.php"); 
    $rs = mysql_db_query($DBname,$sql,$link); 
    $data = mysql_query("SELECT * FROM video_data WHERE needs_process=1 LIMIT 1") or die(mysql_error()); 

while($row = mysql_fetch_array($data)) 
    { 
$id = $row['id']; 
$sender = $row['sender_id']; 


     //Convert The Video Here (I've already written this code). 


     //Maybe Create a Thumbnail Too (I've already written this code). 

    } 

私の質問は:上記のコードでは、私は「作成者」(常に1人)とレシーバ(時には複数のレシーバ)に電子メールを送信する方法と、これらがおそらく「別々の」電子メールまたは「別の電子メール」であることです。たとえば、クリエイターには「アップロードしていただきありがとうございます受信者は「あなたは新しいビデオを持っています」というメッセージを受け取ります。

これについての助言は素晴らしいでしょう!

+2

ヒント: "またはdie(mysql_error());" – tuergeist

答えて

2

それはこのようなものです:基本的には、それだけでこのクエリの周りだ

<?php 
    require("connection.php"); 
    $rs = mysql_db_query($DBname,$sql,$link); 
    $data = mysql_query("SELECT * FROM video_data WHERE needs_process=1 LIMIT 1") or die(mysql_error()); 

while($row = mysql_fetch_array($data)) 
    { 
$id = $row['id']; 
$sender = $row['sender_id']; 
     //Convert The Video Here (I've already written this code). 
     //Maybe Create a Thumbnail Too (I've already written this code). 

     //mail the creator 

     $data2 = mysql_query("SELECT * FROM tblusers WHERE usrID=$row[creator_id] LIMIT 1") or die(mysql_error()); 

     $creatordata = mysql_fetch_array($data2); 

     mailtocreator($creatordata['userEmail'], $creatordata['usrFirst'].' '.$creatordata['usrLast']); 
     //mail the receiver 
     $data3 = mysql_query("SELECT * FROM tblusers t, video_info vi WHERE vi.video_id = $row[id] AND vi.receiver_id = t.usrID") or die(mysql_error()); 
     while($row2 = mysql_fetch_array($data3)) 
     { 
       mailtocreator($row2['userEmail'], $row2['usrFirst'].' '.$row2['usrLast'], $creatordata['usrFirst'].' '.$creatordata['usrLast']); 
      } 

    } 


function mailtocreator($toemail, $toname) 
{ 
    //do send mail routine 
    $subject = 'video processed'; 
    $message = 'hello '.$toname.', 

Thank you for uploading video.'; 
    $headers = 'From: [email protected]' . "\r\n" . 
     'Reply-To: [email protected]' . "\r\n" . 
     'X-Mailer: PHP/' . phpversion(); 
    mail($toemail, $subject, $message, $headers); 
} 

function mailtoreceiver($toemail, $toname, $fromname) 
{ 
    //do send mail routine 
    $subject = 'new video received'; 
    $message = 'hello '.$toname.', 

You just got new video from '.$fromname.'.'; 
    $headers = 'From: [email protected]' . "\r\n" . 
     'Reply-To: [email protected]' . "\r\n" . 
     'X-Mailer: PHP/' . phpversion(); 
    mail($toemail, $subject, $message, $headers); 
} 

現在($行から取った[creator_id])アップローダーと

の詳細情報を取得
$data2 = mysql_query("SELECT * FROM tblusers WHERE usrID=$row[creator_id] LIMIT 1") or die(mysql_error()); 

$data3 = mysql_query("SELECT * FROM tblusers t, video_info vi WHERE vi.video_id = $row[id] AND vi.receiver_id = t.usrID") or die(mysql_error()); 

テーブルtblusersとvideo_infoからクエリを実行してすべての受信者を取得し、次にsこれらの情報をそれぞれmailtocreatorとmailtoreceiverに送信します。

+0

ここでdie()と同じようにデバッグするのは非常に難しいのであまり良くありません。そして、 "select * from"はそれほど良くありません。すべての行が必要なわけではないので、なぜこのデータをディスクからPHPにコピーしますか? – tuergeist

+0

さらに、 "SELECT * FROM tblusers WHERE usrID = $ row [creator_id] LIMIT 1"は役に立ちません。単引用符と文字列の連結を使用する方がよい: 'SELECT * FROM tblusers WHERE usrID ='。 $ row [creator_id]。 'LIMIT 1' LIMIT 1が添付されている理由はわかりません。ユーザーIDごとに複数のユーザーがいますか?悪いスタイル... – tuergeist

+0

@tuergeist:うん、それは悪いスタイルです。アルゴリズムを表示したいだけです。 LIMIT 1の場合、@Dodinasは上に述べたように、アップローダ/クリエイターは常に1つです。今、誰が投票しますか?なぜ彼/彼女は正しい答えを書かないのですか? – ariefbayu

関連する問題