We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 10700
    • 104 Posts
    Всем привет. Пытаюсь написать сниппет отображения последних 3х комментариев. Нужно вытащить данные из 4х таблиц.
    В 1ой таблице содержатся комментарии, во 2ой имена гостей, из 3й хватаю имена страниц а из 4ой беру имя зарегистрированного автора если в 1ой таблице указанно что комментарий оставил не гость. Вот как раз с этим условием и проблемы. Сейчас вот такая штука вышла:

    <?php
    $guest="modx_jot_fields.label='name' AND modx_jot_fields.id=modx_jot_content.id";
    $manager="modx_jot_content.createdby=modx_user_attributes.id";
    $whereall ="modx_jot_content.published='1' AND modx_site_content.published='1' AND modx_site_content.id=modx_jot_content.uparent AND (IF (modx_jot_content.createdby=0,($guest),($manager)))";
    
    $sql="SELECT modx_jot_content.content, modx_jot_content.id, modx_jot_content.uparent, modx_jot_content.createdon, modx_site_content.pagetitle, IF (modx_jot_content.createdby=0,modx_jot_fields.content,modx_user_attributes.fullname) AS authname FROM modx_jot_content, modx_site_content, modx_jot_fields, modx_user_attributes WHERE $whereall ORDER BY modx_jot_content.createdon DESC LIMIT 3";
    $q=mysql_query($sql) or die(mysql_error());
    while($row = mysql_fetch_array($q)){
    echo '<div class="comment"><div class="ballbtm">';
    echo '<div class="content"><a href="'.$row[uparent].'" class="midtxt">'.$row[pagetitle].'</a><br/><a href="'.$row[uparent].'#'.$row[id].'" class="darkgrey xsmltxt">'.$row[content].'</a></div>';
    echo '</div>';
    echo '<div class="aboutpost author">'.$row[authname].' </div>';
    echo '</div>';
    }
    ?>

    Если из кода убрать упоминание о зарегистрированных пользователях и брать данные из 3х таблиц то все прекрасно работает. Помогите пожалуйста. Я в пхп очень слаб, а о запросах совсем недавно узнал. Но читать и гуглить умею, вот только затык небольшой сейчас. Никак не пойму где ошибка и как исправить. Возможно тут логическая ошибка.
      • 10700
      • 104 Posts
      Готово!

      <?php
      $jc='modx_jot_content';
      $jf='modx_jot_fields';
      $sc='modx_site_content';
      $ua='modx_user_attributes';
      $sql="SELECT $jc.content, $jc.id, $jc.uparent, $jc.createdon, 
      (SELECT $jf.content FROM $jf WHERE $jf.label='name' AND $jc.id=$jf.id ORDER BY $jf.id) AS guestname, 
      (SELECT $sc.pagetitle FROM $sc WHERE $jc.uparent=$sc.id ORDER BY $sc.id) AS pagetitle, 
      (SELECT $ua.fullname FROM $ua WHERE $jc.createdby=$ua.id ORDER BY $ua.id) AS regname 
      FROM $jc WHERE $jc.published=1 ORDER BY $jc.createdon DESC LIMIT 3";
      
      $q=mysql_query($sql) or die(mysql_error());
      while($row = mysql_fetch_array($q)){
      
      echo '<div class="comment"><div class="ballbtm">';
      echo '<div class="content"><a href="'.$row[uparent].'" class="midtxt">'.$row[pagetitle].'</a><br/>
      <a href="'.$row[uparent].'#'.$row[id].'" class="darkgrey xsmltxt">'.$row[content].'</a></div>';
      echo '</div>';
      echo '<div class="aboutpost author">';
      if ($row[guestname]==NULL)
      {
      echo $row[regname];
      } else {
      echo $row[guestname];
      }
      echo '</div></div>';
      }
      ?>