PDA

View Full Version : کمک در رابطه با گرفتن اطلاعات از دیتابیس



babak869
دوشنبه 14 خرداد 1386, 08:26 صبح
سلام
من برای یه فروشگاه اطلاعات کالا و قیمت و کد رو از دیتابیس میخونم و در صفحه لود میکنم .


while ($a_row=mysql_fetch_assoc($qury))
{
خواندن اطلاعات از دیتابیس و چاپ مشخصات کالاها در قالب جدول
}


حالا میخوام توی همین صفحه اطلاعات مربوط به کالا رو به سبد خرید اضافه کنم . هر کالا در یه Fieldset قرار میگیره که مشخصات و نام و ... داره و یه تکست باکس و یه دگمه با عنوان (اضافه کردن به سبد خرید) . و این تکست باکس ها هم با شماره Id هر کالا در زمان خواندن از دیتابیس شماره گذاری میشن .مثه :


print "<input type='text' value='1' name='tedad".$a_row["id"]."' size='1' maxlength='2'> ";
print "<input type='submit' value='اضافه کردن به سبد خرید' name='submit".$a_row["id"]."'>";

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



if (isset($_POST['submit'.$a_row["id"]])== 'اضافه کردن به سبد خرید'){
.
..
...
$qry = mysql_query(" INSERT INTO $tb (`kala` , `price` , `total` )
VALUES ('$kala' , '$price' , '$total' )");
}


اگه دوستان محبت کنند و راهنمایی بفرمایند ممنون میشم
موفق باشید

armin390
دوشنبه 14 خرداد 1386, 09:13 صبح
می تونی نام ورودی ها رو به صورت آرایه بذاری...


print "<input type='text' value='1' name='tedad[".$a_row["id"]."]' size='1' maxlength='2'> ";
print "<input type='submit' value='اضافه کردن به سبد خرید' name='submit[".$a_row["id"]."]'>";


و در نهایت هم مثلاً با array_keys ببینی که کدوم یکی سابمیت شده...

babak869
دوشنبه 14 خرداد 1386, 09:32 صبح
می تونی نام ورودی ها رو به صورت آرایه بذاری...


print "<input type='text' value='1' name='tedad[".$a_row["id"]."]' size='1' maxlength='2'> ";
print "<input type='submit' value='اضافه کردن به سبد خرید' name='submit[".$a_row["id"]."]'>";


و در نهایت هم مثلاً با array_keys ببینی که کدوم یکی سابمیت شده...

ممنونم
مشکل در دسترسی به اون آرایه ست . اگه میشه یه کم بیشتر توضیح بدید ممنون میشم
موفق باشید

musiox
دوشنبه 14 خرداد 1386, 14:35 عصر
شما ارزش دکمه سابمیت رو از طریق post میفرستی؟
شما برای هر کالا یه فرم ایجاد کردی ؟ اگه اینطوریه کافیه که وقتی داری اطلاعات رو از جدول میگیری یه تکس باکس مخفی تو فرمات بزاری که اسمش pid ( آی دی کالا ) باشه و ارزشش آیدی کالایی که گرفتی . اینجوری وقتی که کاربر روی دکمه مورد نظرت کلیک کرد میفهمی کی به کیه . هر وقت اطلاعات از طرف کاربر میاد می فهمی که کدوم کالا باید اظافه بشه . اینکاری که کردی کار سختیه . چون متغیرات معلوم نیست و ممکنه که تو هر بار ارسال اطلاعات , متغیر هایی با نام های مختلف بیاد ولی نمیگم که نمیشه این کار رو کرد . با این کار چند تا متغر داری که ممکنه به صفحه ارسال بشه مثلا pid , tedad ,... به جای tedad1 , tedad2 ,....

babak869
دوشنبه 14 خرداد 1386, 16:26 عصر
از جوابتون ممنونم
روش شما هم فکر جالبیه که به ذهنم نرسیده بود.
من برام فرقی نداره چه روشی باشه فقط میخوام جواب بگیرم
مشکل من اینه که باید نامه کالا و قیمتها رو هم با همون آیدی کدگذاری کنم یعنی


$kala = $a_row["kala"];

راحت تر بگم .من باید یه اینطور چیزی داشته باشم


kala1 = "lllll";
price1 = 22222;
tedad1 = 2;

kala2 = "dddddd";
price2 = 3333;
tedad2 = 3;

....
......
........


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

خیلی روی این موضوع کار کردم اما متاسفانه جواب نمیده . اگه بتونید کمک کنید ممنون میشم.
لطفا اگه نمونه کدی در این زمینه دارید بزارید
متشکرم

musiox
دوشنبه 14 خرداد 1386, 18:24 عصر
شما واسه اینکار دو تا جدول دارید : ( البته این نظر منه )
1. جدول کالا :
1. کد کالا
2. نام کالا
3. قیمت کالا
4. ... ( بقیه ستون ها نیاوردم چون با اینا کار داریم )
2. جدول سبد خرید :
1. کد خرید
2. کد کالا ( شماره کالایی که انتخاب شده )
3. کد کاربر ( کاربری که سفارش میده . اگه ناحیه کاربری داشته باشیم )
4. تعداد
5. وضعیت خرید ( خرید انجام شده در چه مرحله هستش - این ستون مهمه )
6. ... ( بقیه ستون ها رو نیاوردم چون باهاشون کار نداریم )

خب اطلاعات رو از جدول کالا میگیریم .


while ($a_row=mysql_fetch_assoc($qury))
{
اون چیزایی که می خوایم نشون بدیم .
}

توی این حلقه باید برای هر جنسمون یه فرم تعریف کنیم . یعنی یه چیز تو این مایه ها



print "<form action='...' method='...'>";
print "<input type='text' value='1' name='tedad' size='1' maxlength='2'> ";
print "<input type='submit' value='اضافه کردن به سبد خرید'>";
print "<input type='hidden' value='$a_row[id]' name='kala'>";
print "</form>";


حالا اگه کاربر روی "اضافه کردن به سبد خرید" کلیک کنه کد کالا بهمراه تعداد به صفحه مورد نظر ما فرستاده میشه . حالا ما این تقاضا رو تو جدول سبد خرید اضافه می کنیم .

musiox
دوشنبه 14 خرداد 1386, 22:29 عصر
من که جدولات رو ندارم ولی همینطوری نگاه می کردم این خط برنامت که خط 35 هستش مشکل داره باید اینجوری باشه .

isset($_POST['submit['.$a_row["id"].']'])
فکر کنم به خاطر این وارد if نمیشه . در ضمن isset مقدار true یا false بر میگردونه پس هیچوقت این دو تا برابر نمیشن . چون اون چیزی که شما نوشته بودی ( ورودی با این نام )
submit[".$a_row["id"]."] هیچوقت به صفحه پست نمیشده پس این تابع مقدار بازگشتیش false بوده و رشته هم تنها در صورتی که طولش صفر باشه مقدارش برابر با False تلقی میشه, پس هیچگاه شرط برقرار نمی شده و وارد if نمیشدین . شرطتونم باید اینطوری باشه .

if (isset($_POST['submit['.$a_row["id"].']']) && $_POST['submit['.$a_row["id"].']']== 'اضافه کردن به سبد خرید')
فکر کنم با این کار مشکله ثبتتون تو دیتا بیس حل بشه .

babak869
سه شنبه 15 خرداد 1386, 09:53 صبح
از کمکتون بسیار ممنونم . مشکل کار دقیقا همونی بود که فرمودید
اما یه مساله عجیب اینه که من تا قبل از این موضوع دقیقا مثل بالا عمل میکردم و جواب میگرفتم و تا بحال به هیچ مشکلی بر نخوردم اما چرا اینجا ایراد میگیره برام مشخص نیست .
من از اینکه لطف فرمودید وقتتون رو صرف کردید و با حوصله منو کمک و راهنمایی کردید بسیار متشکر و سپاسگزارم
امیدوارم در تمامی مراحل زندگی موفق و سربلند باشید