PDA

View Full Version : سوال: ثبت اطلاعات



M0TR!X
یک شنبه 22 بهمن 1391, 16:22 عصر
سلام.

من یه فرمی دارم که که توش 40-50 تا فیلد وجود داره و همه این فیلد ها باید پر بشن و بعد کل اطلاعات داخل دیتابس ثبت بشن ! فک کنید دارید تو یه سایت ثبت نام میکنید باید 40-50 تا فیلد پر کنید بعد ثبت نام شید !

حالا این فرم رو من میخوام بنویسم ! من اول یه تگ <form> تعریف کردم بعد کل فیلد ها رو توش تعریف کردم و بعد تگ فرم رو بستم ! Action فرم رو هم به خود همون صفحه دادم !

حالا دستور درج اطلاعات داخل دیتابیس و وصل شدن به دیتابیس :


$dbhandle=mysql_connect('localhost','root','') or die('not connect');
mysql_select_db('mydb',$dbhandle);

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

من کل فیلد ها رو داخل دستور نوشتم از این مورد که اشکالی وجود نداره ؟ اینطوری نوشتم :



;$sql="insert into mydb values('$_post[value1]','$_post[value2]','$_post[value3]','$_post[value4]')"
mysql_query('$sql',$dbhandle);


البته من الان 4 تا نوشتم اینجا نزدیک 40 تا نوشتم فقط میخوام بدونم مشکلی نداره که ؟


با این اوصاف که نوشتم کد من کجاش مشکل داره ؟ چون الان هر کاری میکنم اطلاعاتی ثبت نمیشه !

ممنون

siavashsay
یک شنبه 22 بهمن 1391, 18:06 عصر
دوست عزیز نمیدونم آیا این کد :
'$_post[value1]' که در اینجا نوشتی دقیقا هم رو هم داخل برنامت نوشتی یا نه !
چون اگه اینطور باشه که کاملا اشتباس چون چیزی به نام value1 وجود نداره مگه اینکه مقداردهی کرده باشید !
از طرفی شما توی کد insert دارید برای متغیرها از کوتیشن ' استفاده میکنید !
یعنی هر متغیر باید بین این 2 کوتیشن باشه و از طرفی مقدار هر POST هم باید بین 2 کوتیشن باشه یعنی :

$_POST['username'];
حالا اگه شما بخواین اینو توی کد insert بگذارید که اینطوری میشه :

VALUES ('$_POST['username']','$_POST['password']')
خوب الان این اشتباه هست !
شما حداقل اول متغیرهای POST رو توی یک متغیر دیگه بریزید بعد از اون استفاده کنید :

$username=$_POST['username'];
$password=$_POST['password'];
$q=mysql_query("INSERT INTO `users` VALUES('$username','$password')");

M0TR!X
یک شنبه 22 بهمن 1391, 18:33 عصر
سلام.

خیلی ممنون که جواب دادین !

ببینید من تو برنامم یه سری تگ <input > دارم. و چون همانطور که گفتم تعدادشون زیاده دیگه هر کدوم رو توی یه متغییر نریختم ! من مستقیم name اون input رو داخل دستور insert استفاده کردم ! این vaue1 که نوشتم اسم یکی از input هاست !

نمیدونم تونستم منظورمو بگم یا نه ! اگه متوجه نشدین بگین کامل توضیح بدم !

mokha21
یک شنبه 22 بهمن 1391, 18:46 عصر
دوست عزیز شما نباید اطلاعات پست شده رو بطور مستقیم وارد دیتابیس کنید ممکنه کاربر کاراکتر هایی رو وارد کنه که باعث بشه کوئری اجرا نشه .

M0TR!X
یک شنبه 22 بهمن 1391, 19:14 عصر
سلام.

شما میگید هر کدوم رو بریزم تو یه متغییر بعد کوری رو اجرا کنم ؟ اینطوری به نظرتون 30 تا متغیر تعریف کنم ؟

ravand
یک شنبه 22 بهمن 1391, 19:20 عصر
اینکه دوستان میگن مقادیر رو اول بریز توی دیتابیس میخوان بگن که قبل از ارسال به جدول یه فی لتری هم براش بذار و مستقیم وارد جدول نکن تا اینطوری دست هکر باز بشه .

mamali-mohammad
یک شنبه 22 بهمن 1391, 19:43 عصر
بعد از این :

mysql_query('$sql',$dbhandle);
اینو بنویس :

echo mysql_error();
حالا ارسال کن ببین چه اروری میده اینجا بگو

M0TR!X
یک شنبه 22 بهمن 1391, 20:17 عصر
سلام.

هکر رو ول کنید من باید فردا این پروژه تحویل استاد بدم ! امنیتش بدردم نمیخوره !

من بدون دستور $_post کوری رو اجرا میکنم با مقدار دهی دستی ! اجرا میشه دستور هم درج میشه تو دیتابیس ! ولی :

وقتی با دستور post میخوام بگیرم ثبت نمیشه ! جالب اینجاست که اصلا ارور هم نمیده هیچی !!!!! ثبت هم نمیشه !

حالا احتمالی که خودم میدم اینه که از تگ input ها باشه ! بعضی از input ها نوعشون cheekbox و combobox هست ! این دو مورد رو چطوری با دستور post باید بگیرم ؟ همون name رو بدم کافیه ؟

کلا وقتی از ورودی میگیرم چه cheekbox چه text ثبت نمیکنه !

mokha21
یک شنبه 22 بهمن 1391, 20:47 عصر
کوئری رو به صورت زیر بنویسید .


$Query="INSERT INTO table (value1,value2,value3) VALUES ('".$_POST['value1']."','".$_POST['value2']."','".$_POST['value3']."')";

در مورد checkbox :
بله همون name کافیه.
اگه checkbox رو کاربر تیک بزنه مقدار on رو پست میکنه .

M0TR!X
یک شنبه 22 بهمن 1391, 22:22 عصر
سلام.

مشکل قبلی حل شد !

ولی مشکلی که الان وجود داره اینکه که کوئری اجرا میشه ولی خالی ثبت میشه تو دیتابیس ! مشکل چیه ؟