2015-08-26 3 views
0

Хорошо, ребята, код ниже работает нормально. Кроме того, поскольку я дал пользователям до 4 загрузок изображений, страница предварительного просмотра продукта должна отображать только 1 из изображений, таких как первый в массиве на странице продукта, но он показывает все строки, если пользователь загружает 4 изображения. как я могу это ограничить? Благодарю.Как показать только первую строку сообщения?

<?php   
     echo 'Your posts:' . '<br>' . '<hr>'; 

     $posts = "SELECT * FROM posts,image_data WHERE userid='$user' AND user_posts.userid = image_data.client_id ORDER BY date_created ASC"; 
     $posts_result = $mysqli->query($posts);  
     while ($posts_result_rows = $posts_result->fetch_assoc()) { 
      $its_id = $posts_result_rows["userid"]; 
         $its_title = $posts_result_rows['post_title']; 
         $its_image = $posts_result_rows['file']; 
         $its_description = $posts_result_rows['post_description']; 
     ?> 
     <table border=0 cellpadding=5 cellspacing=0 > 
      <tr> 
         <?php echo '<br>' . $its_title . ' <br>' . $its_description . '<br>'; ?> 
         <img src="<?php echo "users_data/users_posted_data/".$its_image; ?>" alt="<?php echo $its_title; ?>" width="120" height="120"><hr>     
      </tr> 
     </table> 
     <?php 
      } 
     ?>   
+0

В запросе этого 'user_posts.userid = image_data.client_id', но вы не выбираете' user_posts' здесь 'SELECT * FROM posts, image_data' – Shehary

ответ

0

попробуйте добавить LIMIT 1

$posts = "SELECT * FROM posts,image_data WHERE userid='$user' AND user_posts.userid = image_data.client_id ORDER BY date_created ASC LIMIT 1"; 
     $posts_result = $mysqli->query($posts); 
+0

Я сделал это, но что это значит, что в следующий раз, когда пользователь добавит другое сообщение, второй пост не появится. – koroush

+0

можете ли вы включить свою форму, чтобы другие могли ее проверить и знали, в чем проблема. –

+0

обязательно один раз пожалуйста. Я обновлю сообщение. – koroush

-1

Важной частью является добавление limit 1.

SELECT * FROM posts,image_data WHERE userid='$user' AND user_posts.userid = image_data.client_id ORDER BY date_created ASC limit 1

1

Сортировать по в порядке убывания для получения последней строки

$posts = "select * from (SELECT * FROM posts,image_data WHERE userid='$user' AND posts.userid = image_data.client_id ORDER BY date_created DESC)temp group by userid "; 
      $posts_result = $mysqli->query($posts); 

Ниже упомянутого запроса SQL работает отлично: http://sqlfiddle.com/#!9/1a0e9/1

select * from 
(SELECT * FROM posts,image_data WHERE userid=1 
AND posts.userid = image_data.client_id 
ORDER BY date_created DESC)temp group by userid; 
+0

Это не то, что я имел в виду, потому что я не пытаюсь получить самую последнюю запись. здесь я пытаюсь показать пользователю их загруженные сообщения, но ограничивать только изображения на один пост. потому что каждый стол может иметь до 4 изображений. – koroush

+0

@koroush: вы хотите только изображение за сообщение. Пожалуйста, укажите ... из многих изображений, которые вы хотите? в каком поле вы используете для определения последнего изображения? – seahawk

+0

@koroush: обновленный код, пожалуйста, подтвердите и дайте мне знать. – seahawk

0
<?php   
     echo 'Your posts:<br><hr>'; 

     $posts = "SELECT * FROM posts,image_data WHERE userid='$user' AND user_posts.userid = image_data.client_id ORDER BY date_created ASC"; 
     $posts_result = $mysqli->query($posts);  
     while ($posts_result_rows = $posts_result->fetch_assoc()) { 
      $its_id = $posts_result_rows["userid"]; 
         $its_title = $posts_result_rows['post_title']; 
         $its_image = $posts_result_rows['file']; 
         $its_description =  $posts_result_rows['post_description']; 

      echo "<table border=0 cellpadding=5 cellspacing=0 ><tr><td>"; 
      echo '<br>' . $its_title . ' <br>' . $its_description . '<br>'; 

     } 
    ?> 
<img src="<?php echo "users_data/users_posted_data/".$its_image; ?>" alt="<?php echo $its_title; ?>" width="120" height="120"><hr>     
     </td></tr> 
    </table> 
+0

спасибо, но я получаю неопределенную переменную для $ its_title. – koroush

0
$posts = "SELECT * FROM posts WHERE userid='$user' ORDER BY date_created ASC"; 
    $posts_result = $mysqli->query($posts);  
    while ($posts_result_rows = $posts_result->fetch_assoc()) 
    { 
     $posts1 = "SELECT * FROM image_data WHERE client_id='$user' and file != '' ORDER BY image_id DESC"; 
     $posts_result1 = $mysqli->query($posts1); 
     $posts_result_rows1 = $posts_result1->fetch_assoc()   

     $its_id = $posts_result_rows["userid"]; 
     $its_title = $posts_result_rows['post_title']; 
     $its_image = $posts_result_rows1['file']; 
     $its_description =  $posts_result_rows['post_description']; 

     ?> 
    <table border=0 cellpadding=5 cellspacing=0 > 
     <tr> 
      <td> 
       <?php echo '<br>' . $its_title . ' <br>' . $its_description . '<br>'; ?> 
       <img src="<?php echo "users_data/users_posted_data/".$its_image; ?>" alt="<?php echo $its_title; ?>" width="120" height="120" /> 
       <hr> 
      </td>  
     </tr> 
    </table> 
    <?php 
    } 
    ?> 

второй запрос изображения записывает внутри while цикл для извлечения только одного изображения, а также проверить, что столбец файла не пуст. Не знаю, как ваше имя столбца помещает ваше имя столбца в соответствии с вашей структурой таблицы.

Смежные вопросы