Flash Suchformular Eingabe an PHP weitergeben


gankli

Mitglied
Hallo,

habe momentan ein PHP-Suchscript. Habe auf einer HTML Seite ein Formular mit Eingabe und Absenden erstellt. Diese Funktion möchte ich nun in Flash einbauen. Das heißt, ich möchte in Flash ein Suchfeld mit Go button programieren.

Über HTML funktioniert dies so
HTML:
<p><form method=post action="/content/search/search.php">
<input type="text" name="search_exp" value="Begriff eingeben" class="formulareingabe" size="17">
<input type="submit" value="Suche starten" name="submit" class="formularsenden">
<input type="hidden" name="exp_full" value="no" checked>
<input type="hidden" name="exp_capital" value="no" checked>
</form></p>

Wie gebe ich jetzt in Flash eine Suchanfrage an die search.php weiter?
Wie müssen das Eingabefeld und der Absenden Button von Flash aussehen und mit einander kombiniert werden? Welche Werte aus der bisherigen HTML-Suche (siehe oben) muss ich im Flash-Such-Formular integrieren und wie?

Vielen Dank
gankli
 

Tobias Menzel

Erfahrenes Mitglied
Hi,

such mal im Forum nach "LoadVars". Schau auch mal in die ersten Beiträge im Sammelthread - dort wird ebenfalls kurz beschrieben, wie Du Daten (Variablen) per POST an ein PHP-Script schickst.

Bei Problemen damit: einfach noch einmal melden.

Gruß
.
 

gankli

Mitglied
Hallo,

leider komme ich irgendwie nicht weiter. Es soll doch einfach nur ein Suchbegriff von einem Textfeld in Flash über den angehängten Go Flash Button zu dem PHP Script search.php übertragen werden. Dabei müssen die drei Variablen aus dem PHP Script integriert werden, welche folgendermaßen heißen: search_exp, exp_full, exp_capital

In der PHP Datei sieht es dann folgendermaßen aus:
PHP:
# Suchbegriff(e) übernehmen und umwandeln
$search_exp = strip_tags($HTTP_POST_VARS["search_exp"]);
$exp_capital = strip_tags($HTTP_POST_VARS["exp_capital"]);
$exp_full = strip_tags($HTTP_POST_VARS["exp_full"]);

Wo integriere ich diese frei Variablen. Im Textfeld von FLash, im Go-Button von Flash?
Ich habe keine Ahnung. Bitte dringend um Hilfe. Im der HTML Suche (s.o.) sieht das so einach aus. Und es funktioniert auch.

Danke und Gruß
gankli
 

Tobias Menzel

Erfahrenes Mitglied
Na gut,

Du brauchst drei Eingabefelder (Textfelder). Gib diesen die Instanznamen "tf_search", "tf_capital" und "tf_full".

Erstelle nun einen Button (nimm möglichst einen MovieClip, keine Schaltfläche), markiere ihn und setze folgendes Script darauf:
PHP:
on(release) {
    var lv = new LoadVars();
    lv.search_exp = _parent.tf_search.text;
    lv.exp_capital = _parent.tf_capital.text;
    lv.exp_full = _parent.tf_full,text;
    lv.send("suche.php", "POST");
}

Gruß
.
 
Zuletzt bearbeitet:

gankli

Mitglied
Hallo,

habe es genauso gemacht. Es wird dann auch die Seite search.php aufgerufen, leider mit diesem Ergebnis "undefined". In der HTML Version sind die beiden Werte
HTML:
<input type="hidden" name="exp_full" value="no" checked>
<input type="hidden" name="exp_capital" value="no" checked>
mit hidden als versteckt angegeben. Vielleicht kannst Du da bitte nochmals schauen, ob von da noch etwas in Flash integriert werden muss.

Hier ist noch mal die komplette search.php
PHP:
<?php
###########################################################
#
#   (c) PlaNet Concept e.K., Lars Odermath, 2003
#
###########################################################
#
# :: planetSearch iX :: Version vom 05.10.2003
#
# COPYRIGHT NOTICE
# Copyright 2003 PlaNet Concept e.K.
# All Rights Reserved.
# EMail: kontakt@planetc.de
# URL  : http://www.planetc.de
#
# :: planetSearch iX :: darf für private Homepages kostenlos benutzt und geändert
# werden, solange SÄMTLICHE Copyright-Verweise und die restlichen Kommentare erhalten
# bleiben.
#
# Mit dem Einsatz dieses Skripts akzeptieren Sie, daß PlaNet Concept e.K.,
# Lars Odermath, von jeglicher Haftung und Gewährleistung hinsichtlich des
# Einsatzes befreit ist.
#
# Der Verkauf dieses Skripts, auch in modifizierter Form, ist ohne vorherige
# Absprache ausdrücklich untersagt! (Mit anderen Worten: Bitte fragen Sie uns,
# bevor Sie versuchen, mit unserem Script Geld zu verdienen.)
#
# Um dieses Skript über das Internet oder ein anderes Medium
# weiterzuverbreiten, benötigen Sie vorher unsere Erlaubnis. In jeden Fall
# müssen SÄMTLICHE Copyright-Verweise und die restlichen Kommentare erhalten
# bleiben.
#
# Sollten Sie den Copyright-Verweis in der Ausgabe des Scriptes nicht anzeigen
# oder das Script auf kommerziellen Seiten einsetzen wollen, können Sie dies gegen die
# Entrichtung einer Lizenz-Gebühr in Höhe von € 49,00 zzgl. der gesetzl. MWSt. tun.
# Senden Sie uns dazu bitte eine eMail und geben u.a. die URL für das Script an.
# Sie erhalten dann umgehend eine Rechnung von uns.
#
# BITTE LESEN UND BEACHTEN SIE UNSERE NUTZUNGSBEDINGUNGEN FÜR DIE SCRIPTE!
# Die Nutzungsbedingungen finden Sie in der der beigefügten "nutzungsbedingungen.txt"
# und unter http://www.planetc.de/download/nutzungsbedingungen.html
#
###########################################################
###########################################################

#############################
include ("./admin/inc/config.inc.php");
#############################

@setlocale("LC_ALL", "da_DA");

# Suchbegriff(e) übernehmen und umwandeln
$search_exp = strip_tags($HTTP_POST_VARS["search_exp"]);
$exp_capital = strip_tags($HTTP_POST_VARS["exp_capital"]);
$exp_full = strip_tags($HTTP_POST_VARS["exp_full"]);

#############################
#Prüfen, ob ein Suchbegriff eingegeben wurde

if (!empty($search_exp) || !empty($HTTP_GET_VARS["search_exp"])) {

if (!empty($HTTP_GET_VARS["search_exp"])) {
    $search_exp = $HTTP_GET_VARS["search_exp"];
}

# Sonderzeichen entfernen
$frrepl = array("=\+=", "=\s+=");
$torepl = array("", " ");
$search_exp = preg_replace( $frrepl, $torepl, $search_exp);
$search_exp = preg_quote($search_exp);
$search_exp = trim($search_exp);

# Zeichenanzahl des Suchbgeriffes prüfen
if (strlen($search_exp) < $sexp_length) {
        // Template laden
        $tmpl = join('', file("./results/search-error.php"));
        $tmpl = preg_replace("=\[search_error_count\]=", $error_count, $tmpl);
        $tmpl = preg_replace("=\[search_error_empty\]=", "", $tmpl);
        echo $tmpl;
} else {

# Suchbegriffe in Array umwandeln und zählen
$search_arr = explode(" ",$search_exp);
$search_count = count($search_arr);

# "Dummy"-Array für Such-Array erzeugen
$arr = array();
$arr_all = array();

# Template laden
$tmpl = join('', file("./results/search-results.php"));

# Bereich der Trefferanzeige aus dem Template ziehen
preg_match_all("=\[SEARCH_START\](.*)\[SEARCH_STOP\]=siU", $tmpl, $between);

$search_pages = 0;

# Datenfile durchsuchen
$cont_part = do_search();


$search_pages = count($cont_part); // Anzahl der Trefferseiten

rsort($cont_part); // Array sortieren

$blaetter = seitenaufteilung($search_pages);

if (!isset($HTTP_GET_VARS['a'])) {
    $a = 0;
 }

// Arrays auslesen
for ($j=$a; $j!=$a+$nps; $j++) {

if (($j==$search_pages) || (!preg_match("=.*aNe.*=sU", "$blaetter"))) {
    break;
}

        list($anz_searchexp, $title, $descr, $new_path, $searchx) = $cont_part[$j];
        $content = preg_replace("=\[SEARCH_TITLE\]=", "$title", $between[1][0]);

        // Trefferseite nummerieren
        $search_nr = $j+1;
        $content = preg_replace("=\[SEARCH_NR\]=", "$search_nr", $content);
        $searchx = stripslashes($searchx);
        $content = preg_replace("=\[SEARCH_CONTENT\]=", "$searchx", $content);
        $content = preg_replace("=\[SEARCH_LINK\]=", "$from_dir"."$new_path", $content);
        $content = preg_replace("=\[SEARCH_URL\]=", "http://"."$HTTP_SERVER_VARS[SERVER_NAME]"."$from_dir"."$new_path", $content);
        $content = preg_replace("=\[SEARCH_DESC\]=", "$descr", $content);
        $content = preg_replace("=\[SEARCH_COUNT\]=", "$anz_searchexp", $content);
        $cont_x .= $content;
}

// Suchergebnis zusammenstellen und anzeigen
$tmpl = preg_replace("=\[SEARCH_START\](.*)\[SEARCH_STOP\]=siU", $cont_x, $tmpl);
$search_exp_all = urldecode($search_exp);
$search_exp_all = str_replace('\\', '', $search_exp_all);
$tmpl = preg_replace("=\[SEARCH_WORDS\]=", $search_exp_all, $tmpl);
$tmpl = preg_replace("=\[SEARCH_PAGES\]=", $search_pages, $tmpl);
$tmpl = preg_replace("=\[SHOW_PAGES\]=", $blaetter, $tmpl);

if (empty($cont_part)) {
    $tmpl = preg_replace("=\[NO_MATCH\]=", $no_match, $tmpl);
} else {
    $tmpl = preg_replace("=\[NO_MATCH\]=", "", $tmpl);
}

echo $tmpl;


#################################################
# Logdatei schreiben

foreach ($search_arr as $search_exp) {

$zeilen = file("./admin/_log/search_log.txt");
$anz_zeilen = sizeof($zeilen);

$x=0;

# Datenfile auslesen
for ($i=0; $i<$anz_zeilen; $i++) {

        list ($search_word, $search_num) = split("\\|", chop($zeilen[$i]));

        // wenn Suchbegriff gefunden wird
        if ($search_exp==$search_word) {
                $search_num++;
                $i-2;
                $x++;
        }
            $new_log .= "$search_word|$search_num\n";
}

// wenn der Suchbegriff nicht schon geloggt wurde
if ($x==0) {
        $search_num = "1";
    $new_log .= "$search_exp|$search_num\n";
}

$data = fopen("./admin/_log/search_log.txt","w+");
flock($data,1);
fwrite($data, $new_log);
flock($data,3);
fclose($data);
unset($new_log);
}
#################################################

}
}
#############################
# Wenn kein Suchbegriff eingegeben wurde
else {
        # Template laden
        $tmpl = join('', file("./results/search-error.php"));
        $tmpl = preg_replace("=\[search_error_count\]=", "", $tmpl);
        $tmpl = preg_replace("=\[search_error_empty\]=", $error_empty, $tmpl);
        echo $tmpl;
}
#############################


