• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل با نمایش اطلاعات از سه جدول
#1
سلام دوستان
من میخوام اطلاعاتی رو نمایش بدم که از سه جدول متفاوت باید گرفته شود.
به این شکل که اطلاعات مربوط به مسابقه در جدول mosabeghat است .اطلاعات مربوط به شرکت کنندگان هر مسابقه در mosabeghat_user و اطلاعات مربوط به آواتار یا نام در جدول users هستند
جدول mosabeghat_user و mosabeghat بوسیله ستون clas به هم مرتبطتند
جدول mosabeghat_user و user با هم مرتبطند ( دریافت آی دی کاربر از ستون user جدول mosabeghat_user و آی دی کاربر از ستون id جدول users)
نمی دونم متوجه شدید یا نه؟
ولی این کوئری هست که نوشتم:

کد پی‌اچ‌پی:
$res2 $db2->query('SELECT * FROM mosabeghat WHERE status=1 ORDER BY clas DESC LIMIT 20');
$D->tot2 $db2->num_rows($res2);
while(
$obj $db2->fetch_object($res2))
 
           {
 
           $D->clas $obj->clas;
 
           $D->title[] = $obj->title;
            
$res3 $db2->query('SELECT * FROM mosabeghat_users WHERE clas = "'.$D->clas.'" ');
            
$obj2 $db2->fetch_object($res3);
            
$D->rate[] = $obj2->rate;
            
$D->id $obj2->user;
            
$res4 $db2->query('SELECT * FROM users WHERE id = "'.$D->id.'" ');
            
$obj4 $db2->fetch_object($res4);
            
$D->fullname[] = $obj->fullname;
            
$D->username[] = $obj->username;
            
$D->avatar[] = $obj->avatar;
 
           

این هم کد نمایش اطلاعات:

کد پی‌اچ‌پی:
<?php for($i=0;$i<$D->tot;$i++){ ?>
<div class="direct-chat-msg">
                  <div class="direct-chat-info clearfix">
                    <span class="direct-chat-name pull-left"><?= htmlspecialchars($D->rate[$i]) ?>  امتياز تا اين لحظه</span>
                    <span class="direct-chat-timestamp pull-right"><?= htmlspecialchars($D->fullname[$i]) ?></span>
                  </div>
        <?= $D->title[$i?>          
<div class="direct-chat-text">
<a href="<?= $D->username[$i?>" class="direct-chat-img" title="<?= htmlspecialchars($D->fullname[$i]) ?>"><img class="direct-chat-img" src="<?= $C->IMG_URL ?>avatars/thumbs1/<?= htmlspecialchars($D->avatar[$i]) ?>" /></a>
                  </div>
</div>

<?php ?>
ولی درست کار نمیکنه

کسی می تونه راهنمایی کنه؟
  پاسخ
تشکر شده توسط :
#2
سوالم رو یجوری دیگه می پرسم
من اطلاعات زیر رو میخوام نشون بدم:

علی با 100 امتیاز در مسابقه برترینها


اونایی که رنگ آبی داره هر کدوم از یک جدول گرفته میشه
مثلا علی (بهمراه آواتار) از جدول users 
100 که مربوط به امتیاز هست از جدول mosabeghat_user
و برترینها که نام مسابقات هست از جدول mosabeghat
دریافت میشن.
در جدول mosabeghat_user یک ستون بنام clas هست که شناسه مسابقه هست که در جدول mosabegha هم وجود داره و یک ستون دیگه userid هست که آی دی کاربر هست که در جدول users هم وجود داره
حالا چجوری این اطلاعات رو از سه جدول دریافت کنم و نمایش بدم؟
علی با 100 امتیاز در مسابقه برترینها
  پاسخ
تشکر شده توسط :
#3
با سلام  می تونید از جوین استفاده کنید فقط به خاطر داشته باشید فیلد پیوند را باید همراه نام تیبل استفاده کنید همچنین فیلدهای تکراری در تیبل هارا فقط یکبار درخواست کن هنگام سلکت کردن
  پاسخ
تشکر شده توسط : kingblog
#4
ممنون از پاسخ شما دوست عزیز
از جویین استفاده کردم همه چیز رو درست نشون میده بجز آواتار
الان نام،نام خانوادگی و آواتار توی یک جدول هستند
نام و نام خانوادگی رو برای همه بدرستی نشون میده ولی آواتار رو نه
این کد منه:

کد پی‌اچ‌پی:
<?php
$res2 
$db2->query('SELECT mosabeghat.clas, mosabeghat.title, mosabeghat_users.user, mosabeghat_users.rate, users.fullname, users.username, users.avatar, users.id FROM mosabeghat INNER JOIN mosabeghat_users ON mosabeghat.clas=mosabeghat_users.clas INNER JOIN users ON mosabeghat_users.user=users.id WHERE status = 1 ORDER BY clas DESC LIMIT 20');
$D->competition $db2->num_rows($res2);
while(
$obj $db2->fetch_object($res2))
 
          {
 
           $D->clas[] = $obj->clas;
 
           $D->title[] = $obj->title;
 
           $D->rate[] = $obj->rate;
 
           $D->fullname[] = $obj->fullname;
 
           $D->username[] = $obj->username;
 
           $D->avatar[] = $obj->avatar;
 
           }
?>            
            
<?php for($i=0;$i<$D->competition;$i++){ ?>
<div class="direct-chat-msg">
                  <div class="direct-chat-info clearfix">
                    <span class="direct-chat-name pull-left"><?= htmlspecialchars($D->rate[$i]) ?> امتیاز تا این لحظه</span>
                    <span class="direct-chat-timestamp pull-right"><?= htmlspecialchars($D->fullname[$i]) ?></span>
                  </div>
            در مسابقه <?= htmlspecialchars($D->title[$i]) ?>      
<div class="direct-chat-text">
<a href="<?= htmlspecialchars($D->username[$i]) ?>" class="direct-chat-img" title="<?= htmlspecialchars($D->rate[$i]) ?>"><img class="direct-chat-img" src="avatars/thumbs1/<?= htmlspecialchars($D->avatar[$i]) ?>" alt="<?= htmlspecialchars($D->fullname[$i]) ?>" title="<?= htmlspecialchars($D->fullname[$i]) ?>" /></a>
                  </div>
</div>
<?php ?>
همه اطلاعات بدرستی نشون داده میشه ولی فقط یک آواتار رو نشون میده
مثلا اگه اطلاعات مربوط به 10 کاربر رو نشون بدیم، 
نام مسابقه (از جدول مسابقات) ،  امتیاز (از جدول امتیازات) و نام و نام خانوادگی و آواتار (از جدول کاربران) استخراج میشه
ولی فقط یک آواتار رو نشون میده 
توی تصویر زیر همه چیز مشخصه
[عکس: 69fw_untitled-1.jpg]
  پاسخ
تشکر شده توسط :
#5
با سلام قسمت شرط را مشخص کن از کدام تیبل هست ببین مشکل حل میشه تو قسمت  جوین  لفت جوین یا رایت جوین را هم تست کن  یا ترتیب جوینها را باهم عوض کن فکر نم مشکل حل بشه
  پاسخ
تشکر شده توسط : kingblog


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان