Goedeavond...

ik heb dus een forum op mijn site staan, hij werkt!
alleen wil ik graag op de index.php het zelfde forum, maar dan alleen met de topic's die 'ík' of de 'ingelogde gebruiker' heeft aangemaakt.. is dit mogenlijk??? ik persoonlijk denk van wel maar weet alleen ff niet hoe.

Dit is nu het script:
is er een database structuur nodig of andere stukjes script dan hoor ik het wel :)

Bij voorbaad dank,

Reduan Kurtaj


<?php

echo 
'<table width="90%" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">
<td width="53%" align="center" bgcolor="#E6E6E6"><strong>Topic</strong></td>
<td width="5%" align="center" bgcolor="#E6E6E6"><strong>Reacties</strong></td>
<td width="13%" align="center" bgcolor="#E6E6E6"><strong>Aangemaakt op</strong></td>
</tr>';

include('conn.php'); 

// we maken een query die alle topics ophaalt met hun gegevens.
    $sql = "SELECT topic_id, topic_titel, topic_datumtijd FROM topic ORDER BY topic_id DESC";

// die query voeren we uit.
    $resultaat = mysql_query($sql)or die(mysql_error());

// hier slaan we alle resultaten op in een array genaamd rij.
    while($rij = mysql_fetch_array($resultaat)){ 

// Per topic het aantal reactie;s ophalen.  
    $sql2 = mysql_query("SELECT reactie_id FROM reactie WHERE topic_id = ".$rij['topic_id'].";")or die(mysql_error());

// hier tellen we de resultaten en slaan dit op in $reacties	  
    $reacties = mysql_num_rows($sql2);

//alles netjes weergeven in een tabel.
    echo 
      '
	  <tr>
      <td bgcolor="#FFFFFF"><a href="?bekijktopic='.$rij['topic_id'].'">'.stripslashes($rij['topic_titel']).'</a></td>
      <td align="center" bgcolor="#FFFFFF">'.$reacties.'</td>
      <td align="center" bgcolor="#FFFFFF">'.$rij['topic_datumtijd'].'</td>
      </tr>
	  ';
    }
echo '<tr>
<td colspan="5" align="right" bgcolor="#E6E6E6"><a href="?maaktopic">Maak een nieuw Topic aan</a></td>
</tr>
</table>';
?>
Een "Mijn topics" overzicht?
Je kan toch iets doen zoals:

SELECT topic_id, topic_titel, topic_datumtijd FROM topic WHERE user_id = '42' ORDER BY topic_id DESC

Verder zou ik dit liever sorteren op de datum wanneer er voor het laatste gepost is.
Ook prefereer ik om het aantal reacties ook in een apart veld op te slaan, zodat je niet per topic een extra querie hoeft te draaien. Je moet dan wel goed opletten dat het aantal blijft kloppen bij verwijder/verplaats-acties enzovoort.

Ook vraag ik me af waarom er weer slechte fout-afhandeling wordt gebruikt? die() hoor je NOOIT in een script te gebruiken, omdat een script nooit moet sterven.

Los van de PHP-code kan je de tabellen natuurlijk ook prima in CSS-stylen, want nog schonere code zal opleveren.
TnQ voor je reactie 'AGAIN'

alleen waar haal je die 42 vandaan?? ;o

SELECT topic_id, topic_titel, topic_datumtijd FROM topic WHERE user_id = '42' ORDER BY topic_id DESC
Dat is gewoon een voorbeeld van een user_id van de ingelogde gebruiker.
Ozzie PHP op 15/01/2014 00:24:08

Dat is gewoon een voorbeeld van een user_id van de ingelogde gebruiker.


Daar kwam ik idd achter toen ik hem veranderde in mijn eigen ID!
Is het niet mogelijk om '.$_SESSION['id'].' in SQL te gebruiken??

Want als ik een vast ID geef, ziet iedereen alleen maar 'mijn' topics of juist alleen maar die van iemand anders..
Ja kan natuurlijk ook $_SESSION['id'] gebruiken.

Die 42 zou je ook in een $_GET['userid'] kunnen aanpassen als je per gebruiker een overzicht wilt hebben, let dan wel op escaping tegen SQL-injection.
en het zal ook niet anders dan dat die NIET in 1x werkt :(

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /mnt/webc/e2/15/53954115/htdocs/index1.php on line 64

Regel 64:
<?php
// we maken een query die alle topics ophaalt met hun gegevens.
$sql = "SELECT topic_id, topic_titel, topic_datumtijd FROM topic WHERE id = '.$_SESSION['id']' ORDER BY topic_id DESC";
?>
Gewoon goed kijken, dan kun je het zelf ook oplossen :)
Kijk eens naar je string. Je start het met een " dus moet je hem ook weer onderbreken met een ", waarna je een variabele eraan kan koppelen met een punt (.) Plus dat je daarna de string weer af moet maken:

<?php
echo "Dit is een string" .$dit_is_een_variabele. "dit is een string";
?>


Probeer nu zelf eens door logisch te kijken.
Let er wel op dat alle waardes in je WHERE in ieder geval voor je SQL al tussen single-quotes horen, net zoals de '42' in mijn voorbeeld.

Het is gelukt hoor!!
Supper bedankt (Y)
Reduan kurtaj op 15/01/2014 00:37:20

en het zal ook niet anders dan dat die NIET in 1x werkt :(

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /mnt/webc/e2/15/53954115/htdocs/index1.php on line 64

Regel 64:
<?php
// we maken een query die alle topics ophaalt met hun gegevens.
$sql = "SELECT topic_id, topic_titel, topic_datumtijd FROM topic WHERE id = '.$_SESSION['id']' ORDER BY topic_id DESC";
?>

Je gebruikt hier $_SESSION['id'] in een string. Dat kan, maar in dat geval moet je geen quotes om 'id' zetten, omdat die al in een string context staat. Daarnaast lijkt het me logisch dat 'id' een numerieke waarde is. In je query horen er dan geen quotes omheen (okay, MySQL kijkt niet zo nauw, maar zodra je een keer met een echt DBMS gaat werken schiet je jezelf in je voet). Je code zou dus moeten worden:

<?php
// we maken een query die alle topics ophaalt met hun gegevens.
$sql = "SELECT topic_id, topic_titel, topic_datumtijd FROM topic WHERE id = $_SESSION[id] ORDER BY topic_id DESC";
?>

En wat betreft het getal 42: https://nl.wikipedia.org/wiki/42_%28getal%29. En dan moet je zelf maar even zoeken welke betekenis bedoeld wordt. ;-)

Reageren