programm gesucht

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.
thompson
Mitglied
Beiträge: 797
Registriert: 14.11.2002 14:04
Wohnort: irgendwo im süden
Kontaktdaten:

Beitrag von thompson »

bin leider noch kein programmierer. werde aber mal darüber hirnen, und versuchen zu verstehen, was du mir sagen willst.

evtl. kannst du es ja noch genauer beschreiben ? (dass es auch der letzte heuler versteht ;) )
Benutzeravatar
MrMind
Mitglied
Beiträge: 464
Registriert: 29.11.2003 17:14
Wohnort: Darmstadt/Odw
Kontaktdaten:

Beitrag von MrMind »

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 8) auf eine Seite aufzulisten und sie zu verlinken, musst du wie folgt vorgehen:

SQL einrichten:

Code: Alles auswählen

$sql = 'SELECT * FROM PRÄFIX_threads WHERE id = 8 ASC';
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:

Code: Alles auswählen

$result = $db->query($sql);
(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:

Code: Alles auswählen

while($row = $db->fetch_array($result))
          $index[] .= $row;
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:

Code: Alles auswählen

$index[0]['name'] ... $index[9]['name']
um dies in Templates ausgeben zu können machste folgendes:

Code: Alles auswählen

for($i=0;$i<=count($index);$i++)
         {
            //Anweisungen und Zuweisung zur Templateausgabe mit $index[$i]['name'] etc
         }
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
Selbst ist der Coder
Coder unter Linux
thompson
Mitglied
Beiträge: 797
Registriert: 14.11.2002 14:04
Wohnort: irgendwo im süden
Kontaktdaten:

Beitrag von thompson »

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.
Benutzeravatar
Shadowman
Mitglied
Beiträge: 170
Registriert: 16.12.2003 19:01
Wohnort: Vaterstetten

Beitrag von Shadowman »

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 :roll: ) 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 8)

*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 :oops: )
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
Benutzeravatar
Shadowman
Mitglied
Beiträge: 170
Registriert: 16.12.2003 19:01
Wohnort: Vaterstetten

Beitrag von Shadowman »

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 :lol:

Das nu nun das rote im scirpt mit deinen eigenen daten ersetzen musst, muss ich dir ja hoffentlich nich erklären :wink:
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:

Beitrag von thompson »

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 :)
Benutzeravatar
Shadowman
Mitglied
Beiträge: 170
Registriert: 16.12.2003 19:01
Wohnort: Vaterstetten

Beitrag von Shadowman »

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.
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:

Beitrag von thompson »

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.

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"; 
vielen dank für euere hilfe.

dieses ergebnis kann ich mir in eine html seite schreiben lassen und dann kann ich es bearbeiten.
thompson
Mitglied
Beiträge: 797
Registriert: 14.11.2002 14:04
Wohnort: irgendwo im süden
Kontaktdaten:

Beitrag von thompson »

jemand eine Idee, wie ich das realisieren kann ?

vielleicht gibt es auch eine Möglichkeit wie ich z.b. nur den buchstaben "a" abfragen kann und innerhalb des buchstabens nach alphabeth sortiert.
Antworten

Zurück zu „Coding & Technik“