#############################
# Datenfile durchsuchen

function do_search() {

global $search_exp, $exp_capital, $exp_full, $search_arr, $search_count, $search_area, $cont_part, $search_pages, $arr_all, $maxz, $hit_area, $HTTP_GET_VARS;

// Datenfile öffnen und auslesen
$zeilen = file("./admin/data/search_data.php");
$anz_zeilen = sizeof($zeilen);

for ($i=0; $i<$anz_zeilen; $i++) {

        list ($path, $title, $description, $keywords, $content) = split("\\|\|\|", chop($zeilen[$i]));

        # zu durchsuchender Bereich
        if ($search_area==1) {        // Titel, Description, Keywords
                $a = "$title"."$description"."$keywords";
        }
        else {        // alles
                $a = "$content"."$title"."$description"."$keywords";
        }


        // Umlaute verarbeiten
        $a = ch_uml($a);

        $j=0;

        // Werte aus der URL auslesen
        if (empty($exp_full)) {
                $exp_full = $HTTP_GET_VARS['exp_full'];
        }
        if (empty($exp_capital)) {
                $exp_capital = $HTTP_GET_VARS['exp_capital'];
        }

        if ($exp_full=="yes") { // nur ganze Wörter
                $pref = "\b";
        }
        if ($exp_capital=="no") { // Groß- und Kleinschreibung nicht unterscheiden
                $capit = "i";
        }


        foreach ($search_arr as $search_word) {                // jeden Suchbegriff prüfen

        if (preg_match("=$pref$search_word$pref=$capit", $a)) {                // wenn Suchbegriff vorkommt...

                $anz_searchexp += preg_match_all("=$pref$search_word$pref=$capit"."sU", $a, $nullinger);

                $j++;                // i für jeden gefundenen Suchbegriff erhöhen

                if ($j==$search_count) {                // wenn ALLE Suchbegriffe gefunden wurden...


                // Bereich der Treffer ermitteln und Treffer hervorheben
                if ($hit_area==1) {

                        $swlen = strlen($search_word);
                        $strlen = strlen($a);
                        $len = floor(($maxz-$swlen)/2);


                        foreach ($search_arr as $search_word) {

                                if (preg_match("=$pref$search_word$pref=$capit", $hitx)) {
                                        $hitx = $hitx;
                                }

                                else {

                                        if (isset($hitx)) {
                                                $len = floor($len/2);
                                        }

                                        // Trefferbereich ermitteln
                                        preg_match("=\b.{0,$len}($pref$search_word$pref).{0,$len}\b=s$capit", $a, $hit);

                                        // Punkte hinzufügen, wenn mehr Zeichen als Max vorhanden sind
                                        if ($strlen>$swlen) { $hit[0] = " ...".$hit[0]."... "; }

                                        $hitx .= $hit[0];
                                }
                        }

                        foreach ($search_arr as $search_word) {
                                $hitx = preg_replace("=$pref($search_word)$pref=$capit", "<span class='hitword'>\\1</span>", $hitx);
                        }
                        } // hit_area Ende

                        $s_show = array();
                        $s_show[] = $anz_searchexp;
                        $s_show[] = $title;
                        $s_show[] = $description;
                        $s_show[] = $path;
                        $s_show[] = $hitx;
                        array_push($arr_all, $s_show);

                        unset($a, $anz_searchexp, $hitx);
                        }
                }
                }
        }

// Treffer-Array zurückgeben
 $cont_part = $arr_all;
 return ($cont_part);

} // end func


