Wichtige Fragen für ein Forum

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Ulf
Mitglied
Beiträge: 61
Registriert: 27.12.2003 14:04
Kontaktdaten:

Wichtige Fragen für ein Forum

Beitrag von Ulf »

Hallo alle zusammen,
ich versuche gerade ein Forum mit PHP zu programmieren und stoße da immer auf Probleme.
Ich habe das Formular bei der Registrierung schon fertig. Das sieht zum Beispiel so aus:

...
Hier das Formular das an PHP gesendet wird..
<input type="text"... name="text1">...
...
...

<?php
echo $text1;
?>

Wenn ich die Seite lade, dann bekomme ich eine Fehlermeldung (Warnung), dass die Variable $text1 nicht existiert/definiert ist. Wenn ich aber auf den Submitbutton klicke, geht alles und es wird die Variable richtig ausgegeben.
Gibt es eine Möglichkeit, den PHP-Code nur dann auszuführen, wenn vorher das Formular gesendet wurde, also auf den Submit Button geklickt wurde? Oder wie kann ich Variablen erstellen, die nichts beonhalten. Also nicht 0 oder null, sondern nichts?

----

Das 2, Problem hat ebenfalls mit dem Forum zu tun.
Wenn ich auf ein Thema klicke, soll eine Seite x geöffnet werden und darin stehen dann die aus MySQL ausgelesenen Texte / Antworten der User.
D.h. das der Computer wissen muss, auf welches Thema ich geklickt habe, damit auch die richtigen Daten aus der Datenbank geladen werden. Kann man da irgendwie Parameter überweisen, wenn auf ein Link geklickt wurde.

Z.B.:

Thema1: <a href="antworten.php">"Wie findet ihr mein neues Forum?</a>
Antworten: 12

Thema2: <a href="antworten.php">Findet ihr es gut?</a>
Antworten: 4

Wenn auf das Thema 1 geklickt wurde, dann soll zwar die Seite antworten.php geladen werden, aber es sollen ja die Daten aus der Datenbank geladen werden, die wirklich zu diesem Thema gehören. Geht z.B., dass wenn auf Thema 1 geklickt wurde $i=1 und wenn auf Thema 2 geklickt wurde ist $i=2?
Sodass in der antworten.php Seite steht:

if($i==1)
...lade Datensätze für das 1. Thema und zeige sie an
else
if($i==2)
...lade Datensätze für das 2. Thema und zeige sie an

---

ds letzte Problem sieht so aus: Ich möchte ein Bereich machen, wo alle Besucher meines Forums aufgelistet sind. Das wäre ja kein Problem, aber wie weiß der Computer denn, wann wer geht. Auch hier ein Beispiel:
User x geht ins Forum. Wenn er sich einloggt wird in der MySQL Datenbank gespeichert, dass er online ist.
In der Liste auf der Startseite werden alle Leute angezeigt, die online sind. Wenn User x aber das Forum verlässt, muss ja wieder in der Datenbank gespeichert werden, dass er offline ist. Wie kann man so etwas umsetzten?


Ich würde mich wirklich freuen, wenn jemand mir helfen kann, denn ich sitze schon lange an diesen Problemen!
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

1. Mit [php:isset] oder [php:empty] kannst du prüfen, ob Variablen gesetzt sind bzw. Inhalt haben

2. foo.php?bar=baz -> $_GET['bar'] = 'baz'

3. Am besten du guckst dir dazu an, wie phpBB das gelöst hat (Quellcode hast du ja)
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Zum ersten: also die übergebenen Variablen bitte unbedingt aus den superglobalen Variablen wie z.B. $_GET auslesen - sonst könnte es Probleme geben (siehe http://de3.php.net/globals )
Prüfen kannst du dann z.B. mit

Code: Alles auswählen

if (!empty($_POST['text']))
Zum zweiten: Versuch's mal mit

Code: Alles auswählen

<a href="antworten.php?i=2">
Rest wie oben...

Ansonsten: KB:php - da sind auch Tutorials dabei

Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Ulf
Mitglied
Beiträge: 61
Registriert: 27.12.2003 14:04
Kontaktdaten:

Beitrag von Ulf »

Dank ersteinmal für die Antworten,
zu dem erstem Problem: ich vertseh nicht ganz wie das gemeint ist. Könnt ihr mir ein Beispiel geben?
Programmer
Mitglied
Beiträge: 32
Registriert: 10.08.2003 13:34
Kontaktdaten:

Beitrag von Programmer »

Um korrekt Daten vom Fromular zu übernehmen verwendet man $_POST und $_GET. SO bestimmst du die Methode:

<formular action="(hierher nach dem drücken) method="get" name="yeah">
$_GET("yeah")

<formular action="(hierher nach dem drücken) method="post" name="yeah">
$_POST("yeah")

Das sind Grundlagen die man bei Selfphp und php.net finden tut.

Dein 2. Problem ist simpel.
Du musst in der Datenbank gucken welche topic_id verwendet wurde
Bei mir ist es 9.

Code: Alles auswählen

$sql = "SELECT post_id, post_time, poster_id, forum_id, topic_id FROM SNM_phpbb_posts WHERE topic_id=9 ORDER BY post_time DESC";
$newsposts = $conn->Execute($sql);
Grundlagen aus der Datenbank holen

Code: Alles auswählen

	$sql = "SELECT bbcode_uid, post_id, post_subject, post_text FROM SNM_phpbb_posts_text WHERE post_id=".$newsposts->fields["post_id"]."";
	$newsposttext = $conn->Execute($sql);

	$sql = "SELECT username, user_id FROM SNM_phpbb_users WHERE user_id =".$newsposts->fields["poster_id"]."";
	$poster	= $conn->Execute($sql);
Texte und dergleichen auslesen

Code: Alles auswählen

	$newstext	=  	bbencode_second_pass($newstext, $newsposttext->fields["bbcode_uid"]); 
	$newstext  	=	smilies_pass2($newstext);
	$newstext	=	make_clickable($newstext);
	$newstext = str_replace("\n","<br />",$newstext);
Hier wird der Text konvertiert und angepasst.
Ausgeben musst nur noch selber :grin:

3.Problem:
Es gibt funktionale Tags wie ONCHANGE. Soviel ich weiss, gibt es einen für CLOSE oder so. Damit man darauf reagieren kann, wann der User geht.
Wenn er schliesst, musst du halt mittels Java ihm umleiten und dementsprechend die Datenbank anpassen.

P.S: Wieso nimmst du nicht von anfang an PHPBB her ?
Mir fällt gerade ein, dass du ja ein eigenes Forum schreiben tust...
Ich hoffe dir trotzdem helfen zu können.
Mit einem Computer löst man Probleme, die man ohne ihn, nicht hätte. :grin:
Ulf
Mitglied
Beiträge: 61
Registriert: 27.12.2003 14:04
Kontaktdaten:

Beitrag von Ulf »

ja danke, werde gleich mal ausprobieren, nochmal danke an alle Antworten!
Ulf
Mitglied
Beiträge: 61
Registriert: 27.12.2003 14:04
Kontaktdaten:

Beitrag von Ulf »

Was mir noch gerade eingefallen ist, da gibt es noch ein Problem:
Wenn ein neuer Thread erstellt wird, hatte ich dann gleich eine neue Tabelle in der DB gemacht. Geht das nicht anders? Gibt es da noch eine Möglichkeit, außer eine neue Tabelle zu machen?
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Füge einfach einen neuen Datensatz ein...
http://www.php4-forum.de/was_db.htm
Ulf
Mitglied
Beiträge: 61
Registriert: 27.12.2003 14:04
Kontaktdaten:

Beitrag von Ulf »

Pyramide hat geschrieben:Füge einfach einen neuen Datensatz ein...
http://www.php4-forum.de/was_db.htm
ja, das war mir auch klar. Aber das hat sich schon erledigt. Ich hab einfach mal in den Quelltext von phpbb geaschaut. Hier werden die Postings alle in eine Tabelle gespeichert, egal aus welchen Thread. ZUr Kennung existiert dann nur eine andere ID. So werde ich das auch machen, ich meinte nur, ob es auch anders geht, für jedes Thema eine neue Tabelle zu erstellen. Aber das hat sich ja wie gesagt schon erledigt.
Antworten

Zurück zu „Coding & Technik“