spcMedlem sedan nov. 20119 inlägg hejsan.
detta med join kommer jag nog alldrig att lära mig...
Försöker hämta info från 3 olika tabeller...
$sql = "SELECT
categories.cat_id,
categories.cat_name,
categories.cat_description,
categories.cat_group,
categories.cat_order,
COUNT(topics.topic_id) AS topics,
topics.topic_by,
users.username
FROM
categories
JOIN
topics
ON
topics.topic_id = categories.cat_id
LEFT JOIN
users
ON
topics.topic_by = users.username
GROUP BY
categories.cat_name, categories.cat_description, categories.cat_id, categories.cat_order";
när någon medlem lägger till en tråd så sparas dens id i topics.topic_by
men isället för att få en 2 där, så skulle jag vilja att när den har hämtat ut 2 så blir det users_username.....
Hoppas någon förstår hur jag menar...
LarsGMedlem sedan dec. 200012 464 inlägg ON
topics.topic_by = users.username
är ett konstigt villkor då topic_by är en numerisk kolumn och username är character. Förmodligen så vill du jämföra med motsvarande id-kolumn i users.
I din fråga vill du räkna antal inlägg i olika kategorier, då förstår jag inte vad syftet är med att hämta username då du får en post per kategori.
T.ex. säg att det finns tre inlägg i en kategori, skrivna av tre olika användare. Vilket username vill du ha? Alla? Ett slumpmässigt? Den som har skrivit flest inlägg i den kategorin?
spcMedlem sedan nov. 20119 inlägg hejsan...
Du det har jag nog inte tänkt på....vad skulle du gjort ???
tror att på första sidan forum.php så vill jag nog ha den som skrivit den sista inlägget.
bifogar koden på forum.php
<?php
//create_cat.php
include 'conn.php';
$sql = "SELECT
categories.cat_id,
categories.cat_name,
categories.cat_description,
categories.cat_group,
categories.cat_order,
COUNT(topics.topic_id) AS topics,
topics.topic_by,
users.username
FROM
categories
JOIN
topics
ON
topics.topic_id = categories.cat_id
INNER JOIN
users
ON
users.id = topics.topic_by
GROUP BY
categories.cat_name, categories.cat_description, categories.cat_id";
$result = mysql_query($sql)or die(mysql_error());
$headline = '';
while($row = mysql_fetch_assoc($result))
{
if ($headline != $row['cat_group'])
{
//prepare the table
echo '<div class="home-header"><div class="heading ico-groups">' . $row['cat_group'] . '
</div>
</div>
<table border="0" cellspacing="0" cellpadding="3" class="tableCurves" width="100%">
<tr>
<td><table border="0" cellSpacing="1" cellPadding="4" width="100%">';
echo '<tr>
<td vAlign="top" align="middle" width="3%"><img id="mark_read_121" src="img/topic_icon_on.png" width="22" height="22"></td>';
echo '<td vAlign="top" width="53%"><b><a href="category.php?id=' . $row['cat_id'] . '">' . $row['cat_name'] . '</a></b><br>' . $row['cat_description'] . '</td>
<td nowrap" vAlign="top" align="middle" width="8%">' . $row['topics'] . '</td>
<td nowrap" vAlign="top" align="middle" width="8%">-</td>
<td vAlign="top" align="right" width="19%"><div style="TEXT-ALIGN: center">' . $row['username'] . ' <br>';
//fetch last topic for each cat
$topicsql = "SELECT
topic_id,
topic_subject,
topic_date,
topic_cat
FROM
topics
WHERE
topic_cat = " . $row['cat_id'] . "
ORDER BY
topic_date
DESC
LIMIT
1";
$topicsresult = mysql_query($topicsql)or die(mysql_error());
if(!$topicsresult)
{
echo 'Last topic could not be displayed.';
}
else
{
if(mysql_num_rows($topicsresult) == 0)
{
echo 'Inga ämnen';
}
else
{
while($topicrow = mysql_fetch_assoc($topicsresult))
echo '<a href="topic.php?id=' . $topicrow['topic_id'] . '"> ' . date('j F, Y, g:i', strtotime($topicrow['topic_date']));
}
}
echo '</div></td></tr>';
echo '<tr>
<td class="trow1" vAlign="top" align="middle" colspan="5"><div style="border-bottom:1px dotted #94B1DF; margin-bottom:5px; padding:0px 0px 5px 0px; clear:both;"></div></td>
</tr>
</table>
</td></tr>';
}
echo '</table>';
}
mysql_free_result($result);
?>
</div>
den vill inte lista ut alla cat_id, fattar inte varför den inte gör det....
har du någon ide ????
LarsGMedlem sedan dec. 200012 464 inlägg Om du inte får ut alla kategorier så beror det förmodligen på att det inte finns poster i topics för alla. Du får byta ut inner join och mot left join
from categories
left
join topics
on topics.topic_id = categories.cat_id
left
join users
on users.id = topics.topic_by
spcMedlem sedan nov. 20119 inlägg Ändrat om select nu lite gran, så nu har jag 13st cat_id..
Har något fel på själva tabellen som listar ut allt.
På den bifogade filen ser man hur jag skulle vilja få till den...
nya koden:
<?php
$sql = "SELECT
cat_id AS id,
cat_name AS name,
cat_description AS description,
cat_order,
cat_group AS groupname
FROM
categories
ORDER BY
cat_id, cat_order";
$result = mysql_query($sql)or die(mysql_error());
$headline = '';
while($row = mysql_fetch_assoc($result))
{
if ($headline != $row['groupname'])
{
echo '<div class="home-header"><div class="heading ico-groups">' . $row['groupname'] . '
</div>
</div>';
$headline = $row['groupname'];
}
echo '<table border="0" cellspacing="0" cellpadding="3" class="tableCurves" width="100%">
<tr>
<td>';
echo '<table border="0" cellspacing="1" cellpadding="4" width="100%">
<tr>
<td valign="top" align="center" width="3%"><img src="img/topic_icon_on.png" width="22" height="22" alt="" /></td>';
echo '<td valign="top" width="53%"><b><a href="category.php?id=' . $row['id'] . '">' . $row['name'] . '</a></b><br />' . $row['description'] . '</td>';
//fetch last topic for each cat
$topicsql = "SELECT
u.username AS username,
u.id AS userid,
t.topic_id AS topic_id,
t.topic_date AS topic_date,
t.topic_cat AS topic_cat
FROM
(SELECT
topic_by AS userid,
topic_id AS topic_id,
topic_date AS topic_date,
topic_cat AS topic_cat
FROM
topics
WHERE
topic_cat = " . $row['id'] . "
ORDER BY
topic_id, topic_date DESC
LIMIT 1) AS t
JOIN
users AS u
ON
u.id = t.userid";
$topicsresult = mysql_query($topicsql)or die(mysql_error());
if(!$topicsresult)
{
echo 'Last topic could not be displayed.';
}
else
{
if(mysql_num_rows($topicsresult) == 0)
{
echo '<td valign="top" align="center" width="8%"></td>';
echo '<td valign="top" align="center" width="8%">-</td>
<td valign="top" align="center" width="19%">';
echo 'Inga ämnen';
}
else
{
while($topicrow = mysql_fetch_assoc($topicsresult))
{
echo '<td valign="top" align="center" width="8%">'
. mysql_result(mysql_query("SELECT COUNT(*) FROM topics WHERE topic_cat=" . $row['id']), 0, 0)
. '</td>';
echo '<td valign="top" align="center" width="8%">-</td>
<td valign="top" align="center" width="19%">' . $topicrow['username'] . '<br />';
echo '<a href="topic.php?id=' . $topicrow['topic_id'] . '"> ' . date('j F, Y, g:i', strtotime($topicrow['topic_date']));
echo '</a>';
}
}
}
echo '</td></tr>';
echo '<tr>
<td class="trow1" valign="top" align="center" colspan="5"><div style="border-bottom:1px dotted #94B1DF; margin-bottom:5px; padding:0px 0px 5px 0px; clear:both;"></div></td>
</tr>
</table>
</td></tr></table>';
}
mysql_free_result($result);
?>

