0

私はPHPメッセージングシステムに取り組んでいますが、何があっても修正できないように見える問題に遭遇し、何時間も修正しようとしています。

これが私のコードです:

function show_friends($db){
    $friends = Array();
    $email = $_SESSION['ml'];
    $check = $db->prepare("SELECT ID FROM users WHERE Email = ?");
    $check->execute(array($email));
    $line = $check->fetch(PDO::FETCH_ASSOC);
    $ID = $line['ID'];
    $query = $db->prepare("SELECT * FROM friends WHERE UserID = ?");
    $query->execute(array($ID));
    echo "<b>Friends:</b> <br/>";
    foreach($query as $row){
        $FriendID = $row['FriendID'];
        $sentfrom = $row['SentFrom'];
        if($row['Status'] === "Friends"){
            $friend = $row['FriendName'];
            $html = '
                <html>
                    <form action method = "post" >
                        <input type = "submit" value = '.$friend.' name = '.$FriendID.' />
                        <br/>
                    </form>
                </html>
            ';
            echo $html;
            $friends[] = $FriendID;
        }
    }
    $counter = 0;
    $iterations = count($friends);
    while($counter <= $iterations){
        $person = $friends[$counter];
        if(isset($_POST[$person])){
            return $person;
        }
        $counter += 1;
    }
}

function message($message, $to, $from, $db){
    $query2 = $db->prepare("INSERT INTO messages (Message, ToID, FromID, Time) VALUES(?, ?, ?, ?)");
    $query2->execute(array($message, $to, $from, date("Y-m-d h:i:s")));
}

そして、それを使用するページは次のとおりです。

$person = show_friends($db);
if(isset($person)){
    $html = '
        <html>
            <form action method = "post" >
                Message '.$person.' <input type = "text" name = "message" />
                <input type = "submit" value = "Message!" name = "sendto'.$person.'" />
            </form>
        </html>
    ';
    echo $html;
}
if(isset($_POST['sendto'.$person])){
    $message = $_POST['message'];
    if($message != "" or $message != null){
        message($message, $person, $ID, $db);
    }
}

友達にメッセージを送信するたびに、メッセージはすべての友達に送信されます。何かを返そうとすると、友達配列の横にある最初の友達にのみメッセージが送信されます。助けてくれてありがとう。

4

1 に答える 1

0

あなたの友人の名前でステートメントのWHERE句を使用してくださいINSERT INTO

Eg: WHERE `name`='friendname'

使用する

   INSERT INTO messages (Message, ToID, FromID, Time) VALUES(?, ?, ?, ?) WHERE `to`='$to'
于 2012-12-22T09:08:06.313 に答える