Datenbankabfrage über ein Textfeld

rolli123

Mitglied
Hallo,

mein erster Beitrag hier und erstmal ein " freundliches Hallo" an alle. Ich komme hier alleine nicht weiter und hoffe auf Hilfe von Euch.

Ich bastel gerade an einer Website in der ein "Lexikon" eingebaut sein soll. Dazu habe ich mir folgende Tabelle erstellt:

CREATE TABLE `lexikon` (
` schluessel` varchar(50) NOT NULL default'',
` erklaerung` text,
PRIMARY KEY (`schluessel`)
) Type=MyISAM

Daten für die Tabelle `lexikon` (Anmerkung, sind probedaten)


INSERT INTO `lexikon`VALUES ('Echnaton', 'Echnaton, der Sonnenkönig, bla bla
INSERT INTO `lexikon`VALUES ('Champollion', 'Er entzifferte die Hieroglyphen, bla bla

Weiterhin habe ich ein "Form" erstellt, das so aussieht:

<form action="http://www.rolfbeckers.de/abfrage.php" method =" post">
<input type="text" name="abfrage"><p>
<input type="submit">
<input type="reset">

</form>

Ich möchte jetzt, wenn ich in dem Suchfeld z.b. das Wort "Echnaton" eingebe, das, die Seite "abfrage.php" aufgerufen wird und die Erklärung darin ist.

Folgenden Tipp habe ich bekommen:

Als Zugriff für die Suche soll ich
select '$suchwort" as suche, schluessel, erklaerung from definition
where upper (schluessel) like upper ('%$suchwort%');
eingeben.
An den Stellen wo $suchwort steht, soll ich per String-Routinen in php meinen Suchstring einbauen.

Ich kapiers nicht, bekomme einfach keine Anzeige. Wenn ich das Suchwort eingebe, kommt wohl die Seite "abfrage.php", aber es wird nichts dargestellt.
Ich versuche es jetzt schon seit Tagen, hab wohl alle Beiträge die Datenbankabfragen behandeln gelesen, aber nichts ähnliches gefunden.

Könnt Ihr einem "alten" lernwilligen Menschen bitte helfen.

Tausend Dank im voraus
gruss
rolf
 
Hi

meines Wisses unterscheide like nicht zwischen Groß- und Kleinschreibung.

$suchwort = $_POST['abfrage'];

select schluessel, erklaerung from lexikon
where schluessel like '%$suchwort%';

Sollte eigentlich funktionieren. Wobei mich die Tabelle definition irritiert. Ich würde trotzdem noch eine id mitlaufen lassen (Format int auto_increment)

Welches Feld Du dann darstellen möchtest, dass kannst Du Dir aussuchen. Für $suchwort brauchst Du auch keine extra Feld in Satement anzulegen. Das Wort wird Dir auch zurückgeliefert, wenn Du Dir die globale Variable $_POST['abfrage'] oder $suchwort im Script aufrufst.
 
Zuletzt bearbeitet:
Danke für Deine schnelle Antwort,

aber es funktioniert nicht. Meine Abfrage sieht so aus:

<?php
/* 1: Verbindung aufnehmen */
mysql_connect("xxxx", "rolfbeckers.de", "xxx");
mysql_select_db("xxxx");
$suchwort = $_POST['abfrage'];
"select schluessel, erklaerung from lexikon
where schluessel like '%$suchwort%'";
{
echo
$suchwort["erklaerung"] . ", ";
}
?>

Da sind bestimmt Fehler drin von mir, ich weiss auch, das der weg den ich hier gehe eigentlich nicht der richtige ist, ich fang "mittendrin" an mit php/mysql, ohne die Grundlagen zu kennen. Ich bin aber dabei zu lernen, nur sitzt mir die Zeit im Nacken.

Tausend Dank im voraus an Euch
für Eure Hilfe.
 
Hi

das sind absolute Grundlagen. Du solltest Dir im Manual mal die mysql_funktionen anschauen.
http://de2.php.net/mysql_fetch_array
http://de2.php.net/manual/de/function.mysql-fetch-assoc.php
http://de2.php.net/manual/de/function.mysql-fetch-object.php

Weiterhin http://www.schattenbaum.net als Einsteigs-Anfängerseite.

Hier ein Bespielscriptcode. So könnte der einfache Aufbau sein.

PHP:
<?
// Verbindung zur mySQL - Datenbank herstellen
$server = "localhost"; $user = "root"; $pass = "";
$database = "db";
$verbindung = mysql_connect($server,$user,$pass)
	or die ("Keine Verbindung möglich");
	mysql_select_db($database, $verbindung)
	or die ("SQL-Fehler = ".mysql_error());

// Füllen der Variablen

$suchwort = $_POST['abfrage'];

  // Select-Statement zum Auslesen der Daten
  // mit anschließender Verarbeitung über mysql_query()
  $sql = "SELECT schluessel, erklaerung from lexikon 
  	  where schluessel like '%$suchwort%'" or die ("SQL-Fehler = ".mysql_error());
  $rs = mysql_query($sql);
  $row = mysql_fetch_array($rs);
  
  echo "Das Suchwort lautet: $suchwort<hr>";
  
  // Ausgabe der Daten in der Schleife

do {
  echo $row['erklaerung']."<br>";
   }
   while ($row=mysql_fetch_array($rs));
mysql_free_result($rs);
mysql_close($verbindung);
 ?>
 
Hallo Lucie,

vielen Dank für Deine ausführliche Hilfe. Ich werde das sofort nach Feierabend ausprobieren.

Wenn das so klappt, hast Du einen Wunsch frei :) .

Muss ich da ausser den Connect-Angaben noch etwas ergänzen?

nochmals herzlichen Dank
gruss aus Bremen
rolf

ps. Übrigens lerne ich fleissig php/mysql, die Video-Tutorials hier sind wirklich sehr gut.
Aber ich habe in den letzten Monaten schon html und css für meine Website gelernt, (Layout ohne Tabellen) und für mich alten Mann (bin ende 40) ist das nicht ganz so leicht.
Jetzt noch php/mysql, glaub mir, mein kleines Köpfchen qualmt schon.
 
rolli123 hat gesagt.:
Hallo Lucie,
Muss ich da ausser den Connect-Angaben noch etwas ergänzen?

Hi

ich habe das jetzt nicht getestet, aber müsste so stimmten. Connection und Datenbank müssen ergänzt werden. Wenn Fehler kommen, dann mal schauen, wie die heißen. Eine SQL-Fehlerabfrage wird ja über die ausgegeben.

ps. Übrigens lerne ich fleissig php/mysql, die Video-Tutorials hier sind wirklich sehr gut.
Aber ich habe in den letzten Monaten schon html und css für meine Website gelernt, (Layout ohne Tabellen) und für mich alten Mann (bin ende 40) ist das nicht ganz so leicht.
Jetzt noch php/mysql, glaub mir, mein kleines Köpfchen qualmt schon.

Jetzt bitte ich Dich aber. ;)
Hier gibts keine Sonderbehandlung für über 40-jährige :p :p :p
 
