View Full Version : مشکل در استفاده همزمان از insert و select
enteraks13
شنبه 17 فروردین 1387, 05:16 صبح
دو روزه که دنباله دستوری می گردم که بشه اول اطلاعات جدولی رو فراخانی کرد و با تغییر کوچکی در اطلاعات تو همان جدول در رکود های جدیدی قرار داد
بزارید با مثال بگم دانش آموزان یک مدرسه در سال بعد در مقطه بالاتری قرار می گیرند پس باید دوباره در جدول خاصی اطلاعات مربوط به ثبت نام جدید رو قرار داد بدون اینکه مشخصات اون رو دوباره وارد کنیم مشکل اینه من نمی تونم همزمان از یک جدول select , insert کنم
در مورد دستورات کنترلی مثل while بازم نمی تونم در داخل کد insert ازشون استفاده کنم لطفا راهنمایی کنید:عصبانی++:
tabib_m
شنبه 17 فروردین 1387, 17:05 عصر
هر چند در کل ساختاری که برای دیتابیست چیدی، ساختار درستی نیست.
ولی خوب اگر اصرار داری از همین شیوه استفاده کنی: چرا از while نمیتونی استفاده کنی؟ :
$query=mysql_query("select * from `table` where 1");
while($row=mysql_fetch_assoc($query)){
$field1=$row['field1']." More Chars";
$field2=$row['field2']+1;
$query2=mysql_query("insert into `table` set `field1`='$feild1' , `field2`='$field2'");
}
enteraks13
شنبه 17 فروردین 1387, 21:08 عصر
من از این راه استفاده کردم ولی جوابی ندیدم با اینکه خطا هم نداد
شما گفتید ساختار من درست نیست!؟
می شه بیشتر توضیح دهید چون من مبتدی هستم وبر روی پروژم دارم کار می کنم
راه پیشنهادی شماچیه؟
tabib_m
شنبه 17 فروردین 1387, 21:14 عصر
بهتره جدول دانش آموزان، از جدول پایه شون جدا باشه.
مثلا یه همچین جدولهایی داشته باشی:
افراد: شماره پیاپی، نام و نام خانوادگی، تاریخ تولد و ...
پایه ها: شماره پیاپی، شماره پایه، سال تحصیلی، پیاپی فرد
و یا اگر حتی برای هر سال تحصیلی جدول جداگانه ای داشته باشی، فکر میکنم بهتر باشه.
در هر صورت، کدی که میگی کار نمیکنه رو اینجا بذار...
موفق باشید.
enteraks13
شنبه 17 فروردین 1387, 21:27 عصر
راستش من هم همین کار رو کردم در جدولی دیگر مقطع وسال
رشته رو نگهداری می کنم تا اگر همون دانش آموز دوارد سال بعد شد در این جد.ل فقط stdid به اضافه مشخصات جدید مثل مقطع در سال بعد قرار می گیره مشکلم اینه که stdid رو از سال قبل بخونم و سپس در سال جدید با مشخصات تغییر کرده insertesh کنم
enteraks13
شنبه 17 فروردین 1387, 21:29 عصر
$r=mysql_query('select stdid,reshte from source where year=\''.$_REQUEST['kyear'] .'\' and maghta=\''.$_REQUEST['select'] .'\' and reshte=\''.$_REQUEST['select2'] .'\'',$dbcon);
while($prow=mysql_fetch_array($r))
{
mysql_query('insert into source set stdid=\''.$prow['stdid'].'\',year=\''.$_REQUEST['kyear'].'\',reshte=\''.$prow['reshte'].'\',maghta=\''.$magh.'\''
,$dbcon);
}
tabib_m
یک شنبه 18 فروردین 1387, 19:56 عصر
ببین این جواب میده؟
$r=mysql_query("select `stdid`,`reshte` from `source` where `year`='$_REQUEST[kyear]' and `maghta`='$_REQUEST[select]' and `reshte`='$_REQUEST[select2]'",$dbcon);
while($prow=mysql_fetch_assoc($r)){
mysql_query("insert into `source` set `stdid`='$prow[stdid]' , `year`='$_REQUEST[kyear]' , `reshte`='$prow[reshte]' , `maghta`='$magh'",$dbcon);
}
در ضمن، آیا $magh رو مقدار دهی کردی؟
کدی که گذاشته بودی میتونست درست باشه، ولی خوب مقداری نامنظم و شلوغ بود. کد بالا منظم شده و صاف و صوف شده شه.
در ضمن، مادامی که نیازی به mysql_fetch_array (http://ir.php.net/manual/en/function.mysql-fetch-array.php) نداری، بهتره از mysql_fetch_assoc (http://ir.php.net/manual/en/function.mysql-fetch-assoc.php) استفاده کنی...
موفق باشید.
enteraks13
دوشنبه 19 فروردین 1387, 12:42 عصر
ببین این جواب میده؟
$r=mysql_query("select `stdid`,`reshte` from `source` where `year`='$_REQUEST[kyear]' and `maghta`='$_REQUEST[select]' and `reshte`='$_REQUEST[select2]'",$dbcon);
while($prow=mysql_fetch_assoc($r)){
mysql_query("insert into `source` set `stdid`='$prow[stdid]' , `year`='$_REQUEST[kyear]' , `reshte`='$prow[reshte]' , `maghta`='$magh'",$dbcon);
}
در ضمن، آیا $magh رو مقدار دهی کردی؟
کدی که گذاشته بودی میتونست درست باشه، ولی خوب مقداری نامنظم و شلوغ بود. کد بالا منظم شده و صاف و صوف شده شه.
در ضمن، مادامی که نیازی به mysql_fetch_array (http://ir.php.net/manual/en/function.mysql-fetch-array.php) نداری، بهتره از mysql_fetch_assoc (http://ir.php.net/manual/en/function.mysql-fetch-assoc.php) استفاده کنی...
موفق باشید.
خیلی خیلی خیلی ممنونم مشکلم حل شد :تشویق::قلب::تشویق:
در مود این دو تابع که گفتی راستش اصلا نمی دونم فرقشون چیه وکجا استفاده می شه لطف می کنی توضیح بیشتری بدین؟
به خاطر منبع مفیدی که معرفی کردی هم ممنونم:تشویق:
oxygenws
دوشنبه 19 فروردین 1387, 16:51 عصر
نیازی به این کارای پیچیده و زمانبر نیست. از INSERT SELECT (http://dev.mysql.com/doc/refman/5.0/en/insert-select.html) استفاده کن.
پ.ن: ممکنه کوئری بالا ۱۰۰٪ کارت رو راه نندازه، مگر دقیقا بگی میخوای چیکار کنی.
enteraks13
دوشنبه 19 فروردین 1387, 18:43 عصر
[
<form action="" method="get">
<input name="flag" type="checkbox" value="far" />
<input name="flag" type="checkbox" value="eng" />
</form>
request این دستور تو browser به صورت :
flag=far& flag=eng میشه من می خوام از هر دو استفاده کنم ولی فقط یکیش تو request قرار می گیره لطفا راهنمایی کنید
در مورد insert select این دستور رو قبلا دیده بودم ولی نتونستم ازش استفاده کنم لطفا ت کاربردش رو توضیح دهید
oxygenws
دوشنبه 19 فروردین 1387, 19:00 عصر
سوالات متفاوت رو در تاپیکهای مجزا بپرس. (پست بالا رو ویرایش کن و بخشهای نامربوط رو حذف کن)
تو لینکی که دادم، روش کار رو گفته، کوئریای که نوشتی رو بنویس و بگو دقیقا میخوای چیکار کنی.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.