Beiträge der User aus DB auslesen

Hallo,

so nach 3 Wochen habe ich mal ein Teil meines Forums fertig. Das heißt ich kann nun Beiträge schreiben und ich kann auch Rubriken anlegen. Ich dachte gar nie dass das so schwer ist ein Forum zu machen :-(

Aber nun habe ich eine Frage und weiß gar nicht wie ich das umsetzten kann. Dass es geht weiß ich das sehe ich ja auch hier.

Aber hier kommt die Frage einfach mal.

Der User logt sich bei mir auf der Seite ein. Dann kann er im Forum was schreiben, das wird dann in einer Tabelle in der Datenbank gespeichert. Dort wird dann auch der Nickname gespeichert also der User wird anhand der Session gespeicher. Nun habe ich vor wie hier die Anzalh der Beiträge auszulesen, das heißt dass ich auf der Linken Seite das auch so haben will, dass da dann steht der User "Svenja" hat 10 beiträge geschrieben.

Kann mir da jemand sagen wie ich das anstellen kann, dass ich das immer auselsen kann.

Hier mal die Tabelle in der DB wie die aussieht:

PHP:
CREATE TABLE `forum_posts` (
   `postid` int(11) NOT NULL auto_increment,
   `threadid` int(11) NOT NULL default '0',
   `von` text NOT NULL,
   `datum` text NOT NULL,
   `post` text NOT NULL,
   `titel` text NOT NULL,
   `ip` text NOT NULL,
   PRIMARY KEY  (`postid`)
 ) TYPE=MyISAM AUTO_INCREMENT=16 ;

Gruß Svenja
 
Du suchst in der Tabelle mit den Beitraegen nach dem entsprechenden User der grad angezeigt wird und zaehlst dann die Eintraege.
Ungefaehr so:
PHP:
$result=mysql_query("select * from posts where userid='$userid'",$db);
$num_posts=mysql_num_rows($result);
In $num_posts steht nun die Anzahl der Beitraege die der User mit der UserID $userid geschrieben hat.
 
Hallo,

hmm so geht das nicht wenn ich das so machen wie du mir das gerade geschrieben hast, dann bekomme ich folgendes Felher:

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /www/htdocs/v148718/Svenja_Berlin/tread.php on line 213

Heir mal der Code wie das aussieht:

PHP:
					 <?php
   $threadid = $_GET['threadid']; // threadid aus adressleiste auslesen
   
   $fp = fopen("template_post.html","r");  // teamplate zum lesen(r) &ouml;ffnen
   $template = fread($fp,filesize("template_post.html"));  // inhalt der template datei in die teamplate variable laden.
   
   $sql = mysql_query("SELECT * FROM posts  WHERE threadid = '$threadid' ORDER BY postid ASC"); // mysql select befehl
   
 while($row = mysql_fetch_Assoc($sql)) { // l&auml;d bei jedem durchgang(immer die n&auml;chste) eine zeile aus der tabelle in einen array in die variable $row
   
   	$titel = $row['titel'];  // titel besorgen
   	$von = $row['von'];  // von besorgen
   	$datum = $row['datum']; // datum besorgen
   	$post = $row['post']; // post besorgen
 	$result=mysql_query("select * from simple_posts where $_SESSION['benutzername']='$_SESSION['benutzername']'",$db);
   	$num_posts=mysql_num_rows($result);	
   	$datum = strftime("%d.%m.%Y",$datum); //  datum formatieren
   	
   	$ausgabe = $template;
   	
 	$ausgabe = str_replace("{von}",'<a http://profils.php?user=' . $von . '">' . $von . '</a>',$ausgabe); // von ins template einsetzen
   	$ausgabe = str_replace("{titel}",$titel,$ausgabe);  // titel ins template einsetzen
   	$ausgabe = str_replace("{datum}",$datum,$ausgabe); // datum ins template einsetzen
   	
 	$ausgabe = str_replace("{text}",echo_message($post,false,true),$ausgabe); // den post text ins template einsetzen
   	
 	$ausgabe = str_replace("{message}",'<a http://nachrichten.php?show=write&amp;empfaenger=' . $von . '">Message schreiben</a>',$ausgabe); // den post text ins template einsetzen
   	
   	echo $ausgabe;
   	
   };
   ?>

Ich hoffe du kannst dich nochmals bei mir melden
 
Zuletzt bearbeitet:
PHP:
$result=mysql_query("select * from simple_posts where $_SESSION['benutzername']='$_SESSION['benutzername']'",$db);
Du ueberpruefst hier ob eine Variable gleich sich selbst ist. Sehr interessant. :)
Ausserdem geht diese Konstruktion -> '$_SESSION['benutzername']' nicht.
Probier mal das:
PHP:
$benutzername=$_SESSION["benutzername"];
$result=mysql_query("select * from simple_posts where von='$benutzername''",$db);
Ich nehme mal an, dass das Feld "von" den Namen des Users speichert, richtig?
 
Jepp genau da wo von drin steht da ist der Benutzername drin :-) Ich werde das gleich mal so versuchen wie du es mir gerade geschrieben hast


Hmm noch was. Aber ist das mmit der Sessikn nicht falsch? denn ich will ja dass der Beitrag immer da steht also die Anzahl. So wie hier auch im Forum da steht ja auch bei jedem User die Beiträge was er schon geschrieben hat
 
Das Script ist etwas komplexer.
Du musst die Beitraege ausgeben, und bei jedem Beitrag fuer den User die Beitraege suchen.
Wenn ich nachher etwas Luft hab guck ich mal ob ich ein Beispiel hab oder ein basteln kann.
 
Okay, ich nehm jetzt mal mein News-Script und hoffe dass Du damit was anfangen kannst. Vorher moechte ich noch darauf hinweisen, dass ich weiss dass new nicht der Singular von news ist, jedoch wollte ich nicht total vom Namensschema abweichen und hab mich daher fuer diesen Ausdruck entschieden.

Zur Zeit sieht es so aus:
PHP:
$news=mysql_query("select * from news order by id desc limit $newsstart,5",$db);
while ($new=mysql_fetch_row($news))
	{
		$users=mysql_query("select * from users where id='$new[4]'",$db);
		$user=mysql_fetch_array($users);
		?>
		<div class="news-item">
		<h4 class="news-header"><? printf($new[1]); ?></h4>
		<div class="news-user"><? printf($user[1]); ?></div>
		<div class="news-date"><? printf($new[3]); ?></div>
		<p class="news-text"><? printf(nl2br($new[2])); ?></p>
		</div>
		<?
	}
Damit werden halt ab $newsstart 5 Beitraege ausgegeben, mit dem jeweiligen User.
$new[4] enthaelt uebrigens die UserID, mal zur Erklaerung.
Sieht ungefaehr so aus (Vorsicht, hochwertige Grafik ;) ):
-------------------------------------------------------
| header |
-------------------------------------------------------
| user date |
-------------------------------------------------------
| text |
-------------------------------------------------------


Jetzt erweitere ich das mal, damit auch die Anzahl der Beitraege der User angezeigt werden. Das wird dann ungefaehr so aussehen (Achtung, wieder Picasso-style Zeichnung :) ):
-------------------------------------------------------
| header |
-------------------------------------------------------
| user (News: num_news) date |
-------------------------------------------------------
| text |
-------------------------------------------------------

Das ist dann der Code:
PHP:
$news=mysql_query("select * from news order by id desc limit $newsstart,5",$db);
while ($new=mysql_fetch_row($news))
	{
		$users=mysql_query("select * from users where id='$new[4]'",$db);
		$user=mysql_fetch_array($users);
		$user_news("select * from news where userid='$new[4]'",$db);
		$num_user_news=mysql_num_rows($user_news);
		?>
		<div class="news-item">
		<h4 class="news-header"><? printf($new[1]); ?></h4>
		<div class="news-user"><? printf("%s (News: %s)",$user[1],$num_user_news); ?></div>
		<div class="news-date"><? printf($new[3]); ?></div>
		<p class="news-text"><? printf(nl2br($new[2])); ?></p>
		</div>
		<?
	}

Ich hoffe Du kannst nachvollziehen wie Du das fuer Dein Script umzusetzen hast.
Viel Erfolg.

Nachtrag: Mist, die ganzen Whitespaces in meinen lustigen Tabellen sind entfernt worden. Hoffe Du verstehst trotzdem was ich damit verdeutlichen will.
 
Hallo und guten Morgen,

hmm leider kann ich mit dem hier gar nichts anfagen :-( Kann das sein, dass du nicht ganz verstanden hast was ich nur brauch?

Ich brauch nur, dass wo der Benutzername steht darunter dann auch noch ein Feld ist wo die Anzahl der Beiträge steht z.B.

Wenn der Name Svenja steht dann soll er doch bitte in der DB alle Beiträge zusammen zählen die ich geschrieben habe und dann einfach mit einer Zahl da stellen, so wie hier auch. Und das dann eben mit jedem User :-(
 
Willst Du diese Anzeige innerhalb des Threads haben oder soll diese Anzeige auf so einer Art User-Info-Page zu sehen sein wo dann lediglich Informationen ueber diesen User stehen?
 
Zurück