طراحی فرم ارسال و قسمت دریافت اطلاعات در php

امروز دیگه با دست پر امدم . می خوام ساخت فرم ارسال اطلاعات با html و دریافت اطلاعات با php رو براتون بگم ، در واقع ما سه تا فایل می سازیم یکی برای ارسال اطلاعات که باید بازدید کننده مشخصات خودش را وارد کند که این قسمت با html ساخته می شود و قسمت بعد با php طراحی می شود که برای دریافت اطلاعات است و باید اطلاعات را در بانک اطلاعاتی mysql ثبت کند . و قسمت بعد برای خواندن اطلاعات ثبت شده است. مثلا سایتی می خواهد بازدید کننده ها وارد سایتش بشن و مثلا برای کار ثبت نام کنن و اطلاعاتشون رو برای رئیس سایت ارسال کنند میشه از این قسمت ها برای سایت استفاده کرد. 

1) اولین کاری که می کنیم باید دیتابیس و جدول رو ایجاد کنیم. برنامه ی XAMPP را اجرا می کنیم و Apach و Mysql را start کنید. و به آدرس http://localhost/phpmyadmin/ بروید و در قسمت

 jadid را وارد کنید . و روبروی آن ut8_persian_ci را انتخاب کنید  . و MySQL connection collation: را هم  ut8_persian_ci  انتخاب کنید. و دکمه ی ساختن را کلیک کنید. و در قسمت ساخت جدول جدید در پایگاه داده jadid  و در قسمت اسم نام جدول یعنی karbar را وارد کنید. و در قسمت Number of fields: عدد 3 را وارد کنید. و دکمه ی تایید را کلیک کنید.

و مشخصات زیر را وارد کنید:   

اول فیلد id را از نوع int و index از نوع PRIMARY و  A_I (مخفف AUTO_INCREMENT است.) قرار دهید.  و بقیه ی گزینه ها هم طبق جدول زیر:

ستون

نوع

طول/مقادیر

Collation

sname

VARCHAR

20

ut8_persian_ci

sfamily

VARCHAR

20

ut8_persian_ci

 

Storage Engine: پیش فرض انتخاب شده. و Collation: را هم برای سازگاری با زبان فارسی

ut8_persian_ci انتخاب کنید. و دکمه ی ذخیره را کلیک کنید. بعد از اینکه جدول را ساختید ان را انتخاب کنید و بعد در قسمت درج کلیک کنید و مشخصاتی را وارد کنید . و دکمه ی تایید را کلیک کنید.  

حالا نوبت به ساخت فرم درج مشخصات رسید . کدهای زیر را داخل Notepad ریخته و با نام form.htm در پوشه ی htdocs ذخیره کنید. اگه notepad ویندوز بود در قسمت Encoding گزینه ی UTF-8 را انتخاب کنید و اگر++ notepad بود به منوی Encoding رفته و گزینه ی Encode in UTF-8 without BOM را انتخاب کنید.

<!DOCTYPE html>

<html lang="fa">

<head>

<meta charset="UTF-8">

<title>ارسال</title>

</head>

<body>

<form method="post" dir="rtl" action="add_record.php">

نام:  <input type="text" name="sname" size="20">

فامیلی: <input type="text" name="sfamily" size="20">

<input type="submit" value="ارسال" name="B1">

<input type="reset" value="پاک" name="B2">

</form> 

</body>

</html> 

 

این فرم را قبلا توضیح دادم. کد بالا دو تا تکست ایجاد می کنه که در قسمت add_record.php اطلاعات وارد شده دریافت میشه. در قسمت name در این کد حتما باید نامی نوشته بشه تا در  قسمت add_record.php اطلاعات دریافت بشه . مثلا :"name="sfamily 


حالا نوبت قسمت دریافت اطلاعت هست . کدهای زیر را با نام add_record.php در پوشه ی htdocs ذخیره کنید. 

<!DOCTYPE html>

<html lang="fa">

<head>

<meta charset="UTF-8">

<title>دریافت</title>

</head>

<body>

<?php

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

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

$sname=$_POST['sname'];

}

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

$sfamily=$_POST['sfamily'];

}

//لوکال هاست شما

$Host="localhost";

// نام کاربری بانک اطلاعاتی 

$User="root";

// کلمه عبور بانک اطلاعاتی 

$Password="";

// نام بانک اطلاعاتی 

$Dbname="jadid";

$Link= mysql_connect($Host,$User,$Password);

