2017-04-26 16 views
0

foreachループをどのようにしてそれぞれのテーブルの内容をエコーするPHPコードにするべきですか?ここでPHP foreachループの代わりにテーブルをエコーし​​たい場合はどうすればいいですか?

は、ここで私は各HTMLポストのための特定のテーブルのタイトル、ID、などをエコーし​​たい

<?php 
require_once 'init.php'; 

$articleQuery = $db->query(" 
SELECT 
articles.id, 
articles.title, 
COUNT(articles_likes.id) AS likes, 
GROUP_CONCAT(users.username SEPARATOR '|') AS liked_by 

FROM articles 

LEFT JOIN articles_likes 
ON articles.id = articles_likes.article 

LEFT JOIN users 
ON articles_likes.user = users.id 

GROUP BY articles.id 
"); 

while($row = $articleQuery->fetch_object()){ 
$row->liked_by = $row->liked_by ? explode('|', $row->liked_by) : []; 
$articles[] = $row; 

} 


$articleQuery = $db->query(" 
SELECT 
articles2.id, 
articles2.title, 
COUNT(articles_dislikes.id) AS dislikes, 
GROUP_CONCAT(users.username SEPARATOR '|') AS disliked_by 

FROM articles2 

LEFT JOIN articles_dislikes 
ON articles2.id = articles_dislikes.article 

LEFT JOIN users 
ON articles_dislikes.user = users.id 

GROUP BY articles2.id 
"); 

while($row = $articleQuery->fetch_object()){ 
$row->disliked_by = $row->disliked_by ? explode('|', $row->disliked_by) 

: []; 
$articles2[] = $row; 

} 

// echo '<pre>', print_r($articles, true), '</pre>'; 

?> 
<?php foreach($articles as $article): ?> 

<?php foreach($articles2 as $article1): ?> 

<div class="article"> 
<h3><?php echo $article->title; ?></h3> 
<a href="like.php?type=article&id=<?php echo $article->id; ? 
>">Like<?php echo $article->likes; ?></a> 


<div class="article1"> 
<a href="dislike.php?type=article&id=<?php echo $article1->id; 
?>">disLike<?php echo $article1->dislikes; ?></a>  



</div> 
<?php endforeach; ?> 

<?php endforeach; ?> 

は私table.sqlが

-- Table structure for table `articles` 
-- 

CREATE TABLE IF NOT EXISTS `articles` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`title` varchar(200) DEFAULT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ; 


-- Dumping data for table `articles` 
INSERT INTO `articles` (`id`, `title`) VALUES 
(1, 'Test article one'), 
(2, 'Test article two'), 
(3, 'Test article three'); 

-------------------------------------------------------- 


-- Table structure for table `articles_likes` 
-- 

CREATE TABLE IF NOT EXISTS `articles_likes` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`user` int(11) DEFAULT NULL, 
`article` int(11) DEFAULT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ; 

-- 
-- Dumping data for table `articles_likes` 
-- 

INSERT INTO `articles_likes` (`id`, `user`, `article`) VALUES 
(1, 1, 1), 
(2, 1, 2), 
(4, 2, 2); 

-- 
-- Table structure for table `users` 
-- 

CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`username` varchar(20) NOT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; 


-- Dumping data for table `users` 
-- 

INSERT INTO `users` (`id`, `username`) VALUES 
(1, 'ifah'), 
(2, 'alex'); 
である私の.phpです

これは、htmlで記事投稿をしたときに、h3 htmlでタイトル1と言うようにエコーしたいという意味です。

+0

いくつかの努力を示し、何かを試してみると助けを求める。 – julekgwa

+1

あなたはあなたの出力をどのようにするかを視覚的に追加できますか? – julekgwa

+0

もちろん、できますよ、ありがとうございます。私はHTMLとCSSだけを買って、決してPHPを試しません、もっと練習して、いつか私が他人を助けることができるようにします。 :) – HelloIMYOU

答えて

0

もちろん、私はあなたの答えのためにあなたに最初に感謝したいと思います。 sample

sample likes count

だから、基本的に、私のようなボタンとして機能するように、ポストにクリック数をカウントしたいが、私はそれらをエコーし​​たいとき、私だけ表示するようにループを使用することを知っていました。

ボタンタグやdivタグを使用してそれらをエコーアウトするなど、必要なときにそれらを1つずつエコーします。私は科学のバックグラウンドを持つ大学生です。私はコーディングを学ぶのに苦労していますが、PHPには慣れていません。だからあなたの考えを教えてください。ありがとう!! マイtable.sql

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; 
SET time_zone = "+00:00"; 


/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */; 
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */; 
/*!40101 SET @[email protected]@COLLATION_CONNECTION */; 
/*!40101 SET NAMES utf8 */; 

-- 
-- Database: `likebutton` 
-- -------------------------------------------------------- 

-- 
-- Table structure for table `articles` 
-- 

CREATE TABLE IF NOT EXISTS `articles` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`title` varchar(200) DEFAULT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ; 

-- 
-- Dumping data for table `articles` 
-- 

INSERT INTO `articles` (`id`, `title`) VALUES 
(1, 'Test article one'), 
(2, 'Test article two'), 
(3, 'Test article three'); 

-- -------------------------------------------------------- 

-- Table structure for table `articles_likes` 
-- 

CREATE TABLE IF NOT EXISTS `articles_likes` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`user` int(11) DEFAULT NULL, 
`article` int(11) DEFAULT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ; 

-- 
-- Dumping data for table `articles_likes` 
-- 

INSERT INTO `articles_likes` (`id`, `user`, `article`) VALUES 
(1, 1, 1), 
(2, 1, 2), 
(4, 2, 2); 

-- -------------------------------------------------------- 

-- 
-- Table structure for table `users` 
-- 

CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`username` varchar(20) NOT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; 

-- 
-- Dumping data for table `users` 
-- 

INSERT INTO `users` (`id`, `username`) VALUES 
(1, 'Anns'), 
(2, 'Bob'); 

また、私は各idは一度だけクリックできたいとボタンとは異なりに戻ることができます。ありがとう

関連する問題