// Umlaute bearbeiten
function ch_uml($del_uml) {
$del_uml = preg_replace("=&auml;=", "ä", $del_uml); // Umlaute und ß
$del_uml = preg_replace("=&ouml;=", "ö", $del_uml);
$del_uml = preg_replace("=&uuml;=", "ü", $del_uml);
$del_uml = preg_replace("=&Auml;=", "Ä", $del_uml);
$del_uml = preg_replace("=&Ouml;=", "Ö", $del_uml);
$del_uml = preg_replace("=&Uuml;=", "Ü", $del_uml);
$del_uml = preg_replace("=&szlig;=", "ß", $del_uml);
return ($del_uml);
} // end func

#################################################

#################################################
# Anzeige der Blätterfunktion
function seitenaufteilung($anz_zeilen) {

global $nps, $a, $HTTP_SERVER_VARS, $HTTP_GET_VARS, $search_exp, $exp_full, $exp_capital;

$a = $HTTP_GET_VARS['a'];
$PHP_SELF = $HTTP_SERVER_VARS['PHP_SELF'];

$search_exp = urlencode($search_exp);

  $seiten=ceil($anz_zeilen / $nps);
  $foot = "<table width=600 border=0 cellspacing=0 cellpadding=0 align=center><tr><td>&nbsp;</td></tr><tr><td align=center>";

        if($a >= $nps) {
                $back=$a-$nps;
                $foot .= "<a href='$PHP_SELF?search_exp=$search_exp&exp_full=$exp_full&exp_capital=$exp_capital&a=$back' class='page_link'><<</a>&nbsp;&nbsp;";
        }

        if ($anz_zeilen<=$nps) {
            $foot .= "";
        } else {
            for ($i=1;$i<=$seiten;$i++) {
                $fwd=($i-1)*$nps;


        if ($a==$fwd) {
                $foot .= "<a href='$PHP_SELF?search_exp=$search_exp&exp_full=$exp_full&exp_capital=$exp_capital&a=$fwd' class='page_link'>-$i-</a> ";
        } else{
                $foot .= "<a href='$PHP_SELF?search_exp=$search_exp&exp_full=$exp_full&exp_capital=$exp_capital&a=$fwd' class='page_link'>$i</a> ";
        }

        }
}
         if(($a < $anz_zeilen-$nps) && ($nps<$anz_zeilen)) {
                $fwd=$a+$nps;
                $foot .= "&nbsp;<a href='$PHP_SELF?search_exp=$search_exp&exp_full=$exp_full&exp_capital=$exp_capital&a=$fwd' class='page_link'>>></a>";
        }

$foot .= "</td></tr><tr><td>&nbsp</td></tr><tr><td align=right><a href='http://www.planetc.de' target='_blank' class='copy'>PlaNet Search</a></td></tr></table><br>";

return("$foot");
}
#################################################
?>

Vielen Dank und Gruß
gankli
 

Tobias Menzel

Erfahrenes Mitglied
Poste lieber mal die .fla

Ich habe den Verdacht, dass Du vielleicht die Textfelder falsch ansprichst oder die Daten irgendwie nicht übergibst.

Ob Du die richtigen Pfade angegeben hast, kannst Du prima mit Trace-Aktionen testen:
PHP:
 on(release) {
    var lv = new LoadVars();
    trace(tf_search.text + ", " + tf_capital.text + ", " + tf_full.text);
    lv.search_exp = tf_search.text;
    lv.exp_capital = tf_capital.text;
    lv.exp_full = tf_full,text;
}
Wenn Du in einige der Textfelder nichts eingibst, haben sie den Wert "undefined". Dann würde ich die Zuweisung zum LoadVars-Objekt sicherheitshalber so machen:
PHP:
if (tf_search.text.length > 0) lv.search_exp = tf_search.text;
// usw.

Gruß
.
 
Zuletzt bearbeitet:

gankli

Mitglied
Hallo,

jetzt bekomme ich flash-fehlermeldungen wegen der IF Funktion.
Ich gebe dir jezt mal die .fla mit. Bin langsam am verzweifeln.

Danke und Gruß
RG
 

Anhänge

  • navigation_bottom.zip
    7,3 KB · Aufrufe: 16

Tobias Menzel

Erfahrenes Mitglied
Ups, da ist mir eine Klammer zu viel rausgerutscht. ;)

Probiers mal so:
PHP:
on(release) { 
    var lv = new LoadVars();
    if (_parent.tf_search.text.length > 0) lv.search_exp = _parent.tf_search.text;
	if (_parent.tf_capital.text.length > 0) lv.exp_capital = _parent.tf_capital.text;
	if (_parent.tf_full.text.length > 0) lv.exp_full = _parent.tf_full.text;
	// Nur zum Testen: /////
	for (var i in lv) {
		trace(i) + ": " + lv[i];
	}
	////////////////////////
	lv.send("http://www.computer-reich.de/content/search/search.php", "POST");
}
Wenn Dein Button ein MovieClip ist, muss überall ein _parent vor die Textfeldbezeichner. Ändere ausserdem den Instanznamen des ersten Textfelds in "tf_search" (oder gib auf dem Button "tf_search_ext.text" an).

Gruß
.
 

gankli

Mitglied
Hallo,

diesmal keine Fehlermeldung von Flash. Nur das php script search.php gibt zurück, das kein Suchbegriff angegeben wurde. Was nun?

Danke und Gruß
gankli
 

Tobias Menzel

Erfahrenes Mitglied
... und was wird duch die trace-Aktion ausgegeben? Wenn Du überall etwas eingegeben hast, müsste dort in etwa folgendes stehen:
Code:
search_exp: blabla
exp_capital: blublub
exp_full: foobar
Bei mir funktioniert das wie gesagt; Dein Suchscript kann ich nicht testen, weil ich von hier aus keinen Zugriff darauf habe - ein kleines Testscript:
PHP:
echo $_POST["search_exp"]."<br>";
echo $_POST["exp_capital"]."<br>";
echo $_POST["exp_full"]."<br>";
gibt bei mir allerdings die korrekten Werte aus.

Gruß
.
 

gankli

Mitglied
Hallo,

in dem PHP Script ist noch folgender Eintrag:
PHP:
#Prüfen, ob ein Suchbegriff eingegeben wurde

if (!empty($search_exp) || !empty($HTTP_GET_VARS["search_exp"])) {

if (!empty($HTTP_GET_VARS["search_exp"])) {
    $search_exp = $HTTP_GET_VARS["search_exp"];

Ich glaube, dieser Eintrag prüft ob überhaupt etwas eingegeben wurde. Vielleicht man diesen mit in Flash einbauen. Was Du mit Trace meinst, verstehe ich gar nicht.

PS: Dort steht auch was von GET. Wir übergeben mit dem Flash aber auf dem POST Weg.

Danke und Gruß
gankli
 

Tobias Menzel

Erfahrenes Mitglied
Tja, das wäre dann aber eher ein Fall fürs PHP-Forum. In Deinem Script steht z.B. am Anfang:
PHP:
$search_exp = strip_tags($HTTP_POST_VARS["search_exp"]);
$exp_capital = strip_tags($HTTP_POST_VARS["exp_capital"]);
$exp_full = strip_tags($HTTP_POST_VARS["exp_full"]);
- das sind per POST übergebene Variablen. Du solltest das Script so anpassen, dass es die Variablen entweder via GET oder via POST erwartet und nicht beides.

Wende Dich dazu aber lieber ans PHP-Forum.

Gruß
.
 

Neue Beiträge

Forum-Statistiken

Themen
272.361
Beiträge
1.558.639
Mitglieder
187.834
Neuestes Mitglied
jordanx0206