evtl. kannst du es ja noch genauer beschreiben ? (dass es auch der letzte heuler versteht
programm gesucht
Ok ich will es mal versuchen. Also wenn du sowas machen willst wie die Themen eines bestimmten Forums (nehmen wir mal Coding & Technik und geben dem Forum die ID
auf eine Seite aufzulisten und sie zu verlinken, musst du wie folgt vorgehen:
SQL einrichten:
Weiß nun leider nicht genau ob die beschreibungen und die Felder in MySQL die ich verwende auch die wahren von phpBB sind, musste mal gucken und angleichen.
DB abfrage machen:
(wie das query bei phpBB genau heißt musst du auch mal nachgucken ich verwende nur die Bezeichnungen die von php auch gedacht sind)
Die DB-Abfrage in einem Array sichern:
Zum Ausgeben brauchste dann ein Template oder ein HTML-Script in der PHP Datei (das ist jetzt komplizierter). Aufjeden Fall haste das dann wie folgt gesichert, wenn du 10 Themen drin hast:
um dies in Templates ausgeben zu können machste folgendes:
Die Links müssen lediglich dann so sein:
<a href="www.domain.de/phpbb2/viewtopic.php?p=$index[$i][id]>$index[$i][name]</a>
also ob die Variable p stimmt weiß ich jetzt net, hab grad net so die Zeit das nach zu gucken müsstest es selber machen. Und wie du es mit dem phpBB-System machen kannst musst mal jemanden vom phpBB-team befragen, da ich mich mit den Klassen von phpBB noch net so richtig auseinander gesetzt habe.
Mfg
MrMind
PS: hoffe das ich ein bissl weiterhelfen konnte
SQL einrichten:
Code: Alles auswählen
$sql = 'SELECT * FROM PRÄFIX_threads WHERE id = 8 ASC';DB abfrage machen:
Code: Alles auswählen
$result = $db->query($sql);Die DB-Abfrage in einem Array sichern:
Code: Alles auswählen
while($row = $db->fetch_array($result))
$index[] .= $row;Code: Alles auswählen
$index[0]['name'] ... $index[9]['name']Code: Alles auswählen
for($i=0;$i<=count($index);$i++)
{
//Anweisungen und Zuweisung zur Templateausgabe mit $index[$i]['name'] etc
}<a href="www.domain.de/phpbb2/viewtopic.php?p=$index[$i][id]>$index[$i][name]</a>
also ob die Variable p stimmt weiß ich jetzt net, hab grad net so die Zeit das nach zu gucken müsstest es selber machen. Und wie du es mit dem phpBB-System machen kannst musst mal jemanden vom phpBB-team befragen, da ich mich mit den Klassen von phpBB noch net so richtig auseinander gesetzt habe.
Mfg
MrMind
PS: hoffe das ich ein bissl weiterhelfen konnte
Selbst ist der Coder
Coder unter Linux
Coder unter Linux
-
thompson
- Mitglied
- Beiträge: 797
- Registriert: 14.11.2002 14:04
- Wohnort: irgendwo im süden
- Kontaktdaten:
danke mal für den tipp.
ist aber glaube ich nicht ganz das was ich eigentlich will.
ich möchte letztendlich so eine art brückenseiten erstellen.
also ich möchte aus jedem meiner foreneinträge eine eigene html-seite erstellen und diese dann in die suchmaschinen stellen.
am besten wäre dies über stichwörter / suchwörter oder alphabetisch nach suchwörtern.
wie kann ich die seiten generieren ? geht das nur auf einem webserver-testsystem auf dem ich meine mysql tabelle eingelesen habe ? wer weiss rat ?
vielen dank für euere hilfe.
ist aber glaube ich nicht ganz das was ich eigentlich will.
ich möchte letztendlich so eine art brückenseiten erstellen.
also ich möchte aus jedem meiner foreneinträge eine eigene html-seite erstellen und diese dann in die suchmaschinen stellen.
am besten wäre dies über stichwörter / suchwörter oder alphabetisch nach suchwörtern.
wie kann ich die seiten generieren ? geht das nur auf einem webserver-testsystem auf dem ich meine mysql tabelle eingelesen habe ? wer weiss rat ?
vielen dank für euere hilfe.
so ein programm wirst du leider nicht finden, da dies um es flexibel zu halten sehr viel arbeit wäre, z.b. mit einem control center. oder dass diejenigen, die es programmiert haben es bei sich gelassen haben, da sie denken dass es eh keiner braucht ^^
solltest du aber vorhaben mal selber sowas zu schreiben, dann musst du dich ein wenig mit php auseinander setzen.
nun aber mal was zu den bestehenden posts:
aber eine html datei is nie dynamisch, du musst schon eine php datei erstellen, die diese ganzen einträge dann aus der datenbank ausliest, und mrmind hat dann schon recht, dies wäre der code für einen einzelnen eintrag.
wenn dann alles in der php datei steht, muss man .htaccses (ich glaub ich schreib es falsch
) datei benutzen, die dann irgendie nen zugriff auf eine .html datei auf die php umleitet oder so. das is nich so mein fachgebiet, da ich es nie gebraucht habe, am b esten sollte mal hier ein richtiger checker wie pyramide vorbei schaun, der kann das ganz sicher erklären 
*EDIT* ich will mal nich so sein und versuch dir mal das ganze zu erklären.
Also du musst mit phpmy admin eine tabelle erstellen. diese solltest du eben so strukturieren, dass sie einfahc auszulesen is
z.b. die spalten ID, Name,Text
das kann man ja immer erweitern.
ID sollte den typ INT haben und die Länge/Set sollte 10 sein. Bei Extra wählst du auto_increment und als allerletztes setzt du noch eine fähnchen bei
Primärschlüssel
Erklärung: Int ist der Typ des Feldes, Int steht dabei für integer. Dies schliesst alle Zahlen ohne Nachkomma stellen ein. Länge/Set gibt an, wieviel zeichen der eintrag in dieses Feld haben darf, also bei uns 12.
auto_increment bestimmt, dass bei jedem weitere Eintrag ID um eines nach oben gezählt wird, das ist sehr wichtig, da man jeder datensatz ja identifizierbar sein muss. Und Primärschlüssel (hm das habe ich doch glatt vergessen, seit ich php gelernt habe verwende ich ID immer als primärschlüssel, dich die genaue aufgabe kann ich dir nicht erklären
)
Die Name sollte vom type Char sein. Die länge bleibt dir überlassen, wie du willst. Ich würde dann nur noch das flag bei unique eintragen, damit keine doppelten einträge in der tabelle stehen.
Text sollte vom Type Text sein. Dies steht für normal lange beschreibungen. Sollte dir das feld dann nicht lange genug sein, solltest du longtext nehmen. Das sollte dir locker reichen.
Nun ist die tabelle fertig, als nächstes solltest du ein script schreiben, was dir so eine tabelle ausgibt:
Also ich weiss ja nun nicht ob du das in phpbb einbauen willst, also schreib ich es mal so, dass es auch ohne geht, du kannst es dann trotzdem einbauen.
<?php
$benutzer = "Dein Username bei der Datenbank";
$passwort = "Dein Passwort bei der Datenbank";
$link=mysql_connect("localhost", $benutzer, $password);
mysql_select_db("Dein Datenbankname", $link);
// Nun kommt die abfrage
$tabellenname = "Dein Tabellenname";
$sql = "SELECT * FROM $tabellenname ASC";
$result=mysql_query($sql, $link);
for($i=0;$i<mysql_num_rows($result);$i++)
{
$ergebnis[$i] = mysql_fetch_array($result);
}
echo "<table border='0'>";
for($i=0;$i<count($ergebnis);$i++)
{
echo "<tr><td><a href='lexikon.php?ID=".$ergebnis[$i][ID]."'>".$ergebnis[$i][Name]."</a>";
}
echo "</table>";
?>
Nun sollte dir dieses script, eine alphabetisch geordnete liste aller einträge in deiner tabelle ausgeben.
Die einzelnen schritte zu erklären is ein wenig schweirig, aber ich versuch es mal. Ganz am anfang sagt man dem script, wie die benutzer daten heissen, um sich in die datenbank einzuloggen, dann wird eine datenbank ausgewählt. das , was isn $sql steht, ist die eigentliche abfrage aus der datenbank, man kann es mit WÄHLE ALLES VON Tabellenname Absteigend
übersetzen. dann wird diese query ausgeführt. doch nun hat man den ganzen text in einer zeile drinnen, damit kann man ja leider nichts anfangen, also muss man das ganze einmal sortieren, dass passiert mit
dieser schleife hier.
Am schluss habe ich nochmal eine schleife gemacht, die dann jeden Datensatz einzeln ausgibt.
Du musst nun einfach den gesammten text einschliesslich <?php und ?> kopieren und in eine datei mit der endung .php reinkopieren.
solltest du aber vorhaben mal selber sowas zu schreiben, dann musst du dich ein wenig mit php auseinander setzen.
nun aber mal was zu den bestehenden posts:
aber eine html datei is nie dynamisch, du musst schon eine php datei erstellen, die diese ganzen einträge dann aus der datenbank ausliest, und mrmind hat dann schon recht, dies wäre der code für einen einzelnen eintrag.
wenn dann alles in der php datei steht, muss man .htaccses (ich glaub ich schreib es falsch
*EDIT* ich will mal nich so sein und versuch dir mal das ganze zu erklären.
Also du musst mit phpmy admin eine tabelle erstellen. diese solltest du eben so strukturieren, dass sie einfahc auszulesen is
z.b. die spalten ID, Name,Text
das kann man ja immer erweitern.
ID sollte den typ INT haben und die Länge/Set sollte 10 sein. Bei Extra wählst du auto_increment und als allerletztes setzt du noch eine fähnchen bei
Primärschlüssel
Erklärung: Int ist der Typ des Feldes, Int steht dabei für integer. Dies schliesst alle Zahlen ohne Nachkomma stellen ein. Länge/Set gibt an, wieviel zeichen der eintrag in dieses Feld haben darf, also bei uns 12.
auto_increment bestimmt, dass bei jedem weitere Eintrag ID um eines nach oben gezählt wird, das ist sehr wichtig, da man jeder datensatz ja identifizierbar sein muss. Und Primärschlüssel (hm das habe ich doch glatt vergessen, seit ich php gelernt habe verwende ich ID immer als primärschlüssel, dich die genaue aufgabe kann ich dir nicht erklären
Die Name sollte vom type Char sein. Die länge bleibt dir überlassen, wie du willst. Ich würde dann nur noch das flag bei unique eintragen, damit keine doppelten einträge in der tabelle stehen.
Text sollte vom Type Text sein. Dies steht für normal lange beschreibungen. Sollte dir das feld dann nicht lange genug sein, solltest du longtext nehmen. Das sollte dir locker reichen.
Nun ist die tabelle fertig, als nächstes solltest du ein script schreiben, was dir so eine tabelle ausgibt:
Also ich weiss ja nun nicht ob du das in phpbb einbauen willst, also schreib ich es mal so, dass es auch ohne geht, du kannst es dann trotzdem einbauen.
<?php
$benutzer = "Dein Username bei der Datenbank";
$passwort = "Dein Passwort bei der Datenbank";
$link=mysql_connect("localhost", $benutzer, $password);
mysql_select_db("Dein Datenbankname", $link);
// Nun kommt die abfrage
$tabellenname = "Dein Tabellenname";
$sql = "SELECT * FROM $tabellenname ASC";
$result=mysql_query($sql, $link);
for($i=0;$i<mysql_num_rows($result);$i++)
{
$ergebnis[$i] = mysql_fetch_array($result);
}
echo "<table border='0'>";
for($i=0;$i<count($ergebnis);$i++)
{
echo "<tr><td><a href='lexikon.php?ID=".$ergebnis[$i][ID]."'>".$ergebnis[$i][Name]."</a>";
}
echo "</table>";
?>
Nun sollte dir dieses script, eine alphabetisch geordnete liste aller einträge in deiner tabelle ausgeben.
Die einzelnen schritte zu erklären is ein wenig schweirig, aber ich versuch es mal. Ganz am anfang sagt man dem script, wie die benutzer daten heissen, um sich in die datenbank einzuloggen, dann wird eine datenbank ausgewählt. das , was isn $sql steht, ist die eigentliche abfrage aus der datenbank, man kann es mit WÄHLE ALLES VON Tabellenname Absteigend
übersetzen. dann wird diese query ausgeführt. doch nun hat man den ganzen text in einer zeile drinnen, damit kann man ja leider nichts anfangen, also muss man das ganze einmal sortieren, dass passiert mit
Code: Alles auswählen
for($i=0;$i<mysql_num_rows($result);$i++)
{
$ergebnis[$i] = mysql_fetch_array($result);
}
dieser schleife hier.
Am schluss habe ich nochmal eine schleife gemacht, die dann jeden Datensatz einzeln ausgibt.
Du musst nun einfach den gesammten text einschliesslich <?php und ?> kopieren und in eine datei mit der endung .php reinkopieren.
Zuletzt geändert von Shadowman am 23.02.2004 12:29, insgesamt 1-mal geändert.
Proud Admin & Webmaster of http://www.broxx-com.de
nun musst du nur noch die einzelnen sachen auslesen.
erstelle einfach mal eine datei mit dem namen lexikon.php
In sie schreibst du folgendes rein:
<?php
$benutzer = "Dein Username bei der Datenbank";
$passwort = "Dein Passwort bei der Datenbank";
$link=mysql_connect("localhost", $benutzer, $password);
mysql_select_db("Dein Datenbankname", $link);
$ID = $_GET[ID];
$tabellenname = "DEIN Tabellenname";
$sql = "SELECT * FROM $tabellenname WHERE ID=$ID";
$result = mysql_query($sql,$link);
for($i=0;$i<mysql_num_rows($result);$i++)
{
$ergebnis[$i] = mysql_fetch_array($result);
}
echo $ergebnis[0][Text];
?>
Das wars. Nun musst du per phpmyadmin einfach deinen text ins text feld eintragen, dieses kann auch html codes enthalten, dies macht nichts, nur php codes sind nicht erlaubt.
Und wie das mit .htacces dateien geht, muss ein anderer erklären, das weiss ich noch nicht
Das nu nun das rote im scirpt mit deinen eigenen daten ersetzen musst, muss ich dir ja hoffentlich nich erklären
erstelle einfach mal eine datei mit dem namen lexikon.php
In sie schreibst du folgendes rein:
<?php
$benutzer = "Dein Username bei der Datenbank";
$passwort = "Dein Passwort bei der Datenbank";
$link=mysql_connect("localhost", $benutzer, $password);
mysql_select_db("Dein Datenbankname", $link);
$ID = $_GET[ID];
$tabellenname = "DEIN Tabellenname";
$sql = "SELECT * FROM $tabellenname WHERE ID=$ID";
$result = mysql_query($sql,$link);
for($i=0;$i<mysql_num_rows($result);$i++)
{
$ergebnis[$i] = mysql_fetch_array($result);
}
echo $ergebnis[0][Text];
?>
Das wars. Nun musst du per phpmyadmin einfach deinen text ins text feld eintragen, dieses kann auch html codes enthalten, dies macht nichts, nur php codes sind nicht erlaubt.
Und wie das mit .htacces dateien geht, muss ein anderer erklären, das weiss ich noch nicht
Das nu nun das rote im scirpt mit deinen eigenen daten ersetzen musst, muss ich dir ja hoffentlich nich erklären
Proud Admin & Webmaster of http://www.broxx-com.de
-
thompson
- Mitglied
- Beiträge: 797
- Registriert: 14.11.2002 14:04
- Wohnort: irgendwo im süden
- Kontaktdaten:
das ist mal eine antwort.
herzlichen dank für die ausführliche anleitung.
ergebniss müsste sein - wenn ich es richtig verstanden habe- eine seite mit daten nach alphabet sortiert. oder ?
vielleicht ist es ja noch möglich, dies für a - z jeweils einzeln auszugeben ? dann hätte ich eigentlich das, was ich suche.
danke mal
herzlichen dank für die ausführliche anleitung.
ergebniss müsste sein - wenn ich es richtig verstanden habe- eine seite mit daten nach alphabet sortiert. oder ?
vielleicht ist es ja noch möglich, dies für a - z jeweils einzeln auszugeben ? dann hätte ich eigentlich das, was ich suche.
danke mal
das is dann einfach, du musst ein neues feld namens letter erstellen. da steht dann er anfangsbuchstabe drinnen, von dem namen.
dann musst du die query so lauten:
$letter = $_GET['letter'];
if(!$_GET['letter'])
{
$letter="a";
}
$sql = "SELECT * FROM $tabellenname WHERE letter=$letter ORDER BY Name ASC";
Erklärung: Wenn jemand alles mit dem Buchstaben a will, dann wählt der die datei an, z.b. lexika.php?letter=a
für b wäre es lexika.php?letter=b
dann musst du nicht 26 seiten erstellen
dieser code muss
diesen
$sql = "SELECT * FROM $tabellenname ASC";
in meinem ersten post ersetzen, dann sollte alles klappen.
dann musst du die query so lauten:
$letter = $_GET['letter'];
if(!$_GET['letter'])
{
$letter="a";
}
$sql = "SELECT * FROM $tabellenname WHERE letter=$letter ORDER BY Name ASC";
Erklärung: Wenn jemand alles mit dem Buchstaben a will, dann wählt der die datei an, z.b. lexika.php?letter=a
für b wäre es lexika.php?letter=b
dann musst du nicht 26 seiten erstellen
dieser code muss
diesen
$sql = "SELECT * FROM $tabellenname ASC";
in meinem ersten post ersetzen, dann sollte alles klappen.
Proud Admin & Webmaster of http://www.broxx-com.de
-
thompson
- Mitglied
- Beiträge: 797
- Registriert: 14.11.2002 14:04
- Wohnort: irgendwo im süden
- Kontaktdaten:
habe mir mal etwas zusammengebastelt.
mit dem komme ich schon gut zurecht, aber da gibt es viele ergebnisse die mit zahlen beginnen. die würde ich gerne noch ausschließen, so dass nur von a-z gelistet wird.
vielen dank für euere hilfe.
dieses ergebnis kann ich mir in eine html seite schreiben lassen und dann kann ich es bearbeiten.
mit dem komme ich schon gut zurecht, aber da gibt es viele ergebnisse die mit zahlen beginnen. die würde ich gerne noch ausschließen, so dass nur von a-z gelistet wird.
Code: Alles auswählen
$sql = "SELECT t.topic_id, t.topic_title, k.post_text, w.word_text
FROM " . TOPICS_TABLE . " t, " . FORUMS_TABLE . " f, " . POSTS_TEXT_TABLE . " k, " . POSTS_TABLE . " l, " . SEARCH_WORD_TABLE . " w, " . SEARCH_MATCH_TABLE . " m
WHERE f.forum_id = t.forum_id
and k.post_id = l.post_id
and l.topic_id = t.topic_id
and w.word_id = m.word_id
and m.post_id = l.post_id
AND f.auth_view=0
ORDER BY w.word_text ASC
LIMIT $offset, 50"; dieses ergebnis kann ich mir in eine html seite schreiben lassen und dann kann ich es bearbeiten.