2013-02-03 66 views
1

更新:由於第一個問題已修復(謝謝 - 我將第一個問題保留在底部供您參考),正確的連接現在正在拉好。問題在於它只是拉扯那些有聯繫的照片。不管他們有沒有聯繫,我怎麼會把所有的照片都拉出來?從一個表中選擇結果並選擇每行從另一個表中選擇具有相同ID的所有行

添加左連接而不是連接似乎拉在所有的照片,除了它添加「連接」的照片,沒有任何...有點奇怪。


這很難解釋,但我會盡我所能。首先,讓我爲這個漫長的標題道歉,我只是試圖儘可能詳細地描述它。

這是關於在畫廊中顯示照片(user_album2表)。每張照片都會顯示「連接」(來自user_connected表格)。在user_connected表的一個例子是:

fk_pic_id | fk_user_id | fk_user_id_conn 

每個列是INT的,拉的照片編號,用戶誰所做的連接編號,以及連接的用戶編號。

您在下面的代碼中看到的所有「get_」函數都只是拉取用戶信息的函數(所以如果它是「get_profession」,它將得到職業ID#)。

$query = mysql_query("SELECT a.pic_id, a.fk_user_id as uid, a.picture_number, a.picture_name, a.id, a.featuredphoto, c.fk_pic_id, GROUP_CONCAT(CONVERT(c.fk_user_id_conn, CHAR(8))) as cuids 
         FROM user_album2 a LEFT JOIN user_connected c ON a.pic_id = c.fk_pic_id GROUP BY a.pic_id ORDER BY RAND() LIMIT 40") or die(mysql_error()); 
    while ($row = mysql_fetch_array($query)) { 
     $pic_id = $row['pic_id']; 
     $userid = $row['uid']; 
     $photonum = $row['picture_number']; 
     $photo = $row['picture_name']; 
     $photoid = $row['id']; 
     $featured = $row['featuredphoto']; 
     $photogid = $row['fk_photog_id']; 
     $modelid = $row['fk_model_id']; 

     $cuids = explode(',',$row['cuids']); 
     if (get_profession($userid) == 1) { 
      $modeltag = get_name($userid); 
      $modelpic = get_photo($userid); 
      $modelLink = get_profile_link($userid); 
      foreach ($cuids as $c) { 
       $cprof = get_profession($c); 
       if ($cprof == 2) { 
        $photogtag = get_name($c); 
        $photogpic = get_photo($c); 
        $photogLink = get_profile_link($c); 
       } 
      } 
     } elseif (get_profession($userid) == 2) { 
      $photogtag = get_name($userid); 
      $photogpic = get_photo($userid); 
      $photogLink = get_profile_link($userid); 
      foreach ($cuids as $c) { 
       $cprof = get_profession($c); 
       if ($cprof == 1) { 
        $modeltag = get_name($c); 
        $modelpic = get_photo($c); 
        $modelLink = get_profile_link($c); 
       } 
      } 
     } 

     $classMargin = $modeltag && $photogtag ? ' add-bot-margin':''; 

     $myreturn .= '<li>' 
          .'<div class="inner">' 
           .'<img border="0" alt="" src="'. $baseurl . $photo .'&w=188&h=150&zc=1" />' 
           .'<div class="details">' 
            .'<a href="'. $baseurl .'photos/'. $userid .'/'. $photoid .'/'. $photonum .'" class="img-link">view image <strong>here</strong></a>' 
            .'<div class="info-contain-details">'; 

     if ($modeltag) { 
       $myreturn .=  '<div class="details-info model-info'. $classMargin .'">' 
              .'<a href="'. $baseurl . $modelLink .'" class="link-image"><img border="0" alt="" src="'. $baseurl .'img.php?src=/memberpictures/'. $modelpic .'&w=30&h=30&zc=1" /></a>' 
              .'<div class="photo-info">' 
               .'<a href="'. $baseurl . $modelLink .'" class="link-view-more">view more from</a>' 
               .'<a href="'. $baseurl . $modelLink .'" class="link-username">'. $modeltag .'</a>' 
              .'</div>' 
             .'</div>'; 
     } 
     if ($photogtag) { 
       $myreturn .=  '<div class="details-info photog-info">' 
              .'<a href="'. $baseurl . $photogLink .'" class="link-image"><img border="0" alt="" src="'. $baseurl .'img.php?src=/memberpictures/'. $photogpic .'&w=30&h=30&zc=1" /></a>' 
              .'<div class="photo-info">' 
               .'<a href="'. $baseurl . $photogLink .'" class="link-view-more">view more from</a>' 
               .'<a href="'. $baseurl . $photogLink .'" class="link-username">'. $photogtag .'</a>' 
              .'</div>' 
             .'</div>'; 
     } 
     $myreturn .=   '</div>' 
            .'<span class="details-bg"></span>' 
           .'</div>' 
          .'</div>' 
         .'</li>'; 
    } 

FIXED:出於某種原因,我不能爲我的生命得到了行業的部分正確顯示。它應該是:如果照片專業的所有者是模特,那麼它應該檢查該照片=攝影師(模型= 1,攝影師= 2)的連接。我在'user_connected'表中有幾行到同一張照片,但是當它應該是一個模型和一個攝影師時,它一直顯示相同的2個用戶(都是「模型」),就是這樣。] - 缺少一個「= 「登錄$ cfprof if語句,DOH!

如果您需要任何其他信息,請讓我知道,並一如既往的幫助,非常感謝!

+0

'($ cprof = 2)'那是什麼? – SparKot

+0

$ cfprof使用get_profession函數來獲取用戶職業ID#。 「$ cprof = get_profession($ c)」 – Nate

+0

我在上面的代碼中對第19行或第20行進行了正確的解釋,爲什麼'if($ cprof = 2){'? – SparKot

回答

0

固定。這個問題出現在foreach循環中,我需要有一個ELSE語句將photogtag/modeltag設置爲FALSE。

if ($cprof == 2 && $c != '') { 
    $photogtag = get_name($c); 
    $photogpic = get_photo($c); 
    $photogLink = get_profile_link($c); 
} else { 
    $photogtag = false; 
} 
相關問題