私は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);
}
}
友達にメッセージを送信するたびに、メッセージはすべての友達に送信されます。何かを返そうとすると、友達配列の横にある最初の友達にのみメッセージが送信されます。助けてくれてありがとう。