Jump to content
Trixx-

PHP Forums

Recommended Posts

Sveiki, mācos taisīt pats forumu, esmu saskāries ar problēmu, kad izveidoju jaunu kategoriju, viņa atdalās no citām, izveidoju pirmo forumu iekš kategorijas, bet kad taisu tai pašai kategorijai otro forumu, viņi atdalās un izveidojas 2 vienādas kategorijas un katra kategorija satur savu forumu.

Ja nesapratāt, screen - 16d002212af841698eb958a0309f5d96.png

 

Vienreiz jau bija palīdzēts ar šo, palīdzēja @Gustavs, bet īsti nepievērsu uzmanību tam ko viņš darīja, bet atceros to, ka viņš izmantoja if in_array.

Kods:

<?php
include 'config.inc.php';
include 'header.php';
 
$sql = "SELECT
            *
        FROM
            categories
        LEFT JOIN
            forum
        ON
            forum.cat_id=categories.cat_id";

$result = mysqli_query($conn, $sql);

if(!$result)
{
    echo 'The categories could not be displayed, please try again later.';
}
else
{
    if(mysqli_num_rows($result) == 0)
    {
        echo 'No categories defined yet.';
    }
    else
    {
        echo '<div class="row">
        <div class="col-md-8">';
             
        while($row = mysqli_fetch_assoc($result))
        {    
            echo '
            <div class="category">
                <div class="category_name">'.$row['cat_name'].'</div>
                <div class="category_body">
                    <div class="left"><li><div class="forum_description"><h4>'.$row['forum_name'].'</h4><p>'.$row['forum_description'].'</p></div></li></div>
                    <div class="right"></div>
                </div>
            </div>';
        }
        echo '</div>
        </div>';
    }
}
?>
<div class="col-md-4">
    <div class="sidebar">
    </div>
</div>
<?php
include 'footer.php';
?>

 

Share this post


Link to post
Share on other sites
$sql = "SELECT
            *
        FROM
            categories
        LEFT JOIN
            forum
        ON
            forum.cat_id=categories.cat_id
        GROUP by
            cat_id";

Es kaut ko ne tā daru šeit?

Edited by Trixx-

Share this post


Link to post
Share on other sites

Atlasi atsevišķi visas kategorijas un visus forumus divos kverijos.

  • Downvote 1

Share this post


Link to post
Share on other sites

Vieglākais variants tev būtu taisīt divus kverijus.

  1. Izvelk visas kategorijas
  2. Izvelk visus forumus, kas ir šīm kategorijām

Un tad vienkārši izvadi to visu.

Share this post


Link to post
Share on other sites
<?php
$q = mysqli_query($conn, "SELECT * FROM `categories`");
$categories = [];
$categoryIds = [];
$categoryForums = [];
while ($row = mysqli_fetch_assoc($q)) {
	$categories[] = $row;
	$categoryIds[] = (int)$row['cat_id'];
}

$q = mysqli_query($conn, "SELECT * FROM `forum` WHERE `cat_id` IN (" . implode(',', $categoryIds) . ")");
while ($row = mysqli_fetch_assoc($q)) {
	$categoryId = (int)$row['cat_id'];
	if (!isset($categoryForums[$categoryId])) {
		$categoryForums[$categoryId] = [];
	}
	$categoryForums[$categoryId][] = $row;
}

foreach ($categories as $category) {
	$categoryId = (int)$category['cat_id'];
	echo 'Kategorija: ' . $category['cat_name'];
	if (empty($categoryForums[$categoryId])) {
		continue;
	}
	foreach ($categoryForums[$categoryId] as $forum) {
		echo 'Forums: ' . $forum['forum_name']'
	}
}

Pieliec pats vēl pārbaudi, vai vispār ir kāda kategorija.

  • Like 1
  • Upvote 2

Share this post


Link to post
Share on other sites
On 6/7/2017 at 0:14 PM, sLIDe said:

<?php
$q = mysqli_query($conn, "SELECT * FROM `categories`");
$categories = [];
$categoryIds = [];
$categoryForums = [];
while ($row = mysqli_fetch_assoc($q)) {
	$categories[] = $row;
	$categoryIds[] = (int)$row['cat_id'];
}

$q = mysqli_query($conn, "SELECT * FROM `forum` WHERE `cat_id` IN (" . implode(',', $categoryIds) . ")");
while ($row = mysqli_fetch_assoc($q)) {
	$categoryId = (int)$row['cat_id'];
	if (!isset($categoryForums[$categoryId])) {
		$categoryForums[$categoryId] = [];
	}
	$categoryForums[$categoryId][] = $row;
}

foreach ($categories as $category) {
	$categoryId = (int)$category['cat_id'];
	echo 'Kategorija: ' . $category['cat_name'];
	if (empty($categoryForums[$categoryId])) {
		continue;
	}
	foreach ($categoryForums[$categoryId] as $forum) {
		echo 'Forums: ' . $forum['forum_name']'
	}
}

Pieliec pats vēl pārbaudi, vai vispār ir kāda kategorija.

Rails variants:

categories = Category.includes(:forum)
categories.each do |category|
  puts "Kategorija: #{category.cat_name}"

  category.forums.each do |forum|
    puts "Forums: #{forum.forum_name}"
  end
end

 

  • Downvote 1

Share this post


Link to post
Share on other sites

Tev vienreiz neapnīk kā totālam idiotam salīdzināt frameworku ar basic valodu?

<?php
$categories = Category::with('forums')->get();
foreach ($categories as $category) {
	echo 'Kategorija' . $category->name;
	
	foreach ($category->forums as $forum) {
		echo 'Forums: ' . $forum->name;
	}
}

 

  • Upvote 4

Share this post


Link to post
Share on other sites

Nākas pacelt šo tēmu par cik tagad rodas šis pats jautājums tikai skatoties no Laravel puses. Kā man uztaisīt šo visu uz laravel? Man ir query, kas izvelk gan kategorijas, gan forumus, bet nesaprotu kā uztaisīt to ko jautāju pašā sākumā.

On 6/7/2017 at 12:14 PM, sLIDe said:

<?php
$q = mysqli_query($conn, "SELECT * FROM `categories`");
$categories = [];
$categoryIds = [];
$categoryForums = [];
while ($row = mysqli_fetch_assoc($q)) {
	$categories[] = $row;
	$categoryIds[] = (int)$row['cat_id'];
}

$q = mysqli_query($conn, "SELECT * FROM `forum` WHERE `cat_id` IN (" . implode(',', $categoryIds) . ")");
while ($row = mysqli_fetch_assoc($q)) {
	$categoryId = (int)$row['cat_id'];
	if (!isset($categoryForums[$categoryId])) {
		$categoryForums[$categoryId] = [];
	}
	$categoryForums[$categoryId][] = $row;
}

foreach ($categories as $category) {
	$categoryId = (int)$category['cat_id'];
	echo 'Kategorija: ' . $category['cat_name'];
	if (empty($categoryForums[$categoryId])) {
		continue;
	}
	foreach ($categoryForums[$categoryId] as $forum) {
		echo 'Forums: ' . $forum['forum_name']'
	}
}

Pieliec pats vēl pārbaudi, vai vispār ir kāda kategorija.

Šo man derētu pārtaisīt uz laravel. Būs kāds spējīgs? Paldies jau iepriekš!

Edited by Trixx-

Share this post


Link to post
Share on other sites
1 hour ago, Trixx- said:

Nākas pacelt šo tēmu par cik tagad rodas šis pats jautājums tikai skatoties no Laravel puses. Kā man uztaisīt šo visu uz laravel? Man ir query, kas izvelk gan kategorijas, gan forumus, bet nesaprotu kā uztaisīt to ko jautāju pašā sākumā.

Tev ar basic PHP ir problēmas, domā, ka Laravel izmantošana baigi palīdzēs? :D

Anyway, priekš Laravel, tev būs divi modeļi - viens kategorijai un otrs forumam. (un tad gan jau rakstiem, un komentāriem, un visam pārējam, bet tas lai tev citam topikam paliek)
Tiem norādīsi relāciju... kategorijā pieliksi hasMany (uz forumu klasi) un forumam belongsTo (uz kategoriju) un tad jau easy-peasy jo katram kategorijas objektam būs pieejama vērtība, ar esošajiem forumiem tajā un foruma objektam būs property ar attiecīgo kategoriju kurā tas atrodas.

Parasti var uztaisīt migrācijas un šitos jokus saģenerēt pēc tām, bet pieļauju, ka tas būtu too advanced, pieņemot, ka mācību nolūkos ko šādu dari.

 

Un palasot jautājumus ko jau kādus pēdējos 2 gadus te posto (no hate nor offence meant), es drīzāk ieteiktu atmest ar roku... vai mainīt mācīšanās metodiku, jo apparently kaut ko tu nederi korekti, ja nevari workaroundu izdomāt vienkāršām problēmām, kas rada iespaidu, ka joprojām īsti pašam nav sajēgas par to, kā izpildās viss...

 

Un man laikam vajadzētu iet gulēt :D

  • Upvote 2

Share this post


Link to post
Share on other sites
9 hours ago, Chill it BanG said:

Tev ar basic PHP ir problēmas, domā, ka Laravel izmantošana baigi palīdzēs? :D

Anyway, priekš Laravel, tev būs divi modeļi - viens kategorijai un otrs forumam. (un tad gan jau rakstiem, un komentāriem, un visam pārējam, bet tas lai tev citam topikam paliek)
Tiem norādīsi relāciju... kategorijā pieliksi hasMany (uz forumu klasi) un forumam belongsTo (uz kategoriju) un tad jau easy-peasy jo katram kategorijas objektam būs pieejama vērtība, ar esošajiem forumiem tajā un foruma objektam būs property ar attiecīgo kategoriju kurā tas atrodas.

Parasti var uztaisīt migrācijas un šitos jokus saģenerēt pēc tām, bet pieļauju, ka tas būtu too advanced, pieņemot, ka mācību nolūkos ko šādu dari.

 

Un palasot jautājumus ko jau kādus pēdējos 2 gadus te posto (no hate nor offence meant), es drīzāk ieteiktu atmest ar roku... vai mainīt mācīšanās metodiku, jo apparently kaut ko tu nederi korekti, ja nevari workaroundu izdomāt vienkāršām problēmām, kas rada iespaidu, ka joprojām īsti pašam nav sajēgas par to, kā izpildās viss...

 

Un man laikam vajadzētu iet gulēt :D

Ātri mācīties ir slikti? Pagāja jau gandrīz gads un esmu iemācījies diezgan, bet man cilvēks, jeb @Gustavs pateica, lai labāk mācos laravel, jo man bija daudz jautājumu par php uz kuriem viņš man atbildēja visu laiku, lai eju skatīties googlē un tas tiešām man iemācija meklēt risinājumus googlē, bet tagad ir cita situācija. Btw, es jau mācos nevis jūs es jums prasu tikai palīdzību tālāk jau es pats mēģināšu saprast.

Paldies @Chill it BanG!

  • Upvote 1

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.