Avatar billede benjamin87 Nybegynder
30. august 2003 - 13:09 Der er 16 kommentarer og
1 løsning

Hente antal indlæg fra bestemt debat med PHP

Hej,

Jeg har et lille problem...
Jeg har et debatforum på min hjemmeside. Jeg har alle debatterne til at ligge i én tabél. Når jeg skal hente en bestemt debat ud gør jeg det ved at hver debat får tildelt en værdi i kolonnen "thread".

Mit problem er at jeg på siden med oversigten over de forskellige debatter ikke kan få vist hvor mange indlæg der er til de enkelte debatter...

Kan I hjælpe mig?
Jeg har et billede af min database på http://www.vffsupport.dk/billede_db.jpg og på www.vffsupport.dk/uk/oversigt.php kan I finde selve forumet.

Her er lidt af koden i oversigt.php:

        <table width="550" cellpadding=0 cellspacing=0 style="border : 1px #116655 solid;">
<tr><td colspan="3" style="background-color : #116655; color : white; font-size : 10px;">Debates</td></tr>
<?
$db = mysql_connect("host", "brugernavn", "password");
mysql_select_db("databasenavnet", $db);

$sidste = mysql_query("SELECT * FROM forum WHERE thread != '$thread' ORDER BY id DESC LIMIT 0, 1");
while($data = mysql_fetch_array($sidste)){
    echo "<tr><td colspan=\"3\" style=\"background-color : #ddffee;\">";
    echo "Last answer written by ";
    echo $data[navn];
    echo " in the debate ";
    echo $data[emne];
    echo ", ";
    echo date("H:i:s j/n-Y", $data[tid]);
    echo "</td></tr>";
    }

$foresp = mysql_query("SELECT tid, emne, id, thread FROM forum WHERE emne != '' ORDER BY id DESC LIMIT 0, 20");
while($data = mysql_fetch_array($foresp)){
    echo "<tr><td width=\"100\">";
    echo date("j/n - Y", $data[0]);
    echo "</td><td width=\"250\">";
    echo "<a href=\"view.php?thread=$data[3]\">";
    echo "$data[1]<br>";
    echo "</a></td>";
    }

$antal = mysql_query("SELECT 'thread' FROM 'forum' WHERE 'thread' = '$thread' LIMIT 0, 1");
while($antallet = count($antal)){
    echo "<td width=\"200\">";
    echo $antallet;
    echo " answers";
    echo "</td></tr>";
    }
?>
</table>


Jeg håber meget at I kan hjælpe mig, for jeg har brugt alt for meget tid forgæves...
Avatar billede benjamin87 Nybegynder
30. august 2003 - 13:14 #1
Undskyld... jeg har ændret lidt i koden så den sidste del af den nu ser sådan ud:

$antal = mysql_query("SELECT 'thread' FROM 'forum' WHERE 'thread' = '$thread' LIMIT 0, 1");
$antallet = count($antal);
    echo "<td width=\"200\">";
    echo $antallet;
    echo " answers";
    echo "</td></tr>";
?>
</table>

Det var fordi at man slet ikke kunne se siden som den så ud før...
Avatar billede schaefner Juniormester
30. august 2003 - 13:17 #2
Er det bare alle tråde og antal svar til hver enkelt tråd du ønsker?
Avatar billede schaefner Juniormester
30. august 2003 - 13:28 #3
Prøv:

<table width="550" cellpadding=0 cellspacing=0 style="border: 1px solid #116655"><tr>
<td colspan="3" style="background: #116655; color: white; font-size: 10px;">Debates</td></tr>
<?
$mysqlhandle = mysql_connect('host','brugernavn','password"');
mysql_select_db('databasenavnet',$mysqlhandle);

$sidste = mysql_query("SELECT * FROM forum WHERE thread != '$thread' ORDER BY id DESC LIMIT 0,1");
$data = mysql_fetch_array($sidste);
echo '<tr>';
echo '<td colspan="3" style="background: #ddffee">Last answer written by '.$data['navn'].' in the debate '.$data['emne'].', '.date("H:i:s j/n-Y", $data[tid]).'</td>';
echo '</tr>';