//برای سازگاری به زبان فارسی

mysql_set_charset('utf8',$Link);

$Query="INSERT into `karbar` (`sname`,`sfamily`) values ('$sname','$sfamily')";  

if (mysql_db_query($Dbname,$Query,$Link)) {

print("اطلاعات ثبت شد ");

} else {

print("خطا در ثبت اطلاعات");

}

}

?>

</body>

</html>

 

حالا نوبت رسید به قسمت خواندن مطالب ثبت شده در بانک اطلاعاتی . 

کد های زیر را با نام jadval.php  در پوشه ی htdocs ذخیره کنید . 

<!DOCTYPE html>

<html lang="fa">

<head>

<meta charset="UTF-8">

<title>نمایش مطالب</title>

</head>

<body>

<?php

$servername="localhost";

$dbname="jadid";

$user="root";

$pass="";

$dblink=mysql_connect($servername,$user,$pass);

mysql_select_db($dbname,$dblink);

// انتخاب مطالب  جدول

mysql_query("SET CHARACTER SET  utf8",$dblink);

$dbresult=mysql_query("SELECT * FROM  `karbar`",$dblink);

//برای سازگاری با فارسی

while($record=mysql_fetch_assoc($dbresult))

{

print($record["sname"]."<br/>".$record["sfamily"]."<hr>");

}

mysql_close($dblink);

?>

</body>

</html>

 

حالا باید به آدرس http://localhost/form.htm بروید و مقدار نام و فامیلی را پر کنید.و روی دکمه ی submit کلیک کنید و باید پیام اطلاعات ثبت شد  را به شما بدهد.بعد باید به آدرس http://localhost/jadval.php بروید تا مطالب ثبت شده را ببینید. 

نکته : برای سازگاری با زبان فارسی من این کد زیر را در این کدها وارد کردم: 

<meta charset="UTF-8">

دستورات mysql در ورژن های جدید php پشتیبانی نمیشه. بهتره از دستورات mysqli یا pdo استفاده کنید. اینو نوشتم که دیگه سوال نکنید. این آموزشی که در بالا نوشتم مال چند سال پیش هست.

نظرات 26 + ارسال نظر
- دوشنبه 27 تیر‌ماه سال 1390 ساعت 12:38 ب.ظ

سلام.بسیار ساده و قشنگ بود.ممنون

ali چهارشنبه 9 شهریور‌ماه سال 1390 ساعت 11:29 ق.ظ

سلام
خیلی ممنون توی وب دنبال یه همچین چیزی میگشتم
میشه توضیح بدین بعد از ساختن این فایل ها اونارو چطوری میتونم توی یه هاست رایگانی مثل 000webhost.com آپلود کنم

وارد ریشه ی سایت بشو وارد فایل root و htdocs و فایل رو اونجا آپلود کن. قسمت پایگاه داده هم که معلومه.

امین سه‌شنبه 19 مهر‌ماه سال 1390 ساعت 04:12 ب.ظ

با سلام
خیلی ممنونم من چند سال پیش یک کلاس فشرده رفته بودم
که نتیجش فقط یک ذهنیت از php بود ولی الان با این مقاله خیلی قشنگ توی ذهنم نشست . . . . . ممنونم

بهار جمعه 11 آذر‌ماه سال 1390 ساعت 08:17 ق.ظ

خیلی خوب و مفید بود
مرسی

علی عسگرپور دوشنبه 2 مرداد‌ماه سال 1391 ساعت 02:36 ق.ظ http://www.iran-ahadith.persiangig.com/

سلام. واقعا مطلب به درد بخوری بود. خیلی از شما خوشم اومد. اگر می شود کد php آپلود کردن فایل هم بگذارید. با تشکر.

متشکرم.
برای این آموزش میتونید کتاب آموزش php به زبان ساده رو که خودم نوشتم رو بخونید.

مهسا دوشنبه 23 بهمن‌ماه سال 1391 ساعت 07:50 ب.ظ

سلام
خیلی واضح توضیح دادین مرسی
یه سوال:من میخوام آخرین اطلاعات وارد شده به پایگاه داده بخونم باید برنامش با php چطوری بنویسم.
نمیخوام کل اطلاعات بده فقط اطلاعات مربوط به نفر آخری که اطلاعاتش در پایگاه ثبت شده
باتشکر

