دستورات خاص در mysql +توضیح بیشتر
سلام.
من یک جدول توو دیتابیس دارم.
این شکلی:

همونطور که میبینین در سطر meta_key متغیرهای زیادی داریم.
همونطور هم یک فرم داریم که تعدادی input داره.
یکی مبلغ رو نمایش میده و دیگری هم تعداد.
مشکل من اینه:
میخوام همزمان متغیرایی که مقدار meta_key اونا price هستن رو پیدا کنه و مقدار meta_value همون سطر و اونایی که مقدار meta_key اونا varaible هست رو پیدا کنه و مقدار meta_value همون سطر رو اکو کنه.
اینم دستور select منه:
$sql=mysql_query("SELECT * FROM wp_posts LEFT JOIN wp_postmeta ON wp_posts.ID=wp_postmeta.post_id where wp_posts.post_status='publish' and wp_posts.post_type='product' group by wp_posts.ID desc");

اینم جدول php منه:میخوام اینطوری بشه
ببینید من یه جدول توو html دارم:
<?php
include('database/database.php');
$sql=mysql_query
("SELECT * FROM wp_posts LEFT JOIN wp_postmeta ON wp_posts.ID=wp_postmeta.post_id
where wp_posts.post_status='publish' and wp_posts.post_type='product' group by wp_posts.ID desc");
while($row=mysql_fetch_array($sql)) {
$ID= $row['ID'];
$post_title=$row['post_title'];
$meta=$row['meta_key'];
if($meta='_price'){$price='تومان';}
if($meta='_stock'){$num='تعداد';}
?>
<tr class="" style="direction: rtl;">
<td><?php echo $ID; ?></td>
<td><?php echo $post_title; ?></td>
<td><?php echo $num; ?></td>
<td class="center"><?php echo $price; ?></td>
<td><a class="edit" href="javascript:;">ویرایش</a></td>
<td><a class="delete" href="javascript:;">حذف</a></td>
</tr>
<?php }
?>
مشکل من اینجاست که همونطور که توو عکس میبینین پارامتر های مورد نیاز من داخل یک ستون قرارگرفته و با دستورات if و else اونا رو تفکیک کردم.
اما این کار میشد فقط برای meta_key میشد به کار برد.
اما برای مقدار meta_value مشکل دارم.نمیتونم مقدار عددی اونا رو بدست بیارم
ببخشید یکم سرم شلوغ بود.
ببیین اگه درست منظورتو متوجه شده باشم باید این جواب بده:
<?php
include('database/database.php');
$sql=mysql_query
("SELECT * FROM wp_posts LEFT JOIN wp_postmeta ON wp_posts.ID=wp_postmeta.post_id
where wp_posts.post_status='publish' and wp_posts.post_type='product' option by wp_posts.ID desc");
$num=null;
while($row=mysql_fetch_array($sql)) {
$ID= $row['ID'];
$post_title=$row['post_title'];
$meta=$row['meta_key'];
$value=$row['meta_value'];
if($meta='_price'){$price=$value . 'تومان';}
if($meta='_stock'){$num= $value . 'تعداد';}
if($num!=null){
?>
<tr class="" style="direction: rtl;">
<td><?php echo $ID; ?></td>
<td><?php echo $post_title; ?></td>
<td><?php echo $num; ?></td>
<td class="center"><?php echo $price; ?></td>
<td><a class="edit" href="javascript:;">ویرایش</a></td>
<td><a class="delete" href="javascript:;">حذف</a></td>
</tr>
<?php $num=null; } }
?>
ببین من برای دیتابیس دستور group by انتخاب کردم.
الان نتیجه این شده-سجاد جان ی کمک برسون
این که از بیخ غلطه.
من اصلا نال ندارم توو دیتابیس
یعنی نیازی ندارم
میخوام بگم
نشون بده از یک meta_valueمشترک با post_id یکسان پارامترایی که مقدار meta_key اونا با price_ و stock_ و هرکدوم ازین ها رو با تابعی مجزا تعریف کنه.یا به اصطلاحی foreach کنه
اینی که گفتم نمیخوام توو دستور $sql باشه.میخوام توو دستورات بعد از fetch_array باشه
همین
مثال عملی:
ما الان یک post_id داریم به شماره 1800
الان پارامترهایی توو دیتابیس داریم که post_id اونا باهم برابره اما میزان meta_key و meta_value اونا باهم متغیره
من میخوام مقدار meta_value گزینه هایی که meta_key اونا برابر با price_ و stoch_ برام اکو کنه و برای هرکدوم یک متغیر جداگانه تعریف کنه
مثل:
$price= $row['meta_value']بشرطی که $row['meta_key']='_price';
$stoch= $row['meta_value']بشرطی که $row['meta_key']='_stoch';
این کدشماست:یه ذره بی معنیه-فارسیشو نوشتم
$sql=mysql_query
("SELECT * FROM wp_posts LEFT JOIN wp_postmeta ON wp_posts.ID=wp_postmeta.post_id
where wp_posts.post_status='publish' and wp_posts.post_type='product' group by wp_posts.ID desc");
$num=null;دالر نام مساوی است با خالی
while($row=mysql_fetch_array($sql)) {
$ID= $row['ID'];
$post_title=$row['post_title'];
$meta=$row['meta_key'];
$value=$row['meta_value'];
if($meta='_price'){$price=$value . 'تومان';}
if($meta='_stock'){$num= $value . 'تعداد';}
if($num!=null){اگر دالرنام خالی نبود
$num=null;دالر نام مساوی است با خالی
سجاد جان.این کد منه:
دستور سلکت من هم از نوع group by هستش که فقط میاد و از هر آیدی یک سطر رو برمیداره فقط
include('database/database.php');
$sql=mysql_query
("SELECT * FROM wp_posts LEFT JOIN wp_postmeta ON wp_posts.ID=wp_postmeta.post_id
where wp_posts.post_status='publish' and wp_posts.post_type='product' group by wp_posts.ID desc");
$num=null;
while($row=mysql_fetch_array($sql)) {
$ID= $row['ID'];
$post_title=$row['post_title'];
$meta=$row['meta_key'];
$value=$row['meta_value'];
if($meta='_price'){$price=$value . 'تومان';}
if($meta='_stock'){$num= $value . 'تعداد';}
if($num!=null){
?>
<tr class="" style="direction: rtl;">
<td><?php echo $ID; ?></td>
<td><?php echo $post_title; ?></td>
<td><?php echo $num; ?></td>
<td class="center"><?php echo $price; ?></td>
<td><a class="edit" href="javascript:;">ویرایش</a></td>
<td><a class="delete" href="javascript:;">حذف</a></td>
</tr>
<?php $num=null; } }
?>
دقیقا همونی که گفتی.
اینم نتیجش:
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .


