Instant-Formular Website

print „var worte = req.responseText.split(“ „);\n“;
Ich hoffe das ist jetzt nicht komplett falsch. :wink:

jou,

wenn Du mit dem PerlScript unbedingt Javascript ausgeben willst … welches dann auch verwendet wird:


var headObj = document.getElementsByTagName(„head“)[0];
var neuScript = document.createElement(‚script‘);
neuScript.type = ‚text/javascript‘;
neuScript.src = ‚URL_des_PerlScripts‘;
headObj.appendChild(neuScript);

dabei musst Du var worte dann so ausgeben lassen, wie es in meinen Beispiel (var worte= new Array … ) steht.

Ach … und dabei sollte Perl auch vorab ein:

Content-type: application/x-javascript

schicken

ne … ne … ne

die Datenbankabfrage auf Server mit perlscript

das perlscript aufrufen über den Client durch den Request

der Response des perlscripts wird mittels javascript auf Client in dynamische Inhalte umgesetzt

Kann ich das ganze auch mit php machen?
Ist es einfacher die PHP Variable an Javascript zu übergeben.
Ich habe jetzt ein PHP Programm, in dem ich mit PHP die Datenbank auslesen und mit Javascript den Rest mache. Jetzt muss ich natürlich noch den Übergang machen von PHP zu Javascript.

Mein Php-Script:
while ($words = mysql_fetch_array($words_query))
{
$word = $word." ".$words[0];

}

$word1 = explode(" ",$word);

Javascript:
var worte= new Array("<?php echo $word1[1];?>");

In $word1[1] steckt jetzt natürlich nur ein Wort, wie bringe ich jetzt das ganze Array in die Variable worte?

es ist ganz egal, woher Du diese Wortliste beziehst.

So wie es sich anhört, willst Du wohl kein Ajax verwenden, sondern die ganze Seite immer wieder neu laden.
Dann würde ich zumindest in einem hiddenfeld die drei Buchstaben für die aktuelle Wortliste mitschicken, um prüfen zu können, ob sich die geändert haben, damit der submit nicht bei jeder Änderung erfolgt. Und noch eine Unterscheidung, ob es ein wortlist-submit oder ein user-submit ist.

Außerdem, falls vorhanden, sind ja auch die values eventueller anderer Felder wieder mit in die neue Seite zu übernehmen.

Also gar nicht mal so wenig Aufwand - gegenüber einer Ajax-Lösung … vom Traffic und Ladezeit mal abgesehen

Ja, daran habe ich auch schon gedacht, aber ich habe mir gedacht, ich mache es erstmal so. Das funktioniert ja aber leider noch nicht.

Ich habe es jetzt mit PHP und Javascript hinbekommen.
Danke noch mal für eure Hilfe.
Hier ist mein Script, falls ihr euch die Umsetzung einmal angucken wollt.

