PDA

View Full Version : سوال: ثبت اطلاعات تو یه جدول با بکار گیری یک فایل



h_qorbani
چهارشنبه 03 شهریور 1389, 09:55 صبح
سلام
روشی که من برای ثبت اطلاعات یه فرم تو یه جدول از بانک mysqlیاد گرفتم اینه که تو یه فایل فرم رو طراحی میکنیم و توسط یه فایل دیگهای این اطلاعات به بانک منتقل میشن.
آیا میشه هر دو کار رو توی همون فایل اول که مربوط به ساخت فرم ثبت اطلاعات است انجام داد؟
دلیل این خواسته ام اینه که میخوام پس از ثبت اطلاعاتم توی همون صفحه ی اول که کاربر دکمه ثبت رو میزنه پیغام مناسبشو دریافت کنه.نمی خوام بخاطر این پیغام مجبور شم چند صفحه (فایل) بسازم.
ممنون

bestirani2
چهارشنبه 03 شهریور 1389, 13:54 عصر
واضح تر با مثال بگو

h_qorbani
چهارشنبه 03 شهریور 1389, 15:10 عصر
واضح تر با مثال بگو

برای مثال یه نمونه گذاشتم ، من میخوام دستورات فایل sending kind.php داخل همون فایل ایندکس نوشته شه.
من فرمم داخل فایل index.php و با زدن دکمه ثبت پیغام مناسب در فایل sending kind.phpنمایش داده میشه.میخوام اگه قراره پیغامی نمایش داده شه تو همون فایل index.php نمایش داده بشه.کنار .textbox

bestirani2
چهارشنبه 03 شهریور 1389, 15:38 عصر
برای مثال یه نمونه گذاشتم ، من میخوام دستورات فایل sending kind.php داخل همون فایل ایندکس نوشته شه.
من فرمم داخل فایل index.php و با زدن دکمه ثبت پیغام مناسب در فایل sending kind.phpنمایش داده میشه.میخوام اگه قراره پیغامی نمایش داده شه تو همون فایل index.php نمایش داده بشه.کنار .textbox
منظورت استفاده از آژاکس هست؟

h_qorbani
چهارشنبه 03 شهریور 1389, 15:54 عصر
منظورت استفاده از آژاکس هست؟

فقط این راهشه؟
من ajaxبلد نیستم.
میشه یه نمونه بذارین؟

bestirani2
چهارشنبه 03 شهریور 1389, 16:14 عصر
فقط این راهشه؟
من ajaxبلد نیستم.
میشه یه نمونه بذارین؟
lگه درست فهمیده باشم
میخوای وقتی یک چیزی وارد شد به صفحه بعد نری و توی همون صفحه نتیجه رو بگذاری
اگه همینه توی اینترنت بزن php ajax script

xoogle.ir
چهارشنبه 03 شهریور 1389, 16:44 عصر
احتیاجی به Ajax نیست ایشون میخاد که اطلاعات ارسال شده توسط فرم توی همون فایل در دیتابیس ذخیره بشه نه اینکه به یک صفحه دیگه ارسال بشه. به عبارت دیگه میخاد action فرمش همون فایلی باشه که فرم توش ساخته شده.

آره دوست عزیز میشه این کار رو کرد. باید action فرم رو تغییر بدی به فایل جاری به این شکل :




<form action="" method="post">
</form>


اگر اکشن فرم رو خالی بذاری اطلاعات فرم به همون صفحه ارسال میشه.
حالا میمونه ذخیره کردن اطلاعات داخل بانک که میتونی بالای فایل index.php این کد ها رو قرار بدی :



<?php
if($_SERVER['REQUEST_METHOD']=='POST'){

// save data in bank
header('location: ?msg=done');
exit;
}
?>


با استفاده از msg هم میتونی اون پیغامی که میخای رو چاپ کنی یعنی :



if($_GET['msg']=='done'){
echo 'your msg';
}

h_qorbani
چهارشنبه 03 شهریور 1389, 17:14 عصر
احتیاجی به Ajax نیست آره دوست عزیز میشه این کار رو کرد. ب


بسیار عالی که منظورمو تموجه شدین
منتها من یخورده مبتدیم
کد های مربوط به connect و insertرو جای این خط بذارم؟

// save data in bank
بعدش میشه بگین کار این چیه؟

header('location: ?msg=done');
ممنون

xoogle.ir
چهارشنبه 03 شهریور 1389, 17:24 عصر
آره کد های مربوط به وصل شدن به دیتابیس و insert کردن رو جای اون خط بذارید.
یه مشکلی که توی این قبیل صفحات که با متد پست ارسال میشن به وجود میاد اینه که اگر کاربر دکمه f5 رو بزنه اطلاعات فرم دوباره ارسال میشه و اون اطلاعات دوباره ذخیره میشه !!
برای اینکه این مشکل رو برسرف کنید ساده ترین راه اینه که بعد از انجام عملیات از تابع header برای انتقال به همون صفحه استفاده کنید.
در اینجا برنامه به همون صفحه ریدایرکت میشه و پارامتر msg رو برابر با done قرار میده که شما میتونید با استفاده از کدی که بهتون دادم هر جایی که از فرمتون که خاستید پیغام مورد نظر رو چاپ کنید.

h_qorbani
چهارشنبه 03 شهریور 1389, 17:30 عصر
آره کد های مربوط به وصل شدن به دیتابیس و insert کردن رو جای اون خط بذارید.

من این کارو کردم اما از این خط خطا میگیره

header('location: ?msg=done');


Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\testkind\index.php:10) in C:\wamp\www\testkind\index.php on line 32

Hell Lord
چهارشنبه 03 شهریور 1389, 20:39 عصر
Header ها باید قبل از هر خروجی در برنامه قرار بگیرند!
مگر اینکه output_buffering را در کانفیگ پی اچ پی ست کرده باشید!

xoogle.ir
چهارشنبه 03 شهریور 1389, 20:39 عصر
این کد ها رو باید بالای فایلت بذاری یعنی جایی که قبل از اون هیچ چیزی چاپ نشده باشه.
احتمالا دستور هدر رو بین کد های html وارد کردی.

Hell Lord
چهارشنبه 03 شهریور 1389, 20:45 عصر
میتوانید نام دکمه ی ارسالی را هم یک چیزی مثل submitButton قرار دهید و همانجا چک کنید که اگر توسط POST مقدار دکمه شما ارسال شده بود ، اون عملیات را اجرا کند!

if(isset($_POST['submitButton'])){

binyaft
چهارشنبه 03 شهریور 1389, 23:09 عصر
برای رفع اون خطا اول فایل بنویسید

ob_start();
و اخر فایل هم

ob_end_flush();

h_qorbani
پنج شنبه 04 شهریور 1389, 09:19 صبح
مسئله حل شد.بسیار عالی