spcMedlem sedan nov. 20119 inlägg lyckats få dom precis som jag vill ha dom, MEN !!!!
Under kategorierna under varje huvudrubrik ligger inte innom samma ram.
+ att det ska vara ett mellanrum från den sista under kategori till nästa huvudrubrik.
Där har jag problemet nu...
Hoppas verkligen någon kan hjälpa mig med detta....
koden är :
<?php
$sql = "SELECT
cat_id AS id,
cat_name AS name,
cat_description AS description,
cat_order,
cat_group AS groupname
FROM
categories
ORDER BY
cat_id, cat_order";
$result = mysql_query($sql)or die(mysql_error());
$headline = '';
while($row = mysql_fetch_assoc($result))
{
if ($headline != $row['groupname'])
{
echo '<div class="home-header"><div class="heading ico-groups">' . $row['groupname'] . '
</div></div>';
}
echo '<table border="0" cellspacing="0" cellpadding="3" class="tableCurves" width="100%">
<tr>
<td>';
echo '<table border="0" cellspacing="1" cellpadding="4" width="100%">
<tr>
<td valign="top" align="center" width="3%"><img src="img/topic_icon_on.png" width="22" height="22" alt="" /></td>';
echo '<td valign="top" width="53%"><b><a href="category.php?id=' . $row['id'] . '">' . $row['name'] . '</a></b><br />' . $row['description'] . '</td>';
//fetch last topic for each cat
$topicsql = "SELECT
u.username AS username,
u.id AS userid,
t.topic_id AS topic_id,
t.topic_date AS topic_date,
t.topic_cat AS topic_cat
FROM
(SELECT
topic_by AS userid,
topic_id AS topic_id,
topic_date AS topic_date,
topic_cat AS topic_cat
FROM
topics
WHERE
topic_cat = " . $row['id'] . "
ORDER BY
topic_id, topic_date DESC
LIMIT 1) AS t
JOIN
users AS u
ON
u.id = t.userid";
$topicsresult = mysql_query($topicsql)or die(mysql_error());
if(!$topicsresult)
{
echo 'Last topic could not be displayed.';
}
else
{
if(mysql_num_rows($topicsresult) == 0)
{
echo '<td valign="top" align="center" width="8%"></td>';
echo '<td valign="top" align="center" width="8%">-</td>
<td valign="top" align="center" width="19%">';
echo 'Inga ämnen';
}
else
{
while($topicrow = mysql_fetch_assoc($topicsresult))
{
echo '<td valign="top" align="center" width="8%">'
. mysql_result(mysql_query("SELECT COUNT(*) FROM topics WHERE topic_cat=" . $row['id']), 0, 0)
. '</td>';
echo '<td valign="top" align="center" width="8%">-</td>
<td valign="top" align="center" width="19%">' . $topicrow['username'] . '<br />';
echo '<a href="topic.php?id=' . $topicrow['topic_id'] . '"> ' . date('j F, Y, g:i', strtotime($topicrow['topic_date']));
echo '</a></td>';
echo '</tr>';
}
}
}
echo '<tr>
<td class="trow1" valign="top" align="center" colspan="5"><div style="border-bottom:1px dotted #94B1DF; margin-bottom:5px; padding:0px 0px 5px 0px; clear:both;"></div></td>
</tr>
</table>
</td></tr></table>';
}
?>