$foresp = mysql_query("SELECT tid,emne,id,thread FROM forum WHERE emne != '' ORDER BY id DESC LIMIT 0,20");
while($data = mysql_fetch_assoc($foresp)){
    echo '<tr>';
    echo '<td width="100">'.date("j/n - Y", $data[0]).'</td>';
    echo "<td width=\"250\"><a href=\"view.php?thread=$data[id]\">$data[emne]</a></td>";
    $antal = mysql_result(mysql_query("SELECT COUNT(*) WHERE thread = $data[id]"),0);
    echo '<td width="200">'.$antal.' answers</td>';
    echo '</tr>';
}
?>
</table>
Avatar billede schaefner Juniormester
30. august 2003 - 13:30 #4
hov
echo '<td width="100">'.date("j/n - Y", $data[0]).'</td>';

skal lige være:

echo '<td width="100">'.date("j/n - Y",$data['tid']).'</td>';
Avatar billede benjamin87 Nybegynder
30. august 2003 - 14:19 #5
det virker ikke helt som du kan se på www.vffsupport.dk/uk/oversigt.php ....
Avatar billede schaefner Juniormester
30. august 2003 - 14:27 #6
Prøv denne:

<table width="550" cellpadding=0 cellspacing=0 style="border: 1px solid #116655"><tr>
<td colspan="3" style="background: #116655; color: white; font-size: 10px;">Debates</td></tr>
<?
$mysqlhandle = mysql_connect('host','brugernavn','password"');
mysql_select_db('databasenavnet',$mysqlhandle);

$sidste = mysql_query("SELECT * FROM forum WHERE thread != '$thread' ORDER BY id DESC LIMIT 0,1") or die(mysql_error());
$data = mysql_fetch_array($sidste);
echo '<tr>';
echo '<td colspan="3" style="background: #ddffee">Last answer written by '.$data['navn'].' in the debate '.$data['emne'].', '.date("H:i:s j/n-Y", $data[tid]).'</td>';
echo '</tr>';

$foresp = mysql_query("SELECT tid,emne,id,thread FROM forum WHERE emne != '' ORDER BY id DESC LIMIT 0,20") or die(mysql_error());
while($data = mysql_fetch_array($foresp)){
    echo '<tr>';
    echo '<td width="100">'.date("j/n - Y",$data['tid']).'</td>';
    echo "<td width=\"250\"><a href=\"view.php?thread=$data[id]\">$data[emne]</a></td>";
    $counter = mysql_query("SELECT COUNT(*) WHERE thread = $data[id]") or die(mysql_error());
    $antal = mysql_result($counter,0);
    echo '<td width="200">'.$antal.' answers</td>';
    echo '</tr>';
}
?>
</table>
Avatar billede schaefner Juniormester
30. august 2003 - 14:31 #7
hov

$counter = mysql_query("SELECT COUNT(*) WHERE thread = $data[id]") or die(mysql_error());

skal så selvfølgelig være:

$counter = mysql_query("SELECT COUNT(*) FROM forum WHERE thread = $data[id]") or die(mysql_error());
Avatar billede benjamin87 Nybegynder
30. august 2003 - 15:48 #8
hjælper stadig ikke så meget som du kan se - jeg kan simpelthen ikke hitte ud af hvad der er galt.... :-(

www.vffsupport.dk/uk/oversigt.php
Avatar billede benjamin87 Nybegynder
30. august 2003 - 16:01 #9
du havde glemt at slette et anførselstegn i:

$mysqlhandle = mysql_connect('host','brugernavn','password"');

så nu ser man da ikke en række warnings mere om fejl i koden.

Men der står 0 ud for answers og der står heller ikke hvilken debat der sidst er skrevet i...
Avatar billede benjamin87 Nybegynder
30. august 2003 - 16:07 #10
der er et problem mere..............................
når man klikker ind på debatterne vises der ikke nogen indlæg...
Avatar billede schaefner Juniormester
30. august 2003 - 16:09 #11
Prøv:

<table width="550" cellpadding=0 cellspacing=0 style="border: 1px solid #116655"><tr>
<td colspan="3" style="background: #116655; color: white; font-size: 10px;">Debates</td></tr>
<?
$mysqlhandle = mysql_connect('host','brugernavn','password');
mysql_select_db('databasenavnet',$mysqlhandle);

$sidste = mysql_query("SELECT * FROM forum WHERE emne != '' LIMIT 0,1") or die(mysql_error());
$data = mysql_fetch_array($sidste);
echo '<tr>';
echo '<td colspan="3" style="background: #ddffee">Last answer written by '.$data['navn'].' in the debate '.$data['emne'].', '.date("H:i:s j/n-Y", $data[tid]).'</td>';
echo '</tr>';

$foresp = mysql_query("SELECT tid,emne,id FROM forum WHERE emne != '' ORDER BY id DESC LIMIT 0,20") or die(mysql_error());
while($data = mysql_fetch_array($foresp)){
    echo '<tr>';
    echo '<td width="100">'.date("j/n - Y",$data['tid']).'</td>';
    echo "<td width=\"250\"><a href=\"view.php?thread=$data[id]\">$data[emne]</a></td>";
    $counter = mysql_query("SELECT COUNT(*) FROM forum WHERE thread = $data[id]") or die(mysql_error());
    $antal = mysql_result($counter,0);
    echo '<td width="200">'.$antal.' answers</td>';
    echo '</tr>';
}
?>
</table>
Avatar billede benjamin87 Nybegynder
30. august 2003 - 16:16 #12
Godt, men stadig ikke helt godt nok...
Nu kan man se i hvilken debat der sidst er blevet skrevet i - det er godt! :-)

Men der står datdig 0 foran answers og når man klikker ind på debatterne så står der ikke noget...
Avatar billede schaefner Juniormester
30. august 2003 - 16:27 #13
Prøv at vise koden fra view.php
Avatar billede benjamin87 Nybegynder
30. august 2003 - 16:33 #14
Jeg har fået det lavet nu - fik hjælp fra en ven :-)
Her er koden som den kom til at se ud efter hans vejledning:

$sidste = mysql_query("SELECT * FROM forum WHERE emne != '' LIMIT 0,1") or die(mysql_error());
$data = mysql_fetch_array($sidste);
echo '<tr>';
echo '<td colspan="3" style="background: #ddffee">Last answer:<br>Written by '.$data['navn'].' in the debate: '.$data['emne'].', '.date("H:i:s j/n-Y", $data[tid]).'</td>';
echo '</tr>';

$foresp = mysql_query("SELECT tid,emne,id,thread FROM forum WHERE emne != '' ORDER BY id DESC LIMIT 0,20") or die(mysql_error());
while($data = mysql_fetch_array($foresp)){
    echo '<tr>';
    echo '<td width="100">'.date("j/n - Y",$data['tid']).'</td>';
    echo "<td width=\"250\"><a href=\"view.php?thread=$data[thread]\">$data[emne]</a></td>";
    $antal = mysql_num_rows(mysql_query("SELECT id FROM forum WHERE thread = $data[thread]"));
        $antal--;
    echo '<td width="200">'.$antal.' answers</td>';
    echo '</tr>';
}
?>
</table>

Men mange tak for at du gad hjælpe!
Avatar billede schaefner Juniormester
30. august 2003 - 17:47 #15
ok, det var så fordi jeg ikke kunne finde ud af din tabel-opbygning, men godt du fik det til virke :)
Avatar billede schaefner Juniormester
30. august 2003 - 17:47 #16
tabel-opbygningen i databasen.
Avatar billede schaefner Juniormester
30. august 2003 - 17:50 #17
men den her burde så være hurtigere:

$foresp = mysql_query("SELECT tid,emne,id FROM forum WHERE emne != '' ORDER BY id DESC LIMIT 0,20") or die(mysql_error());
while($data = mysql_fetch_array($foresp)){
    echo '<tr>';
    echo '<td width="100">'.date("j/n - Y",$data['tid']).'</td>';
    echo "<td width=\"250\"><a href=\"view.php?thread=$data[id]\">$data[emne]</a></td>";
    $antal = mysql_result(mysql_query("SELECT COUNT(*) FROM forum WHERE thread = $data[thread]"),0)-1;
    echo '<td width="200">'.$antal.' answers</td>';
    echo '</tr>';
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester