PDA

View Full Version : سوال: گرفتن query



comptech
پنج شنبه 10 تیر 1389, 23:14 عصر
سلام.من 5 تا جدول دارم :


1-user(userId, flatNo)
2-food(foodId, name)
3-orders(ordersId, date)
4-user_orders(user_orders_Id, userId, ordersId)
5-food_orders(food_orders_Id, foodId, ordersId)


query زير رو نوشتم ولي خطا داره. لطفا كمك كنيد:


$query="select count(ordersId) from user_orders where userId in(select userId from user where flatNo=1) and ordersId in(select
ordersId from orders where date<=' ' and date>=' ' and food_orders.foodId=1)";

امیـرحسین
جمعه 11 تیر 1389, 00:05 صبح
باید یه چیزی شبیه این کوئری بنویسید:
SELECT COUNT(ordersId)
FROM user_orders
LEFT JOIN user
ON
user_orders.userId = user.userId
AND user_orders.flatNo = 1
LEFT JOIN orders
ON
user_orders.ordersId = orders.ordersId
LEFT JOIN food_orders
ON
food_orders.foodId = 1
WHERE
user_orders.date <= ' ' AND user_orders.date >= ' '

comptech
جمعه 11 تیر 1389, 17:40 عصر
از راهنمايي شما ممنون. من query زير رو نوشتم :


$query="select count(ordersId)
from user_orders
left join user
on
user_orders.userId=user.userId
and user.flatNo=1
left join orders
on
user_orders.ordersId=orders.ordersId
and orders.date<='$d2' and orders.date>='$d1'
left join food_orders
on
food_orders.foodId=1
where user_orders.ordersId=food_orders.ordersId";


ولي خطا داد :

query failed :Column 'ordersId' in field list is ambiguous

امیـرحسین
جمعه 11 تیر 1389, 18:55 عصر
ordersId خط اول رو به user_orders.ordersId تبدیل کنید.

comptech
شنبه 12 تیر 1389, 00:16 صبح
خيلي ممنون درست جواب داد .
يك سوال ديگه هم دارم .من 10 تا check box دارم كه مي خوام به ازاي تيك خوردن هر تعداد از آنها(مثلا يكي ،دوتا و يا همه آنها) كار مشخصي انجام بدم. به نظرم استفاده از if خيلي جالب نيست و طولاني ميشه. به نظر شما چطور اين كار رو انجام بدم ؟

Reza1607
شنبه 12 تیر 1389, 08:16 صبح
از دستور زیر استفاده کن


foreache($_POST['chk'] as $key=>$value){
echo "your selected : ".$value;
}
فقط نام چک باکس هات باید یکی باشه و value ش هم مقدار اون های باشه


<input type='checkbox' value='1' name='chk[]'>
<input type='checkbox' value='2' name='chk[]'>

comptech
یک شنبه 13 تیر 1389, 19:28 عصر
آقا من تعداي چك باكس رو مي خوام با دستور for چاپ كنم و به ازاي هر تعداد از آن ها كه تيك خورده باشه كار خاصي انجام بدم .لطفا راهنمايي كنيد

امیـرحسین
یک شنبه 13 تیر 1389, 22:37 عصر
شما بالاخره باید راهی برای تشخیص checkboxها از بقیه داشته باشید. راهی که رضا جان پیشنهاد کردند سریعترین راهه.
وقتی اونجوری نامگذاری کنید، دیگه for هم نمیخواد با count هم می تونید تعداد رو بگیرید:
count($_POST['chk']);

comptech
دوشنبه 14 تیر 1389, 19:20 عصر
ببينيد آقا در كد زير من مي خوام به ازاي تيك خوردن هر چك باكس عدد i كه شماره هر يك از چك باكس ها است نيز چاپ شود ، ولي فقط براي اولين چك باكس تيك خورده، عدد i معادل آن چاپ مي شود



for($i=1; $i<=$c; $i++){
echo"<form action='' method='post'>";
echo"<input type='checkbox' name='chn' value='$i'><br>";
echo"</form>";

}//end for
if(isset($_POST['chn'])) {
echo $_POST['chn'];
}

امیـرحسین
دوشنبه 14 تیر 1389, 21:33 عصر
همه چک باکسهای شما همنام هستند پس معلومه چرا فقط یکیش کار می کنه.
باید نام رو بصورت آرایه قرار بدید. دقیقا همونجوری که یکی از دوستان مثال زدند.

comptech
سه شنبه 15 تیر 1389, 15:21 عصر
آخه ببينيد در اون مثال


foreache($_POST['chk'] as $key=>$value){
echo "your selected : ".$value;
}


در هر بار ، تيك خوردن يك چك باكس بررسي مي شود. اما من مي خوام اگه چند تا چك باكس تيك خورده باشند مقدار هر يك از آنها را در يك آرايه داشته باشم.لطفا بگيد حلقه for بالا رو چطور بنويسم كه هم به تعدادي كه در شرط حلقه نوشتم بتونم چك باكس داشته باشم و هم اينكه اگر چند تاشون تيك خورده باشند چطور مي تونم مقدار آن ها رو در يك آرايه داشته باشم. ممنون

Reza1607
چهارشنبه 16 تیر 1389, 08:39 صبح
هم اينكه اگر چند تاشون تيك خورده باشند چطور مي تونم مقدار آن ها رو در يك آرايه داشته باشم.
خوب عزیز این کد برای همین هست دیگه
برای بخش اول سوالت هم مربوط می شه به این که شما در زمان طراحی فرم ( چه به صورت دستی و چه به صورت کد php)چند تا چک باکس درست کرده باشید