<?php // Hier die Datenbankverbindung noch einfügen
$sql = "select words from instant"; $words\_query = mysql\_query($sql) or die("Anfrage nicht erfolgreich"); while ($words = mysql\_fetch\_array($words\_query)) { $word = $word.",".$words[0]; } $size = sizeof($word); ?\> input,span,body{font-size:110%} p,div{padding:0px;margin:0px;} input{width:204px;} ul.instant{list-style-type:none;padding:0px;margin:0px; width:200px;border:2px outset lightgrey;border-top:0px; padding-bottom:10px; display:none; } li{list-style-type:none;} var worte= new Array(); var size = \<?php echo $size;?\>; temp = "\<?php echo $word;?\>"; var worte = temp.split(",") var inEl='\
  • '; function check(was){ if(was.length \> 2) { var elem=document.getElementById('instant'); elem.innerHTML=""; var pattern = "^"+was; var re = new RegExp(pattern, "i"); for (var i=0; i \< worte.length; i++) { if(re.test(worte[i])) { elem.innerHTML+= inEl + worte[i] + "\"; elem.style.display="block"; } } } } function change (das){ document.getElementById('in').value=das document.getElementById('instant').innerHTML="" document.getElementById('instant').style.display="none" }
  • $word='';
    

    in der Schleife

    $word.='"'.$words[0].'",';
    

    abschließen

    $word.='""';
    

    und mit echo ausgeben

    var worte= new Array(<?php echo $word;?>);
    

    da ist zwar das letzte element leer,
    aber anderes fällt mir nicht ein

    Moin!

    HTML ist nicht das Problem.

    Ich hab die Erfahrung gemacht, dass bei den meisten Webmastern tatsächlich HTML das eigentliche Problem ist. Von Semantik haben erschreckend wenig jemals etwas gehört und viele denken nach wie vor, HTML sei zur Gestaltung da. Teilweise sind das sogar Firmen, die Websites für Geld anbieten, die - wie man in deren Quellcode sofort sehen kann - gar nicht wissen, was HTML ist. :frowning:

    Das Problem mit dem andauernd Abschicken habe ich mir auch
    schon gedacht, aber mir war keine andere Möglichkeit bekannt.

    Ajax :smile: Das sogenannte „Web 2.0“. Eine schöne Sache. Wenn man immer im Hinterkopf behält, dass es Leute gibt, die kein JavaScript aktiviert haben (dürfen) und die Site trotzdem benutzen wollen.

    Liebe Grüße,
    -Efchen

    Moin!

    ich bin gerade etwas überfragt, wie gesagt Javascript ist
    nicht mein Ding.

    Dann schau Dir das doch parallel einfach mal an!
    http://de.selfhtml.org/javascript/index.htm

    Liebe Grüße,
    -Efchen

    Ich habe da noch mal eine Frage:
    Ich habe ja jetzt eine Instant-Funktion und habe aber das Problem, dass ich diese Instant-Funktion in einem Frame ganz oben auf meiner Seite haben möchte. Leider weiß ich nicht, wie ich die Vorschläge, die die Instant-Funktion mir liefert über den Frame-Rand anzeigen lassen kann.
    Bei Fragen zum Problem bitte einfach bei mir melden.
    Danke schon mal im Voraus.

    Moin!

    Leider weiß ich nicht, wie
    ich die Vorschläge, die die Instant-Funktion mir liefert über
    den Frame-Rand anzeigen lassen kann.

    Das geht gar nicht.
    Frames sind wie mehrere Browser-Fenster (Viewports). Über die kann man nunmal nicht hinaus.

    Verzichte auf Frames. Vorteile bringen die Dir sowieso keine, die Du nicht auch anders umsetzen könntest.

    Liebe Grüße,
    -Efchen

    Okay, schade. Hatte ich fast schon befürchtet.
    Das Problem ist, dass ich jetzt für die Suchfunktion PHP und Javascript benutzt habe und den Rest mit Perl programmiert habe. Es müsste doch aber mit der include-Funktion von PHP funktionieren oder?

    Also, wenn ich jetzt auf Frames verzichte, was bei meinem Problem wohl notwendig ist, wie binde ich dann am besten in mein Perl-Script die PHP-Datei ein?

    Das Problem ist, dass ich jetzt für die Suchfunktion PHP und
    Javascript benutzt habe und den Rest mit Perl programmiert
    habe. Es müsste doch aber mit der include-Funktion von PHP
    funktionieren oder?

    ein Rat:
    lass die Mischerei!

    include lieber Ajax (den Response durch PHP)
    Das ist eine saubere Lösung, um dynamisch Teil-Inhalte der Seite auszutauschen

    Aber wie bringe ich dann mein Hauptprogramm, was ich mit Perl geschrieben habe unter?

    Aber wie bringe ich dann mein Hauptprogramm, was ich mit Perl
    geschrieben habe unter?

    andersherum:
    wie bringe ich die Instant-Funktion incl. Ajax ins Hauptprogramm!!
    Das Hauptprogramm gibt doch wohl HTML aus und darin kannst Du die Instant-Funktion einbinden!!

    Kann man es irgendwie so programmieren, dass gleich nach dem Begriff gesucht wird, wenn man auf ein Begriff in der Liste klickt?

    Kann man es irgendwie so programmieren, dass gleich nach dem
    Begriff gesucht wird, wenn man auf ein Begriff in der Liste
    klickt?

    klar…

    entweder als Link mit Querystring in der Liste
    oder
    ins Feld eintragen und dann form submitten

    [Submit](javascript:%20submitform())
    Das muss doch jetzt irgendwie in diese Zeile hier:
    elem.innerHTML+= inEl + worte[i] + „“;
    oder?
    dann habe ich die Funktion
    function submitform()
    {
    document.forms[„myform“].submit();
    }
    aber wo muss ich jetzt die Zeile hierhin?

    Ich hoffe ich bin nicht ganz falsch :wink:

    Danke schon mal für deine Hilfe