Я хочу отправить сообщение другу, но оно не хочет попадать в мою базу данных, но впоследствии отображается в URL, даже если я использую $ _POST. Я получаю свой currentuserID и мой receientID (человек, которому я должен отправить), потому что я var_dump, оба и получаю оба идентификатора. Мой SQL запрос не должен быть неправильным. Я подумал, что проверил несколько человек (но когда я тестировал в базе данных, это выдало ошибку. НО, когда я вставил в него другой запрос, который работает, он выдал ту же ошибку, поэтому я не думаю, что это проблема).
Так что я понятия не имею, в чем может быть проблема ..
Мое сообщение. php:
<?php
session_start();
if (empty($_SESSION['user_id'])) {
header('Location: login.php');
}
//Hier mag enkel het gesprek te zien zijn tussen 2 users die met elkaar bevriend zijn
//tabel buddies >buddyID1 & buddyID2
include_once(__DIR__."/inc/header.inc.php");
include_once(__DIR__."/classes/Message.php");
include_once(__DIR__."/classes/User.php");
$userArray = $_SESSION['user_id'];
$userID = implode(" ", $userArray);
$currentUser = $userID;
//var_dump($_POST);
$recipientID = implode(" ",$_POST);//om het getal terug te krijgen van de recipientID
echo "currentUser: ";
var_dump($currentUser);
echo ". recipientID: ";
var_dump($recipientID);
//msg wordt in databank gestopt
if(!empty($_POST['message'])){
$msg = new Message();
$msg->setUserID($currentUser);
$msg->setRecipientID($recipientID);
$msg->setMessage(htmlspecialchars($_POST['message']));
$msg->messageSchrijven();
}
//msg wordt afgedrukt/gereturned
$msg2 = new Message();
$messages = $msg2->messagePrint();
?><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div>
<form action="" methd="post">
<h1>Je chat nu met <?php echo $recipientID ?></h1>
<input type="text" name="message">
<input type="hidden" name="recipientID" id="" value="<?php echo $recipientID?>">
<input type="hidden" name="senderID" id="" value="<?php echo $currentUser?>">
<div class="">
<button type="submit" class="btn" style="width: 90px">Send</button>
</div>
</form>
</div>
<?php foreach($messages as $message): ?>
<div>
<p><?php echo $message["senderID"].": " . $message["content"]; ?></p>
</div>
<?php endforeach;?>
</body>
</html>
Сообщение моего класса. php:
<?php
include_once (__DIR__ . "/Db.php");
class Message{
private $userID;
private $message;
private $recipientID;
//getter setter userID
public function getUserID()
{
return $this->userID;
}
public function setUserID($userID)
{
$this->userID = $userID;
return $this;
}
// getter setter recipientID
public function getRecipientID()
{
return $this->recipientID;
}
public function setRecipientID($recipientID)
{
$this->recipientID = $recipientID;
return $this;
}
//getter setter message
public function getMessage()
{
return $this->message;
}
public function setMessage($message)
{
$this->message = $message;
return $this;
}
// om je berichtje in de DB te steken
public function messageSchrijven(){
$conn = Db::getConnection();
$statement = $conn->prepare("INSERT INTO msg(senderID,recipientID,content) values(:senderID,:recipientID,:content)");
$statement->bindValue(":senderID", $this->getUserID()); // huidige user
$statement->bindValue(":recipientID", $this->getRecipientID()); // de user naarwaar het verstuurd wordt
$statement->bindValue(":content", $this->getMessage()); // het bericht
$result = $statement->execute();
$result = $statement->fetch(PDO::FETCH_ASSOC);
return $result;
}
// berichtje afprinten
public function messagePrint(){ //$senderID,$recipientID
$conn = Db::getConnection();
$statement = $conn->prepare("SELECT * from msg where senderID = :senderID AND recipientID = :recipientID"); //where senderID = :senderID AND recipientID = :recipientID
$statement->bindValue(":senderID", $this->getUserID());
$statement->bindValue(":recipientID", $this->getRecipientID());
$result = $statement->execute();
$result = $statement->fetchAll(PDO::FETCH_ASSOC);
return $result;
}
}
Я получаю свой получатель с другой страницы, где перечислены мои "друзья", если я наберу sh на 1 из них, я получу его / ее идентификатор пользователя с меня на страницу "message. php".
Так что я не знаю, если это что-то с моим запросом, или я теряю свои идентификаторы пользователя, когда я пытаюсь отправить его. Но я попытался протестировать его, установив вручную ID пользователя с помощью
$msg->setUserID("9");
$msg->setRecipientID("10");
, но это не работает .. (currentUserID = 9, receientID = 10 в данный момент, кстати). Та же проблема с печатью сообщений .. Я не получаю их. База данных подключена, потому что я могу войти и зарегистрироваться без проблем.