Hallo Lucie,

DANKE und nochmals DANKE,

das Lexikon ist hiermit eröffnet :)

Hat tatsächlich geklappt, nachdem ich beim erstenmal eine Fehlermeldung bekam.
Zugriff auf Datenbank verweigert. Das lag aber nur daran, das die db grossgeschrieben werden musste.

Du hast wie versprochen einen Wunsch frei. Was liest Du gerne? Ist mein Ernst, Du glaubst garnicht wieviele Stunden ich schon an diesem sch... script gesessen habe. Jetzt wo ich Deines mir genauer anschaue, muss ich sagen, bin ich von anderen Experten auf die falsche Spur geschickt worden. Aber egal.

Zum Abschluss noch eine Frage, wo bringe ich den Textformatierungen rein? z.b. Das die antwort zentriert und fett erscheint.

nochmals Danke, hier sitzt jetzt ein glücklicher und zufriedender Mensch, der nachher ruhig schlafen kann.

gruss
aus Bremen
rolf
 
Hi rolli

es gibt jetzt ganz unterschiedliche Möglichkeiten, die Formatierungen vorzunehmen

Manche nutzen Templates und trennen php-Code und html-Code
andere speichern sich die Werte in Variablen und setzen diese dann im hmtl-Code ein
andere schreiben den html-Code in php.
...

bsp. für eine Tabelle (ganz einfach)


PHP:
[...]
 $rs = mysql_query($sql);
   $row = mysql_fetch_array($rs);
?>
   
   <html>
   <head>
   <title>Lexikon</title>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   </head>
   
   <body>
   <table width="100%" border="0">
     <tr>
       <td style="background-color:#000066;padding:2px;color:white;">Das Suchwort lautet: <b><? echo $suchwort;?></b></td>
     </tr>  
<? do { ?>

<tr>
    <td style="border:1px solid #cccccc;padding-left:10px"><? echo $row['erklaerung'];?></td>
</tr>
<?}
    while ($row=mysql_fetch_array($rs));
 mysql_free_result($rs);
 mysql_close($verbindung);
?>
   </table>
   </body>
   </html>

Wichtig ist vor allen Dingen, dass man sich gut mit den Grundlagen beschäftigt.
 
Hallo Rolf!

ein schönes Lexikon hast Du da! Was ich allerdings schade finde ist die recht beschränkte Zugriffsfähigkeit nur über eine Suche. Ich fände es toll, wenn du eine nach Alphabet geordnete Liste wahlweise anzeigen würdest, in der alle Einträge verlinkt sind.
Das nur als kleine Anregung. :)
 
Moritz123 hat gesagt.:
Hallo Rolf!

ein schönes Lexikon hast Du da! Was ich allerdings schade finde ist die recht beschränkte Zugriffsfähigkeit nur über eine Suche. Ich fände es toll, wenn du eine nach Alphabet geordnete Liste wahlweise anzeigen würdest, in der alle Einträge verlinkt sind.
Das nur als kleine Anregung. :)


Hallo Moritz,

ich war gerade froh, das ich jetzt über Suche die Abfrage hinbekommen habe. Ohne die Hilfe von Lucie hätte ich da noch sehr lange drangesessen.
Kann man den beides miteinander verknüpfen? Also die Suche und die Liste auf einer Seite?

gruss
rolf
 
Zurück