Datenbankabfrage für Lexikon strukturieren

rolli123

Mitglied
Hallo,

vorab, ich habe den Beitrag hier komplett editiert, weil ich gestern abend wohl ziemlichen Blödsinn geschrieben hab. Dafür erstmal entschuldigung an alle die in gelesen haben.
Ich werde jetzt mal versuchen mich klar und deutlich auszudrücken.

Ich bin dabei ein Lexikon zu erstellen, dazu habe ich eine Tabelle mit 2 Feldern erstellt.
Erstes Feld: "schluessel" (hier kommt der Begriff rein)
Zweites Feld "erklaerung" (hier kommt die Erklärung zum Begriff)

Ich möchte jetzt ausser das der Besucher die Möglichkeit hat über ein Suchfeld etwas zu suchen, noch eine alphabetische Liste machen.

Wie bekomme ich so etwas hin? Bisher habe ich es lediglich geschafft die Begriffe aus dem Feld "schluessel" abzurufen und auf der Website darzustellen. Wie krieg ich es jetzt hin, das aus dieser Abfrage quasi ein Link wird, also, das der Besucher ihn anklicken kann und dann kommt die erklärung zu diesem Begriff?

Also so in etwa:

A
alle begriffe mit anfangsbuchstabe A
B
alle begriffe mit anfangsbuchstabe B (usw.)


Hier mal die ganz einfache Abfrage:



// Verbindung zur mySQL - Datenbank herstellen

require('connect.inc.php');
if ($verbindung = mysql_connect($server, $user, $pass))

//versuchen die DB Verbindung herzustellen

if (!mysql_query("USE $database;"))
{
echo "die datenbank konnte nicht ausgewählt werden: " . mysql_error();exit();
}

//das feld schluessel in lexikon auslesen

$anfrage = "select schluessel from lexikon;";
if (!($ergebnis = mysql_query($anfrage)))
{echo "die anfrage ist fehlgeschlagen<p> " . mysql_error();
exit();
}

//den kopf der html tabelle generieren

echo "<table border=\"0\">";
echo "<tr>";
echo "<td><b>Inhalt des Lexikons</b><td>";
echo "</tr>";
//eintraege aus schluessel holen
while ($schluessel = mysql_fetch_object($ergebnis))
{
echo "<tr>";
echo "<td>$schluessel->schluessel</td>";
echo "</tr>";
}
echo "</table>";
mysql_close($verbindung);
?> :) :)

Vorab vielen Dank für Eure Hilfe
gruss
rolf
 
Zuletzt bearbeitet:
Oh nein - da habe ich dir was eingebrockt, was ? ;)

Sagst du mir kurz nochmal, was das Feld 'schluessel' für nen Inhalt hat?
 
Hallo,

so schlimm ist das garnicht, einen klitzekleinen Anfang hab ich ja gemacht, bin froh das Du geantwortet hast, Du weisst ja auch was ich meine ;). Ausserdem lerne ich gerne dazu.

Also meine Tabelle sieht so aus:

'schluessel' varchar(50) Not Null default
'erklaerung' text
Primary Key ('schluessel')
Type=MyISAM

In dem Feld "schluessel" hab ich den Suchbegriff eingetragen, also z.b. Pyramide, in dem Feld erklaerung ist das der Begriff Pyramide erklärt;).

gruss
rolf
 
Dann ist es doch kein Problem.
PHP:
$anfrage = "SELECT schluessel
           FROM  lexikon
           ORDER BY schluessel";
Das sollte dir die Einträge nach dem Alphabet sortiert ausgeben.
 
Hallo,

ich hab das gerade mal ausprobiert, die Ausgabe ist ja die, die ich schon habe.(siehe oben) Einfach nur eine Liste/Tabelle mit den Begriffen aus dem Feld schluessel.

Ich hatte Dich so verstanden, das diese Begriffe quasi als Link funktionieren sollen. Also das man sie anklicken kann und dann erscheint die Erklärung dazu.

Also Tabelle mit Buchstabe A, wenn man den anklickt, erscheinen alle Worte die in dem Lexikon sind und mit dem Buchstaben A anfangen und diese sind "aktiv".

Hatte ich Dich falsch verstanden?

gruss
rolf
 
Hallo,

leg doch einfach eine weitere PHP Datei mit folgendem Code an (read.php).
PHP:
<?PHP
// Verbindung zur mySQL - Datenbank herstellen
 
require('connect.inc.php');
if ($verbindung = mysql_connect($server, $user, $pass))
 
//versuchen die DB Verbindung herzustellen
 
if (!mysql_query("USE $database;"))
{
echo "die datenbank konnte nicht ausgewählt werden: " . mysql_error();exit();
}
 
//das feld schluessel in lexikon auslesen
 
$anfrage = "select erklaerung from lexikon WHERE schluessel = $schluessel";
if (!($ergebnis = mysql_query($anfrage)))
{echo "die anfrage ist fehlgeschlagen<p> " . mysql_error();
exit();
}
//eintraege aus schluessel holen
while ($erklaerung = mysql_fetch_object($ergebnis))
{
echo "<tr>";
echo "<td>$erklaerung->erklaerung</td>";
echo "</tr>";
}
echo "</table>";
mysql_close($verbindung);
?>

dein anderes Script müsste dan so aussehen:

PHP:
<?PHP
// Verbindung zur mySQL - Datenbank herstellen
 
require('connect.inc.php');
if ($verbindung = mysql_connect($server, $user, $pass))
 
//versuchen die DB Verbindung herzustellen
 
if (!mysql_query("USE $database;"))
{
echo "die datenbank konnte nicht ausgewählt werden: " . mysql_error();exit();
}
 
//das feld schluessel in lexikon auslesen
 
$anfrage = "select schluessel from lexikon;";
if (!($ergebnis = mysql_query($anfrage)))
{echo "die anfrage ist fehlgeschlagen<p> " . mysql_error();
exit();
}
 
//den kopf der html tabelle generieren
 
echo "<table border=\"0\">";
echo "<tr>";
echo "<td><b>Inhalt des Lexikons</b><td>";
echo "</tr>";
//eintraege aus schluessel holen
while ($schluessel = mysql_fetch_object($ergebnis))
{
echo "<tr>";
echo "<td><a href='read.php?schluessel=$schluessel->schluessel'>$schluessel->schluessel</a></td>";
echo "</tr>";
}
echo "</table>";
mysql_close($verbindung);
?>

Weiß leider nicht ob es funktioniert (habs also nicht getestet).
 
Zuletzt bearbeitet:
Hi

ich würde mir alle Schlüssel über eine neue Connection laden

SELECT distinct left(schluessel,1) as neu FROM lexikon order by schuessel

und dann fürs Auslesen einfach in der While-Schleife die Links setzen

<a href="seite.php?schluessel=<? echo $row[0]?>"><? echo $row[0];?></a>

Das 2. Selectstatment filterst Du auf Anforderung

PHP:
if(isset($_GET['schluessel'])) {
$schluessel = $_GET['schluessel'];
$sql = "SELECT erklaerung, schluessel FROM lexikon WHERE schluessel like '$schluessel%'";
[...]
}
[...]

würde Dir z.b. alle Datensätze auflisten, die mit einem selectierten Anfangsbuchstaben des Feldes schluessel übereinstimmen.
 
Zuletzt bearbeitet:
Danke für Eure Hilfe,

@forsterm, ich habe Dein script mal ausprobiert, also die "schluessel" werden aus der Datenbank selectiert und jetzt als links dargestellt, aber sie verweisen ins leere.
Wie bekomme ich denn jetzt eine Verbindung vom link zum Feld "erklaerung"?

@lucie, Deinen Vorschlag hab ich noch nicht ausprobiert, dazu muss ich erstmal sehen was Du vorschlägst, also ich meine damit verstehen, hat sonst wenig zweck einfach das script zu kopieren ohne das ich überhaupt weiss was da passiert. Du weisst ja, ich lerne noch ;).

gruss
rolf
 
rolli123 hat gesagt.:
@forsterm, ich habe Dein script mal ausprobiert, also die "schluessel" werden aus der Datenbank selectiert und jetzt als links dargestellt, aber sie verweisen ins leere.
Wie bekomme ich denn jetzt eine Verbindung vom link zum Feld "erklaerung"?

Hallo,

deinen Links sehen ja z.B. so aus read.php?schluessel=Pyramide.

Das bedeute, dass der schluessel per GET an die Datei read.php übergeben wird.

Du musst also nur nocht eine Datei namens read.php mit folgendem Code erstellen und dann müsste es funktionieren.

PHP:
<?PHP
// Verbindung zur mySQL - Datenbank herstellen
 
require('connect.inc.php');
if ($verbindung = mysql_connect($server, $user, $pass))
 
//versuchen die DB Verbindung herzustellen
 
if (!mysql_query("USE $database;"))
{
echo "die datenbank konnte nicht ausgewählt werden: " . mysql_error();exit();
}
 
//das feld schluessel in lexikon auslesen
 
$anfrage = "select erklaerung from lexikon WHERE schluessel = $schluessel";
if (!($ergebnis = mysql_query($anfrage)))
{echo "die anfrage ist fehlgeschlagen<p> " . mysql_error();
exit();
}
//eintraege aus schluessel holen
while ($erklaerung = mysql_fetch_object($ergebnis))
{
echo "<tr>";
echo "<td>$erklaerung->erklaerung</td>";
echo "</tr>";
}
echo "</table>";
mysql_close($verbindung);
?>
 
Zuletzt bearbeitet:
Zurück