Ronald Ahrend: Datenbankergebnis über PHP im Layer darstellen

Hi Leute,

also ich hab da ein Problem und komm einfach nicht weiter. Ich möchte das Ergebnis einer Datenbankanfrage (über PHP) nicht in einem eigenen Fenster, sondern in einem Layer darstellen. Außerdem soll nicht die gesamte Seite neu geladen, sondern nur der Inhalt des Layers verändert werden. Die Datenbankanfrage selbst soll vom Benutzer bestimmt werden können. Also zur Zeit habe ich folgenden Lösungsansatz:

<body>
<layer id="layer1" top=100 left=100 clip="600,400" width=600 heigth=400 bgcolor="yellow">
  Dieser Text wird ausgetauscht.
</layer>
</body>

<script language="JavaScript">
function changeLayerContent() {
  document.layer1.load("change.php3", 600);
  document.layer1.document.close();
}
</script>

<form name="form">
<input type=button name="testbutton" value="Change"
ONCLICK='changeLayerContent();return false;'>
</form>

Der Benutzer wählt den Button und danach wird der Inhalt der Datei change.php3 in den Layer geladen. Die Datei change.php3 enthält die Datenbankanfrage:

Inhalte von Tabelle1:<BR>
<?
  $Datenbankserver_Id=mysql_connect();
  $Datenbankauswahl_Id=mysql_select_db("Meine_DB");
  $Anweisungs_Id=mysql_query("select * from Tabelle1;");

for ($i=0; $i<mysql_num_rows($Anweisungs_Id); $i++) {
    $Eine_Zeile=mysql_fetch_row($Anweisungs_Id);
    for ($j=0; $j<mysql_num_fields($Anweisungs_Id); $j++) {
      echo $Eine_Zeile[$j];
    }
  }
  mysql_close();
?>

Soweit klappt das für NN. Nun soll aber der Benutzer selbst die Anfrage bestimmen können, bspw. durch die Eingabe der Anfrage in ein Textfeld. Anschließend müßte die Eingabe an die Datei change.php3 übergeben werden, aber wie? Das könnte man vielleicht wie folgt versuchen:

<FORM Name="Formular" action="change.php3" method="POST">
usw...

Bei absenden der Formularwerte wird jedoch immer eine neue HTML-Seite zurückgeliefert, die in einem Frame oder Window dargestellt werden will. Ich will das Ergebnis aber in dem Layer darstellen und nicht die gesamte Seite neu laden, sondern nur den Layerinhalt verändern.
Statt Antworten habe ich nur Fragen:

1. Gibt es da irgendeine Möglichkeit das Ergebnis der Anfrage abzugreifen, damit ich es mit JavaScript weiterverwenden kann?
2. Oder die Anfrage direkt in den Layer umleiten? (Geht doch nicht)
3. Falls das nicht mit PHP und JavaScript geht, ist das mit CGI-Scripts möglich?
4. Oder kann man da ein Java-Applet einsetzen, die Datenbankanfrage durchführen und das Ergebnis an JavaScript weiterleiten?

Also falls da jemand eine Idee hat oder sicher weiß, daß das gar nicht geht.
Ich bin für jede Antwort dankbar.

Viele Grüße
Ronald

  1. Hallo Ronald!

    Die Loesung liegt nahe, wenn Du mit JavaScript arbeiten willst.

    "Greife" mit JavaScript den Wert des Textfeldes ab und veraendere die Funktion changeLayerContent():

    document.layer1.load("change.php3?searchtext="+document.layer1.forms[0].text1.value, 600);
    im Script enthaelt die Variable $searchtext dann den Wert des Textfeldes

    und dann ein return false (damit form.submit nicht ausgefuehrt wird)
    in das form fuegst Du das Event onSubmit=(usw.) ein (siehe Formulareingaben pruefen in SelfHTML)

    So wird die Abfrage im Layer dargestellt.

    Achtung! nicht geprueft, nur Loesungsvorschlag

    Gruß
    Thomas