Datenbankabfrage für Lexikon strukturieren

mysql_close schließt die Datenbankverbindung die du in der Variablen in der Klammer (also in deinem Fall $verbindung) aufgenommen hast.
Ich nehme an, dass Du nach den ganzen Code-Veränderungen nun nicht mehr in der Variablen $verbindung die Verbindung aufnimmst, sondern in einer anderen. Such doch einfach mal "mysql_connect(wert1...)" und schau, welcher Variablen das zugeordnet ist. Diese Variable trägst du dann in mysql_close($neuevariable) ein.
 
Moritz123 hat gesagt.:
mysql_close schließt die Datenbankverbindung die du in der Variablen in der Klammer (also in deinem Fall $verbindung) aufgenommen hast.
Ich nehme an, dass Du nach den ganzen Code-Veränderungen nun nicht mehr in der Variablen $verbindung die Verbindung aufnimmst, sondern in einer anderen. Such doch einfach mal "mysql_connect(wert1...)" und schau, welcher Variablen das zugeordnet ist. Diese Variable trägst du dann in mysql_close($neuevariable) ein.


Hallo,

ich hab mal die neuen connect-Daten mit meinen "alten" überschrieben. Gleichzeitig auch wieder die Verbindung über require hergestellt und jetzt bekomm ich auch keine Fehlermeldung mehr. Die Abfrage funktioniert weiterhin einwandfrei.

Einen Tip/Denkanstoss könnte ich von Dir (Moritz) noch gebrauchen.

Wie würdest Du die Tabelle aufbauen, so wie es jetzt aussieht, wolltest du es ja doch wohl nicht haben?

gruss
aus bremen
rolf
 
Doch so hatte ich mir das schon vorgestellt.
Was du nun noch machen könntest ist, die Tabelle vom Layout etwas zu ändern.
Ungefähr so:

Code:
A
   Abrakadabra
   Amsel
   A-Hörnchen

B
   Burgunder
   B-Hörnchen

C
   Cb-Funk


usw.

Das kannst du erreichen, indem Du zwei Abfragen ineinander schachtelst.
In der Ersten fragst Du mit Hilfe von DISTINCT den ersten Datensatz des jeweiligen Buchstabens ab, speicherst Ihn in einer Variable und gibst ihn aus. Darunter folgt dann die zweite Abfrage, in der Du alle Datensätze ausgibst, die mit der oben definierten Variable beginnen. Das sollte in der Theorie alles sein :)
 
Moritz123 hat gesagt.:
Das kannst du erreichen, indem Du zwei Abfragen ineinander schachtelst.
In der Ersten fragst Du mit Hilfe von DISTINCT den ersten Datensatz des jeweiligen Buchstabens ab, speicherst Ihn in einer Variable und gibst ihn aus. Darunter folgt dann die zweite Abfrage, in der Du alle Datensätze ausgibst, die mit der oben definierten Variable beginnen. Das sollte in der Theorie alles sein :)

Hallo,

ich glaub so schnell werde ich keine Langeweile haben. :rolleyes:

Ich habe ja jetzt 2 Abfragen, die erste die mir die Schluesselwörter in die Website holt und die zweite, die read.php, die dazu die Begriffe holt wenn der Link angeklickt wird.

Welche muss denn durch deine Abfrage ersetzt werden, oder muss deine Abfrage zusätzlich eingebaut werden?

gruss
rolf

ps. Nicht das Ihr meint, ich mach hier nur copy und paste, ich gehe Eure scripts anhand meiner schlauen Bücher und des Forums hier durch. Möchte ja schliesslich etwas lernen und auch verstehen.
 
Hallo!

bitte nicht Abfragen mit php-Dateien verwechseln! Du kannst zB hundert Abfragen an die Datenbank innerhalb einer php-Datei durchführen.
In deinem konkreten Fall heißt das, dass du die erste Abfrage(also da, wo die Links generiert werden) in deiner "kleines_lexikon.php" in eine weitere einbetten musst.
 
Moritz123 hat gesagt.:
Hallo!

bitte nicht Abfragen mit php-Dateien verwechseln! Du kannst zB hundert Abfragen an die Datenbank innerhalb einer php-Datei durchführen.
In deinem konkreten Fall heißt das, dass du die erste Abfrage(also da, wo die Links generiert werden) in deiner "kleines_lexikon.php" in eine weitere einbetten musst.

Hallo,

das ist mir ehrlich gesagt jetzt zuviel, hast Du vielleicht ein klitzekleines Beispiel? Ich weiss ja nun was "distinct" bewirkt, darüber konnte ich vieles finden, aber wie ich das umsetzten soll, versteh ich noch nicht.

gruss
aus bremen
rolf
 
PHP:
$abfrage = "SELECT DISTINCT left(schluessel,1) AS bs FROM lexikon";
$ausgabe = mysql_query($abfrage);
$num = mysql_num_rows($ausgabe);
if ($num > 0) {while ($row = mysql_fetch_object($ausgabe)){

echo $row->bs . "<br>"; // Überschrifts-Buchstabe

// Schlüssellinks generieren v
$anfrage = "SELECT schluessel FROM lexikon WHERE schlüssel LIKE "$row->bs%";
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>";
}}

ist jetzt nicht getestet und dient nur dazu einen Überblick zu verschaffen. Bin mir auch nicht sicher, ob die Syntax der ersten Abfrage richtig ist, hab sowas noch nie gemacht....
 
Zuletzt bearbeitet:
Hallo Moritz (und natürlich alle anderen auch),

vielen Dank für Deine Mühe, aber auch nach langen probieren läuft das Script nicht.

Ist auch nicht so tragisch, ich werde es jetzt folgendermassen machen bzw. habs schon gemacht:

In der Seite "kleines_lexikon" hab ich einen Link zu einer neuen Seite eingebaut, die nennt sich begriffe. In dieser Seite sind dann alle vorhanden Begriffe aufgelistet und auch direkt ausführbar.

Ich habe jetzt noch 2 Fragen, die bestimmt nicht so dramatisch sind.

1. wenn ich ohne eine Eingabe zu machen in dem Suchformular einfach auf Anfrage abschicken klicke, listet er mit ALLE einträge auf. Wie kann ich das verhindern? Ausserdem sollte eine Meldung kommen, wenn kein Eintrag zum Suchwort vorhanden ist.
zu sehen hier: http://rolfbeckers.de/kleines_lexikon.php

2. wie bekomme ich die Begriffe alphabetisch sortiert?
Ich hab gelesen, ORDER BY asc wäre der Befehl, aber in welcher Abfrage und an welcher Stelle muss ich den einfügen, in der begriffe.php oder read.php?

Nochmals vielen Dank für Deine/Eure Mühe, wenn ich mich mehr in php/mysql eingelesen habe kann ich das ja nochmal in Angriff nehmen, aber ich denke so geht es für den Anfang auch.

gruss
aus bremen
rolf
 
rolli123 hat gesagt.:
2. wie bekomme ich die Begriffe alphabetisch sortiert?
Ich hab gelesen, ORDER BY asc wäre der Befehl, aber in welcher Abfrage und an welcher Stelle muss ich den einfügen, in der begriffe.php oder read.php?

Hallo,

das musst du in der begriffe.php einbauen.

Das muss ungefähr so ausschauen:

PHP:
SELECT * FROM tabelle ORDER BY asc
 
Zuletzt bearbeitet:
1. wenn ich ohne eine Eingabe zu machen in dem Suchformular einfach auf Anfrage abschicken klicke, listet er mit ALLE einträge auf. Wie kann ich das verhindern? Ausserdem sollte eine Meldung kommen, wenn kein Eintrag zum Suchwort vorhanden ist.

Dazu kannst du eine if-Abfrage in deine 'abfrage.php' einbauen, die prüft, ob im Formular-Feld aus 'kleines_lexikon.php' etwas eigegeben wurde:

PHP:
if($_POST['abfrage'] != "")
{
   // hier kommt der Code hin, der den Eintrag aus der Datenbank holt
   // und diesen dann darstellt
}
else
{
   // Hier kommt die Fehlermeldung mit echo "" hin.
   // Idealerweise sollte ein "zurück"-Link nicht fehlen.
}

$_POST['abfrage'] musst du ggf. noch anpssen, da ich den Namen des Formularfeldes nicht mehr wusste.
 
Zurück