PDA

View Full Version : ذخیره اطلاعات فرم در دیتابیس با AJAX



abbas3zaar
سه شنبه 25 اسفند 1394, 15:14 عصر
ذخیره اطلاعات فرم در دیتابیس با AJAX

سلام.
این فرم منه:


<form>
<div class="form-line block">
<input type="text" id="name" name="name" placeholder="نام خود را وارد کنید">
</div>
<div class="form-line block">
<input type="text" id="email" name="email" placeholder="ایمیل خود را وارد کنید">
</div>
<div class="form-line block">
<textarea name="content" id="content" cols="0" rows="0" placeholder="پیام خود را وارد کنید"></textarea>
</div>
<div class="form-line">
<button type="submit" name="send" id="send" class="sendbutton block">ارسال پیام</button>
</div>

</form>

میخوام وقتی ارسال پیام رو زدم زیر همون دکمه پیام تایید بیاد و مقادیر(نام،ایمیل، پیام، تاریخ ارسال و آی پی ارسال کننده) در دیتابیس ذخیره شه.
خودم چون سرچ کردم Insert into mysql using ajax و php ajax post و ... نتونستم با آموزشی که داده بود درست کنم و همش مشکل داشتم واسه همین خواستم راهنمایی کنید

اگه ممکنه روی همین کدهای من توضیح بدید ممنون


ظاهر:

http://8pic.ir/images/k795mkrtby3dylak68dx.jpg

Farshid007
سه شنبه 25 اسفند 1394, 16:42 عصر
احتیاجی به آژاکس نیست البته برای قشنگ تر شدن می تونید از آژاکس هم کمک بگیرید ولی نیازی نیست و می تونید با دستورات ساده PHP این کارو انجام بدید (معمولن برای این جور فرم ها از آزاکس استفاده نمی کنند )
کد های PHP که نوشتید رو بزارید
در ضمن این چه فرمی که نه ویژگی متدش مشخه ن اکشن:افسرده::افسرده:

abbas3zaar
سه شنبه 25 اسفند 1394, 18:59 عصر
احتیاجی به آژاکس نیست البته برای قشنگ تر شدن می تونید از آژاکس هم کمک بگیرید ولی نیازی نیست و می تونید با دستورات ساده PHP این کارو انجام بدید (معمولن برای این جور فرم ها از آزاکس استفاده نمی کنند )
کد های PHP که نوشتید رو بزارید
در ضمن این چه فرمی که نه ویژگی متدش مشخه ن اکشن:افسرده::افسرده:

روش معمولی با $_post و $_GET و دریافت مقدار post شده در صفحه دیگه رو بلدم!:افسرده:، من مشکلم اینجاست که نمیخوام post back انجام شه چون قالبی که دارم برای ورود به منوی تماس با ما با انیمیشین جی کوئری هست و اگر صفحه ریفرش بشه دوباره انیمیشن برمیگرده به حالت قبلیش. من نمیخوام post back بشه.

blue.web9
سه شنبه 25 اسفند 1394, 21:46 عصر
اول واسه فرم id میزاریم و بعد با id چک میکنیم اگر این فرم ارسال شد با ajax ارسال بشه .اگر تو دیتابیس ثبت شد یا کلا پردازش با موفقیت انجام شد داخل success تغییرات غالب انجام بدید.

فرض میکنیم id فرم این باشه :


<form id="contact">
.
.
.
</form>

به این صورت اطلاعات ارسال می کنیم:


$(document).ready(function (){
$('#contact').submit(function (e){
$.ajax({
type: 'POST',
url: 'test.php',
data: $(this).serialize(),
success( data ){

},
});
e.preventDefault();
});
});

سمت سرور به طور معمول با POST اطلاعات دریافت و پردازش میکنیم.

abbas3zaar
پنج شنبه 27 اسفند 1394, 10:02 صبح
من انجام دادم البته یه سورس ساده از نت پیدا کردم وقتی انگلیسی میزنم جواب میده ولی وقتی فارسی تایپ میکنم در مقدار نتیجه زیر میاد.

انگلیسی:
{"fname":"abbas","lname":"ali","email":"abbas@gmail.com"}

فارسی:
{"fname":"\u0634\u0633\u06cc\u0634\u0633","lname":"\u0634\u0633","email":"\u06cc\u0634\u0633"}


اگه میشه این فایلی که ضمیمه کردم رو برام نگاه کنید و مشکل فارسی شو درست کنید. ممنون
در فایل ajax.php دستور json_encode چیکار میکنه؟ برای نمایش مقادیر post شده حتما باید با json_encode نمایش داد؟

blue.web9
پنج شنبه 27 اسفند 1394, 17:55 عصر
دستور json_encode در ajax.php مقدار های post شده به فرمت json تبدیل میکنه ، به همین دلیل حروف فارسی هم تبدیل می شوند.
داخل فایل ajax.php بدون تبدیل به درستی میتونید مقدار های مورد نظر ببینید و بعد در صورت نیاز تبدیل کنید.
این کد داخل ajax.php قرار بدید:


echo $_POST['fname'].'<br>';
echo $_POST['lname'].'<br>';
echo $_POST['email'].'<br>';

abbas3zaar
شنبه 29 اسفند 1394, 11:25 صبح
دستور json_encode در ajax.php مقدار های post شده به فرمت json تبدیل میکنه ، به همین دلیل حروف فارسی هم تبدیل می شوند.
داخل فایل ajax.php بدون تبدیل به درستی میتونید مقدار های مورد نظر ببینید و بعد در صورت نیاز تبدیل کنید.
این کد داخل ajax.php قرار بدید:


echo $_POST['fname'].'<br>';
echo $_POST['lname'].'<br>';
echo $_POST['email'].'<br>';


ممنون درست شد. حالا اگر بخوام وقتی تکست باکس ها خالی بود ارسال رو زد عمل post انجام نشه و یه پیام بیاد که نام کاربری را خالی نگذارید با جکوئری کدش چیه؟