با سلام سوالی داشتم من یک فرم کامنت درست کردم وقتی کاربر فیلد رو پر میکنه و به دیتابیس ارسال میکنه و از دیتابیس فراخوانی میکنه و نمایش میده تا اینجا همچی اوکیه تا وقتی که من صفحه رو رفرش میکنم و میبینم که از کامنت قبلی دوتا هست ینی انگار هرچی رفرش میکنی از کامنت قبلی رکورد میزنه و نمایش میده
شما قطعا صفحه ی نمایش فرم رو رفرش نکردید و آدرس دریافت اطلاعات ( آدرس نوشته شده در action فرم) رو رفرش کردید و این طبیعی هست. البته اگر از متد post استفاده کنید مرورگر به شما اخطار ارسال دوباره اطلاعت رو میده که با تایید شما دوباره ارسال میشه.
آیا درست گفتم؟
با سلام من وقتی صفحه رو رفرش میکنم کلا خود به خود یک رکورد جدید به صورت اتومات نمایش داده میشه نمیدونم باگش چیه و چجوری رفعش کنم
[1]: https://roocket.ir/discuss/167 برای مثال این لینکی که دادم. مشکل منم همینه وقتی صفحه رو رفرش میکنم انگار دکمه سابمیت شده و جالبه از رکورد قبلی دوتا رکورد میزنه
نمیدونم چجوری بگم😁
سلام کدتون رو چک کنید
شاید توی بخشی از کدتون کدی رو به اشتباه قرارداید
از ajax استفاده میکنید ؟
با سلام نه یه کامنت خیلی ابتدایی و سادس چون تازه کار با پی اچ پیو شروع کردم درضمن من چون تازه کارم با پی اچ پی شاید مشکلی داشته باشه من نمیدونم میگم باگه با ایجکس کار نمیکنم یه پی اچ پیه با دیتا بیس پی اچ پی مای ادمین
<?php
include '../database/db.php';
if (isset($_POST['sub'])) {
if (!empty($_POST['username']) && !empty($_POST['title']) && !empty($_POST['comment']) && !empty($_POST['sub'])) {
$username = $_POST['username'];
$title = $_POST['title'];
$comment = $_POST['comment'];
$insert = $conn->prepare("INSERT INTO ques SET username=? , title=? , comments=?");
$insert->bindValue(1, $username);
$insert->bindValue(2, $title);
$insert->bindValue(3, $comment);
$insert->execute();
}
}
if (isset($_POST['sub'])) {
; header("location:qa2.php");
}
?>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>پرسش و پاسخ</title>
<link rel="stylesheet" href="qa.css">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/2.1.2/sweetalert.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<script src="script1.js"></script>
</head>
<body>
<br>
<h2 id="header">
ثبت پرسش
</h2>
<br>
<p id="caption"> نام خود را وارد کنید :</p>
<form method="post" required>
<input class="username form-control" type="text" placeholder="نام خود را وارد کنید" name="username" required
id="username">
<br>
<br>
<p id="caption">عنوان پرسش را وارد کنید:</p>
<input type="text" placeholder="عنوان پرسش خود را وارد کنید" name="title" class="title form-control"
style="margin-right: 10px" required id="title">
<textarea name="comment" class="ta" cols="70" rows="10" placeholder="پرسش خود را وارد کنید"></textarea required="required" id="text">
<br>
<br>
<input type="submit" name="sub" class="btn btn-success" value="ثبت پرسش" onclick="msg();">
<br>
<br>
</form>
</div>
</body>
<style>
.username {
position: relative;
right: 50px;
}
.title {
position: relative;
right: 50px;
}
.btn {
width: 150px;
margin-top: 20px;
}
</style>
</html>
و هدرش کردم به :
<?php
include_once '../database/db.php';
$select = $conn->prepare("SELECT * FROM ques");
$select->execute();
$coments = $select->fetchAll(PDO::FETCH_ASSOC);
?>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>پرسش ها</title>
</head>
<body>
<?php foreach($coments as $co){?>
<div class="userqa">
<p id="name">
<? = $co['username'] ?>
</p>
<p id="msg">
<? = $co['comments'] ?>
</p>
<span id="title">
<? = $co['title'] ?>
<span>
</div>
<?php }?>
</body>
<style>
.userqa {
border: 3px solid wheat;
text-align: none !important;
float: right;
width: 500px;
margin-top: 50px;
font-size: larger;
padding: 5px;
border-bottom-right-radius: 20px;
border-radius: 10px 0px 10px 10px;
margin-bottom: 50px;
animation-name: exl;
animation-duration: 15s;
transition: 15s;
animation-iteration-count: infinite;
background-color: chocolate;
display: flex;
flex-direction: column;
margin: 80px;
}
@keyframes exl {
0% {
border-color: white;
}
10% {
border-color: yellow;
}
20% {
border-color: green;
}
30% {
border-color: darkorange;
}
57% {
border-color: red;
}
75% {
border-color: blue;
}
100% {
border-color: blueviolet;
}
}
#name {
text-align: center;
color: wheat;
font-weight: bold;
}
#msg {
text-align: start;
float: right;
color: wheat;
}
</style>
</html>
</body></html>
الان این دو سورس کدی که ارسال کردم کد یه وب پرسش و پاسخ ساده با پا اچ پی هست الان این دو دو تا مشکل دارن یه مشکل اینه که از دیتابیس کامنت هارو دریافت نمیکنه و نمایش نمیده و مشکل دوم اینه که هرچی رفرش می میکنم رکورد جدید درست میکنه واقعا گیج شدم😑😐
سلام
به نظرتون نباید این تیکه کد اصلاح بشه ؟
if (isset($_POST['sub'])) {
; header("location:qa2.php");
}
و به جای if (isset($_POST['sub']))
از این if (! isset($_POST['sub']))
استفاده کنید ؟
چون دارید دوبار بودن POST رو چک میکنید هربارم وجودشو چک میکنید
باید اونی که ریدایرکت اتفاق میوفته رو برای وقتی به کار ببرید که POST نباشه یعنی !(NOT)
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