شما باید دستور زیر را از حلقه بیاری بیرون یعنی از آکولاد {
print($record["sname"]."
".$record["sfamily"]."<hr>");

حمید دوشنبه 30 بهمن‌ماه سال 1391 ساعت 05:28 ب.ظ

واقعا آموزش مفیدی بود من که ازش استفاده کردم خیلی ممنون

zahra جمعه 25 اسفند‌ماه سال 1391 ساعت 12:39 ق.ظ

سلام ممنون که کمکم کردی!
ی سوال وب داشتم خواهش میکنم کمکم کن !
من یک سری متن یا اطلاعات داخل وبم ریختم حالا میخوام جستجوی پیشرفته هم بزارم تا راحت مطلبش را پیدا کنه .
مثلا:متن
عنوان خبر
تاریخ
و...
کدش چجوریه.اگر کمکم کنی واقعا ممنونت میشم .
مرسی

از این روش ها می تونید استفاده کنید
select * from `jadval` where `date` like '%matn%'
SELECT * FROM (`jadval`) WHERE MATCH (`title`,`msg`) AGAINST ('$valuei' IN BOOLEAN MODE)

zahra جمعه 2 فروردین‌ماه سال 1392 ساعت 09:47 ب.ظ

سلام
ممنون از کمکتون

مهدی فتحی شنبه 10 فروردین‌ماه سال 1392 ساعت 01:38 ب.ظ

سلام خیلی خیلی از اموزشتون ممنونم نمیدونید چقدر دنبال این گشتم.

mars چهارشنبه 21 اسفند‌ماه سال 1392 ساعت 10:13 ق.ظ

با سلام
چطور میشه متنی که قراره پیام ارسال بشه رو چطور میشه اپشن های زیر رو به اون اضاف کرد -
- یه مثال واضح = من میخوام یه ایمیل بفرستم وقتی متن رو مینویسم مخوام اسم خودم با قلم اریال و اندازه 20 باشه - منظورم همین گزینه ها و اپن هایی هستن که بالای فرم وجود دارن

ممنون

در مورد ارسال ایمیل با فرمت html جستجو کن.

تازه کار یکشنبه 10 فروردین‌ماه سال 1393 ساعت 07:46 ب.ظ

سلام ممنون بابت آموزشات

ی سوال حالا فرض کن من بخوام فرمم 4 تا مقدار رو بفرسته به آدرسی که تو action گفتم!

ب غیر از اضافه کردن فیلدهای جدید تو صفحه فرم و تغییر دادن خط کد صفحه ی دریافتی به زیر :

$Query="INSERT into $Tablname values ('$_POST[Name]','$_POST[Family]','$_POST[Age]','$_POST[City]') ";

کار دیگه ای باید انجام داد ؟!

چون این شکلی ( خطا در ثبت اطلاعات) میده !!

شما در جدول از دیتابیس در قسمت phpmyadmin فیلد های جدید رو اضافه کردید؟

تازه کار یکشنبه 10 فروردین‌ماه سال 1393 ساعت 08:31 ب.ظ

ببخشید یادم رفت بگم تعداد ستون ها رو هم تو دیتابیس 4 تا دادم!

الان کد شما درست برام ارسال نشده و نمیدونم تعداد فیلد های شما چند تاست؟ ولی هر چی هست شما باید به تعدادش یک فیلد در دیتابیس ایجاد کنید.

تازه کار یکشنبه 10 فروردین‌ماه سال 1393 ساعت 09:28 ب.ظ

سلام دوباره

فایلام رو براتون آپلود کردم :
http://uploadboy.com/3z2sg0tho4y1.html

column ها و دیتابیس فکر نکنم مشکلی داشته باشن. خواهشا اگه میشه ی چک کنید کدهام رو . . .

شما اصلاً فیلد هایی که مقدار باید بهش ریخته بشه رو مشخص نکردید.
صفحه ی 65 و 66 کتاب رو ببینید: یه همچین خطی هست:
$Query="INSERT into `karbar` (`sname`,`sfamily`) values ('{$name}','{$lastname}')";

افسانه شیرازی جمعه 17 مرداد‌ماه سال 1393 ساعت 12:23 ق.ظ http://www.irwte.com

تشکر . آموزش مفیدی بود

میلاد یکشنبه 30 آذر‌ماه سال 1393 ساعت 12:42 ق.ظ

خط ۲۳ مربوط به قسمت دریافت , خطا میده....
دلیلش چیه؟؟؟؟
من با wampserver امتحانش کردم

چه خطایی بهت میده؟

وحید و افشین سه‌شنبه 2 دی‌ماه سال 1393 ساعت 05:35 ب.ظ http://tajrobe.samenblog.com

آقا خیلی خیلی دمت گرم استفاده کردیم ما دو دانشجوی رشته کامپیوتر هستیم
و8 نمره درس طراحی وب رو با توضیحات شما گرفتیم خیلی عزیزی!

M سه‌شنبه 5 خرداد‌ماه سال 1394 ساعت 10:33 ق.ظ

با سلام و تشکر فراوان.
یه سوال دارم اگر بخواهیم کاربرانی که ثبت نام می کنند علاوه بر اینکه در phpmyadmin (پایگاه داده) نشان داده شود، در صفحه سایت هم قابل نمایش باشد و بتوانیم آن را حذف و اضافه کنیم از چه کدی باید استفاده کنیم؟؟؟؟
متشکرم.

پیشنهاد میکنم این کتاب رو بخونید:
http://barnamenevisi.blogsky.com/1393/01/01/post-123

SMN دوشنبه 15 تیر‌ماه سال 1394 ساعت 02:56 ب.ظ

سلام آقا دمت گرم فوق العاده بود

سلیمان مرادی جمعه 28 اسفند‌ماه سال 1394 ساعت 12:23 ق.ظ

سلام.واقعا ممنون بابت این آموزش مفید تون .
واقعا تو این زمینه مشکل داشتم.بازم ممنون.
یه سوال داشتم؟
مثلا اگر من دو بار اسم و فامیل یکسانی رو وارد کردم و ارسال کردم به من هشدار بده که این اسم و فامیل از قبل ذخیره شده.
ممنون میشم اگه کمکم کنید

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

علی چهارشنبه 8 اردیبهشت‌ماه سال 1395 ساعت 10:47 ق.ظ

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

در بخش کتاب های همین وبلاگ کتاب آموزش آسان و کاربردی php و mysql را دانلود کنید.

محمد چهارشنبه 18 اسفند‌ماه سال 1395 ساعت 11:31 ب.ظ

دمـــــــــــــــت گــــــــــــــرم

amir جمعه 8 اردیبهشت‌ماه سال 1396 ساعت 01:17 ب.ظ

Fatal error: Uncaught Error: Call to undefined function mysql_connect() in E:\xamp\htdocs\add_record.php:24 Stack trace: #0 {main} thrown in E:\xamp\htdocs\add_record.php on line 24
واسعه من هنگام ثبت این ارور میاد کمک کنید

دستورات mysql دیگر در ورژن های جدید php پشتیبانی نمیشه . بهتره از mysqli یا pdo استفاده کنید.

فانوس جمعه 26 خرداد‌ماه سال 1396 ساعت 03:19 ب.ظ

ممنون
بالفرض ما در فرم ثبت نام کد ملی هم گذاشته باشیم و ثبت نام هم انجام بشه
حالا برای فراخوانی اطلاعات یک شخص با کد ملی چجوری باید بنویسیم ؟ ممنون میشم کدشو بزارید

SELECT * FROM `jadval` WHERE code=123456

sara سه‌شنبه 14 خرداد‌ماه سال 1398 ساعت 10:34 ق.ظ

سلام ممنون از اموزش خوبتون
چطور میشهموقع ثبت نام یک مقدار برگشتی به کاربرنمایش داده بشه مثلاشماره صندلی ممنون میشم راهنمایی کنید

می تونید با ثبت رکورد شماره ی رکورد ثبت شده رو هم چاپ کنید ، شما اگر با دستورات mysql کار می کنید می تونید از دستور mysql_insert_id() برای گرفتن شماره ی رکورد استفاده کنید.

sara یکشنبه 26 خرداد‌ماه سال 1398 ساعت 09:03 ق.ظ

سلام من این کد ها که نوشتم چون phpاز mysqlپشیبانی نمیکند تبدیلش کردم به mysqli ولی در قسمت دریافت خط71و 75 ارورمیده و خط 75یعنی این قسمت if (mysql_db_query($Dbname,$Query,$Link))
اصلا اجازه نمیده my sqliبشه و وقتی به این mysqliتبدیلش میکنم از حالت سبزرنگ ودرستی خودش در واقع خارج میشه دلیلش چیه؟

مثالش اینجا هست : https://www.w3schools.com/php/func_mysqli_query.asp

برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد