PDA

View Full Version : مشکل در قسمت ارسال دیدگاه سایت



7asemoon
دوشنبه 01 تیر 1394, 16:42 عصر
من یک فرم دارم که کاربر بعد از وارد کردن اطلاعات و نظر خودش در رابطه به یک مطلب نظرش رو در وب سایت ثبت میکنه

فرم به این شکل هست

<form action="" method="post" id="commentform">
<p>
<label for="author">نام <span class="required">*</span></label>
<input id="author" name="author" value="" size="30" aria-required="true" required="required" type="text">
</p>
<p>
<label for="email">ایمیل <span class="required">*</span></label>
<input id="email" name="email" value="" size="30" aria-describedby="email-notes" aria-required="true" required="required" type="text">
</p>
<p>
<label for="comment">دیدگاه</label>
<textarea id="comment" name="comment" cols="45" rows="8" aria-describedby="form-allowed-tags" aria-required="true" required="required"></textarea>
</p>
<p>
<input name="save" id="submit" class="submit" value="فرستادن دیدگاه" type="submit">
</p>
</form>

و کد php به این صورت هست

<?php
if(isset($_POST["save"]))
{
$author = Prevent($_POST["author"]);
$email = Prevent($_POST["email"]);
$comment = Prevent($_POST["comment"]);
$sql = "INSERT `$tbl_comments SET `name`=?,`email`=?,`comment`=?";
$result_r = $connect->prepare($sql);
$result_r->bindValue(1,$author);
$result_r->bindValue(2,$email);
$result_r->bindValue(3,$comment);
if($result_r->execute())
{
echo "<script>alert('success');</script>";
} else {
echo "<script>alert('wrong');</script>";
}
}
?>

ولی زمانی که روی ارسال دیدگاه کلیک میشه wrong میده

jafaripur
دوشنبه 01 تیر 1394, 16:57 عصر
کوئری رو اشتباه نوشتی:
INSERT INTO tbl_comments(`name`, `email`, `comment`)VALUES(?, ?, ?)

کلا کد رو افتضاح زدی کمی بهترش کن.

jafaripur
دوشنبه 01 تیر 1394, 17:03 عصر
اینجوری بهتره. به نحوه نمایش دادن پیغام ها هم دقت داشته باش.

if(isset($_POST["save"]))
{
$sql = "INSERT INTO tbl_comments(`name`, `email`, `comment`)VALUES(:name, :email, :comment)";
$result_r = $connect->prepare($sql);

$result = $result_r->execute([
':name' => filter_input(INPUT_POST, 'author'),
':email' => filter_input(INPUT_POST, 'email'),
':comment' => filter_input(INPUT_POST, 'comment'),
]);
if($result)
{
echo "success";
} else {
echo "error";
}
}

بهتر هستش برای دیتابیس کد اینلاین ننویسی، انتقال بده تو یه کلاس. OOP رو رعایت کن بعد با فریم ورک. Pure نوشتن دیگه خوب نیست.

H:Shojaei
دوشنبه 01 تیر 1394, 20:52 عصر
به نظر من استفاده از bindParam کد اضافی زدنه به این صورت هم میشه نوشت:


<?php if(isset($_POST["save"]))
{
$author = Prevent($_POST["author"]);
$email = Prevent($_POST["email"]);
$comment = Prevent($_POST["comment"]);
$param=array($author,$email,$comment) ;
$sql = "INSERT `$tbl_comments SET `name`=?,`email`=?,`comment`=?";
$result_r = $connect->prepare($sql);
if($result_r->execute($param))
{
echo "<script>alert('success');
</script>";
} else {
echo "<script>alert('wrong');
</script>";
} } ?>

7asemoon
دوشنبه 01 تیر 1394, 22:00 عصر
کوئری رو اشتباه نوشتی:
$sql = "INSERT INTO `tbl_comments` SET `name`=?,`email`=?,`comment`=?";

کلا کد رو افتضاح زدی کمی بهترش کن.

عزیزم من خطای کوئری ندارم من گفتم چرا wrong میده یعنی Execute نمیکنه

7asemoon
دوشنبه 01 تیر 1394, 22:01 عصر
اینجوری بهتره. به نحوه نمایش دادن پیغام ها هم دقت داشته باش.

if(isset($_POST["save"]))
{
$sql = "INSERT INTO `tbl_comments` SET `name` = :name, `email`= :email, `comment`= :comment";
$result_r = $connect->prepare($sql);

$result = $result_r->execute([
':name' => filter_input(INPUT_POST, 'author'),
':email' => filter_input(INPUT_POST, 'email'),
':comment' => filter_input(INPUT_POST, 'comment'),
]);
if($result)
{
echo "success";
} else {
echo "error";
}
}

بهتر هستش برای دیتابیس کد اینلاین ننویسی، انتقال بده تو یه کلاس. OOP رو رعایت کن بعد با فریم ورک. Pure نوشتن دیگه خوب نیست.

من فعلا دارم در سطح میتدی سیستم رو پیاده میکنم اگه ممکن هست بگین مشکل کدم در چی هست

7asemoon
دوشنبه 01 تیر 1394, 22:01 عصر
به نظر من استفاده از bindParam کد اضافی زدنه به این صورت هم میشه نوشت:


<?php if(isset($_POST["save"]))
{
$author = Prevent($_POST["author"]);
$email = Prevent($_POST["email"]);
$comment = Prevent($_POST["comment"]);
$param=array($author,$email,$comment) ;
$sql = "INSERT `$tbl_comments SET `name`=?,`email`=?,`comment`=?";
$result_r = $connect->prepare($sql);
if($result_r->execute($param))
{
echo "<script>alert('success');
</script>";
} else {
echo "<script>alert('wrong');
</script>";
} } ?>

خیلی ممنون ولی جواب من رو ندادین که مشکل کد از کجاست

H:Shojaei
دوشنبه 01 تیر 1394, 23:00 عصر
توی سینتکس کوئری دقت نکردین مشکل زیاد دارید...

7asemoon
دوشنبه 01 تیر 1394, 23:07 عصر
توی سینتکس کوئری دقت نکردین مشکل زیاد دارید...

توی سینتکس کوئری مشکلی ندارم وگرنه خطا میداد و اصلا اجازه اجرا داده نمیشد
شما با فرض اینکه این قسمت درست هست بگید چرا Wrong میده

H:Shojaei
دوشنبه 01 تیر 1394, 23:16 عصر
نه دیگه مشکل دارید...


$sql = "INSERT `$tbl_comments SET `name`=?,`email`=?,`comment`=?";

بعد متغیر جدول یک (`) کم گذاشتید...

7asemoon
سه شنبه 02 تیر 1394, 08:08 صبح
نه دیگه مشکل دارید...


$sql = "INSERT `$tbl_comments SET `name`=?,`email`=?,`comment`=?";

بعد متغیر جدول یک (`) کم گذاشتید...

اصلاح شد ولی بازهم جواب نداد

H:Shojaei
سه شنبه 02 تیر 1394, 08:20 صبح
الآن کد کامل رو بذارید ببینیم چی نوشتید؟

jafaripur
سه شنبه 02 تیر 1394, 08:22 صبح
عزیز توی کوئری Insert رو مثل Update نوشتی باید به این شکل بنویسی:
INSERT INTO tbl_comments(`name`, `email`, `comment`)VALUES(?, ?, ?)

7asemoon
سه شنبه 02 تیر 1394, 08:54 صبح
عزیز توی کوئری Insert رو مثل Update نوشتی باید به این شکل بنویسی:
INSERT INTO tbl_comments(`name`, `email`, `comment`)VALUES(?, ?, ?)

با این تغییرات هم باز مشکل قبل پابرجاست

7asemoon
سه شنبه 02 تیر 1394, 08:55 صبح
لطفا یکی کمک کنه

H:Shojaei
سه شنبه 02 تیر 1394, 08:57 صبح
عزیز توی کوئری Insert رو مثل Update نوشتی باید به این شکل بنویسی:
INSERT INTO tbl_comments(`name`, `email`, `comment`)VALUES(?, ?, ?)
کوئری ایشون به جز یک (`) که کم داشت اشکال دیگه ای نداره...
کوئری رو به چندین روش میشه نوشت حتی into هم توی insert نگذارید باز هم درست عمل میکنه چه به صورت update نوشته بشه چه به صورت پرانتزی باز هم فرقی نداره اجرا میشه...

H:Shojaei
سه شنبه 02 تیر 1394, 08:58 صبح
لطفا یکی کمک کنه
کد کاملی که الآن اصلاح کردید رو نگذاشتید...!

7asemoon
سه شنبه 02 تیر 1394, 09:07 صبح
if(isset($_POST["send"]))
{
$author = Prevent($_POST["author"]);
$email = Prevent($_POST["email"]);
$comment = addslashes($_POST["comment"]);
$sq = "INSERT tbl_cms SET `name`=?,`email`=?,`comment`=?";
$result_r = $connect->prepare($sq);
$result_r->bindValue(1,$author);
$result_r->bindValue(2,$email);
$result_r->bindValue(3,$comment);
if($result_r->execute())
{
echo "<script>alert('success');</script>";
} else {
echo "<script>alert('wrong');</script>";
}
}

7asemoon
سه شنبه 02 تیر 1394, 09:15 صبح
کد کاملی که الآن اصلاح کردید رو نگذاشتید...!

کد رو گذاشتم

رضا قربانی
سه شنبه 02 تیر 1394, 10:04 صبح
کد رو گذاشتم

سلام و خسته نباشی

کل صفحه رو اینجا Zip ضمیمه کن : هم فرمی که ارسال می کنید و هم قسمت php ( کلا صفحه رو اینجا بذار )

اینطوری خیلی راحت تر جواب می گیری :چشمک:

7asemoon
سه شنبه 02 تیر 1394, 10:26 صبح
سلام و خسته نباشی

کل صفحه رو اینجا Zip ضمیمه کن : هم فرمی که ارسال می کنید و هم قسمت php ( کلا صفحه رو اینجا بذار )

اینطوری خیلی راحت تر جواب می گیری :چشمک:

با قرار دادن کلش مشکل حل نمیشه چون خیلی تو در تو هست و قطعا کسی جز خودم متوجه نمیشه
ولی کدی که مربوط به قسمت نظرات هست دقیقا کپی شده از روی پروژه خودم
همه چیش ظاهرا درسته ولی نمیدونم چرا wrong میده

7asemoon
سه شنبه 02 تیر 1394, 10:26 صبح
منظورم از wrong اینه که قسمت مربوط به else کد عمل میکنه

رضا قربانی
سه شنبه 02 تیر 1394, 12:03 عصر
با قرار دادن کلش مشکل حل نمیشه چون خیلی تو در تو هست و قطعا کسی جز خودم متوجه نمیشه
ولی کدی که مربوط به قسمت نظرات هست دقیقا کپی شده از روی پروژه خودم
همه چیش ظاهرا درسته ولی نمیدونم چرا wrong میده

مطمئنی فقط خودت متوجه می شی ؟ :چشمک:

7asemoon
سه شنبه 02 تیر 1394, 16:31 عصر
مطمئنی فقط خودت متوجه می شی ؟ :چشمک:

دوست عزیز منظورم این نیست که کدش عجیب غریبه یا اینکه حرفه ای هست
اتفاقا بی نهایت ساده اس کدش
منظورم اینه که من مدام صفحات رو include کردم و ضعف از من هست بنابراین اگر بخام بزارم باید صفحات زیادی رو قرار بدم
امیدوارم که اگه برداشت اشتباهی از صحبت های من شده با این توضیح برطرف شده باشه
و در نهایت ممنون میشم اگر مشکلی در کدی که اول تاپیک گذاشتم میبینید به من بگید که رفع بکنم چون مشکل من دقیقا همون چیزی هست که اول تاپیک نوشتم