Thema: Eigene Suchmaschine
-
16.08.07 02:52 #1
- Registriert seit
- Apr 2005
- Ort
- Bingen / Am Rhein
- Beiträge
- 97
Hallo,
und zwar würde ich gern folgendes coden.
Ein Eingabefeld, ein Suchbutton und diverse Checkboxen.
Die Checkboxen dienen zur Auswahls eines Betreibers (Google, eBay, wikipedia, youtube..)
In das Eingabefeld gebe ich nun das Suchwort ein, checke den Betreiber aus und lass mir das Ergebnis im gleichen bzw. neuen Fenster ausgeben.
Ich denke mal mit HTML allein ist das nicht geschafft?
Ich hab es in zwei Dateien realisiert. Zum Einen :
und zum AnderenHTML-Code:<form action="onlinesearch.php" method="post" enctype="multipart/form-data" target="_blank"> <input type="text" size="75" name="eingabe"><input type="submit" name="senden" value="Suchen"><br> <input type="radio" name="suchen" value="google" checked onFocus="search_select('google')"> <a href="http://www.google.de" target="_blank">Google.de</a> <input type="radio" name="suchen" value="yahoo" onFocus="search_select('yahoo')" > <a href="http://www.yahoo.de" target="_blank">Yahoo.de</a> <input type="radio" name="suchen" value="ebay" onFocus="search_select('ebay')" > <a href="http://partners.webmasterplan.com/click.asp?ref=282872&site=1382&type=b721&bnb=721&entnb=77" target="_blank">Ebay.de</a> <input type="radio" name="suchen" value="amazon" onFocus="search_select('amazon')" > <a href="http://www.amazon.de" target="_blank">Amazon.de</a> <input type="radio" name="suchen" value="download" onFocus="search_select('download')" > <a href="http://www.download.com" target="_blank">Download.com</a> <input type="radio" name="suchen" value="wikipedia" onFocus="search_select('wikipedia')" > <a href="http://www.wikipedia.de" target="_blank">Wikipedia.de</a> </form>
Nun mhhh..Da ich nicht so das Ass in Coden bin, sondern eher Anfänger...Und das ganze nicht so hervorragend klappt...Könnte mir da jemand behilflich sein? Ich hoffe, mein Problem ist ausreichend formuliert =)PHP-Code:<?php
echo "<p>" . $_POST["eingabe"] . "</p>\n";
echo "<p>" . $_POST["suchen"] . "</p>\n";
if (isset($_POST["suchen"]))
{
switch($_POST["suchen"]) {
case "google":
$url="http://www.google.de/custom?q=".$_POST["eingabe"]."&sa=Suchen&client=pub-2740664290624467&forid=1&ie=ISO-8859-1&oe=ISO-8859-1&cof=GALT%3A%239A2C06%3BGL%3A1%3BDIV%3A%2333FFFF%3BVLC%3AD03500%3BAH%3Acenter%3BBGC%3A99CCFF%3BLBGC%3ACCE5F9%3BALC%3A440066%3BLC%3A440066%3BT%3A336699%3BGFNT%3A223472%3BGIMP%3A223472%3BFORID%3A1%3B&hl=de";
break;
case "yahoo":
$url="http://de.search.yahoo.com/search?fr=fp-tab-web-t-1&ei=ISO-8859-1&p=".$_POST["eingabe"]."&meta=vl%3D";
break;
case "ebay":
$url="http://partners.webmasterplan.com/click.asp?site=1382&ref=282872&subid=&type=html&hnb=22&ent=474&prd=yes&partner=25910&loc=http://search.ebay.de/search/search.dll%3Fshortcut=1%26query=".$_POST["eingabe"]."";
break;
case "amazon":
$url="http://www.amazon.de/exec/obidos/external-search/302-6338632-8118418?tag=lcinfotech&index=blended&keyword=".$_POST["eingabe"]."&tag=lcinfotech&tag-id=tag-id";
break;
case "download":
$url="http://www.download.com/3120-20-0.html?qt=".$_POST["eingabe"]."&tg=dl-2001&search=+Go%2521+";
break;
case "wikipedia":
$url="http://de.wikipedia.org/wiki/Spezial:Search?search=".$_POST["eingabe"]."&fulltext=Suche";
break;
}
}
?>
Liebe Grüße
-
16.08.07 04:22 #2
So schlecht ist der Code nicht - Zumindest habe ich schon viel schlimmeres (auch von mir) gesehen - Aber ich empfehle dir, die Zeilen einzurücken.
Doch das dann in der "Korrektur" ein wenig später.
Was mir jetzt spontan an der HTML auffällt, ist das "onfocus"... Es schließt ein Switchen auf die Radiobox über Tab oder so ein (ticking sollte über onclick realisiert werden) - Also sobald überhaupt das Objekt aktiviert wird, wird das onfocus-Event aufgeführt. Das solltest du mit dir selbst klären... Nicht zuletzt, da ich die search_select Funktion in ihrer Struktur nicht kenne
(Warum hast du das Encode-Flag des Formulars auf multipart gesetzt? Ist in dem Fall nicht notwendig)
Zurück zum PHP-Code:
Du hast deine URL zwar gespeichert, aber was du damit machen möchtest, hast du nicht gesagt. Habe daher ein einfaches Forwarding vorgeschlagen. Ein Einsatz der APIs von zB Google & Amazon zur dynamischen Einbindung in die eigene Seite sind dann schon wieder andere Themen, die um einiges komplexer werden.PHP-Code:<?php
if (isset($_POST['eingabe'], $_POST['suchen']) {
switch ($_POST['suchen']) {
default:
case "google":
$url = "http://www.google.de/custom?q={$_POST['eingabe']}"
. "&sa=Suchen&client=pub-2740664290624467&forid=1&ie=ISO-8859-1"
. "&oe=ISO-8859-1&cof=GALT%3A%239A2C06%3BGL%3A1%3BDIV%3A%2333FF"
. "FF%3BVLC%3AD03500%3BAH%3Acenter%3BBGC%3A99CCFF%3BLBGC%3ACCE5"
. "F9%3BALC%3A440066%3BLC%3A440066%3BT%3A336699%3BGFNT%3A223472"
. "%3BGIMP%3A223472%3BFORID%3A1%3B&hl=de";
break;
case "yahoo":
$url = "http://de.search.yahoo.com/search?fr=fp-tab-web-t-1"
. "&ei=ISO-8859-1&p={$_POST['eingabe']}&meta=vl%3D";
break;
case "ebay":
$url = "http://partners.webmasterplan.com/click.asp?site=1382&ref=282872"
. "&subid=&type=html&hnb=22&ent=474&prd=yes&partner=25910"
. "&loc=http://search.ebay.de/search/search.dll%3Fshortcut=1%26"
. "query={$_POST['eingabe']}";
break;
case "amazon":
$url = "http://www.amazon.de/exec/obidos/external-search/"
. "302-6338632-8118418?tag=lcinfotech&index=blended"
. "&keyword={$_POST['eingabe']}&tag=lcinfotech&tag-id=tag-id";
break;
case "download":
$url = "http://www.download.com/3120-20-0.html?qt={$_POST['eingabe']}"
. "&tg=dl-2001&search=+Go%2521+";
break;
case "wikipedia":
$url = "http://de.wikipedia.org/wiki/Spezial:Search?"
. "search={$_POST['eingabe']}&fulltext=Suche";
break;
}
// Forward zu $url
header("Location: {$url}");
} else {
// Forward zur index.php (Beispiel)
header('Location: /index.php');
// Oder Fehler ausgeben oder Ähnliches
}
-
16.08.07 05:47 #3
- Registriert seit
- Apr 2005
- Ort
- Bingen / Am Rhein
- Beiträge
- 97
Danke, dieses Forward zu URL hat geklappt

-
Hallo !
Finde dieses "Projekt" ganz interessant und wollte es teilweise auch in meine Homepage integrieren, bisher hatte ich die API von Google eingesetzt, leider kann man hier nur immer die Suche über google realisieren und nicht explizit von anderen Seiten, so wie hier.
Ich habe selbst schon in mehreren ansetzen versucht so ein "Projekt" umzusetzen, bisher leider vergebens. Hatte auch schon den geposteten Code angepasst, aber auch dieser mag nicht so funktionieren wie er soll. Bekomme folgenden fehler:
Code :1
Cannot modify header information - headers already sent
er scheint den "else-part" nicht richtig zu interpretieren, code wurde wie folgt abgeändert:
PHP-Code:if (isset($_POST['eingabe'], $_POST['suchen'])) {
switch ($_POST['suchen']) {
dies schien mir in erster Linie als richtig, sicher bin ich mir jedoch nicht, bin auf diesen Gebiet auch eher Anfänger.
Die Suche über die Radio-Buttons, wirft mich bisher auch immer nur wieder auf die gleiche Seite zurück. Die Suche ist in der index.php eingebunden.
HTML-Code:<form action="index.php" method="post" target="_blank"> <input type="text" size="75" name="eingabe"><input type="submit" name="senden" value="Suchen"><br> <input type="radio" name="suchen" checked value="google"> <a href="http://www.google.de" target="_blank">Google.de</a> <input type="radio" name="suchen" value="ebay"> <a href="http://shop.ebay.de/items/?_nkw=" target="_blank">eBay.de</a>
Kann mir hier vielleicht jemand weiterhelfen ?
Grüße
-
16.07.09 09:31 #5
- Registriert seit
- Dec 2007
- Ort
- Bremen
- Beiträge
- 3.420
Hi,
schau Dir dazu bitte das oben angepinnte Thema Häufig auftretende Fehler an.
LGDa es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.
-
Hallo kuddeldaddeldu,
den fehler kenne ich, auch wodurch er passiert (gekürzte Version):
hier im letzten teil liegt der Hund begraben, aber selbst wenn ich den else part rausnehme wirft mich das script immer wieder auf die index.phpPHP-Code:<?php
if (isset($_POST['eingabe'], $_POST['suchen'])) {
switch ($_POST['suchen']) {
default:
case "ebay":
$url = "http://partners.webmasterplan.com/click.asp?site=1382&ref=282872"
. "&subid=&type=html&hnb=22&ent=474&prd=yes&partner=25910"
. "&loc=http://search.ebay.de/search/search.dll%3Fshortcut=1%26"
. "query={$_POST['eingabe']}";
break;
}
// Forward zu $url
header("Location: {$url}");
} else {
// Forward zur index.php (Beispiel)
header('Location: /index.php');
// Oder Fehler ausgeben oder Ähnliches
}
?>
-
16.07.09 12:47 #7
- Registriert seit
- Dec 2007
- Ort
- Bremen
- Beiträge
- 3.420
Hi,
na ja, wohin auch sonst. Die Action des Formulars ist ja index.php und der Redirect-Header kann wegen des Fehlers nicht gesendet werden. Du musst schauen, wo diese Ausgabe steckt, könnte auch nur ein BOM sein. Schau doch mal in den Browserquelltext. Wie sieht der aus?
LGDa es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.
-
erstmal danke das Du Dich meiner so annimmst.
Hier der HTML-Code der aufgerufenen Seite:
in Zeile 9 der index.php wird der "übliche Header" eingebunden (meta, title, etc.),HTML-Code:<form action="index.php" method="post" target="_blank"> <input type="text" size="75" name="eingabe"><input type="submit" name="senden" value="Suchen"><br> <input type="radio" name="suchen" checked value="google"> <a href="http://www.google.de" target="_blank">Google.de</a> <input type="radio" name="suchen" value="ebay"> <a href="http://partners.webmasterplan.com/click.asp?ref=282872&site=1382&type=b721&bnb=721&entnb=77" target="_blank">Ebay.de</a> </form> <br /> <b>Warning</b>: Cannot modify header information - headers already sent by (output started at /homepages/63/d48378566/htdocs/index.php:9) in <b>/homepages/63/d48378566/htdocs/index.php</b> on line <b>45</b><br />
also standard HTML-code. Der fehler liegt also im php-code.
Zeile 45-46:
Frage vorweg, ist die "isset" - Zeile denn korrekt, diese habe ich auch angepasst, hier spuckte der php-schnipsel den ersten fehler aus.PHP-Code:header('Location: /index.php');
// Oder Fehler ausgeben oder Ähnliches
beim <FORM> muss ich also die action anpassen ? Also muss ich noch eine "Abfang-Abfrage" in die index.php bringen ?
Gruß
Andy
-
16.07.09 13:55 #9
- Registriert seit
- Dec 2007
- Ort
- Bremen
- Beiträge
- 3.420
Hi,
nein, der Fehler ist, dass Du vorher schon Ausgaben machst. Auch Zeichen, die nicht in einem PHP-Block ausgegeben werden, gehören dazu.
Warum machst Du Deine Weiterleitung auch mitten im Script (sogar nach dem Formular), wenn schon längst ein Teil HTML an den Client rausgegangen ist? Gib doch das komplette HTML-Dokument einfach im else-Zweig aus, eine Weiterleitung auf index.php brauchst Du doch gar nicht (das ist die index.php).
Zitat von Häufig auftretende Fehler
LGDa es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.
-
okay, vielen Dank, dachte das verhält sich ähnlich wie (m)ein Kontaktformular, hier ist sowohl vorher, als auch nachher HTML-Code.
Ein Solcher Fehler ist dort noch nie aufgetreten, denke das hängt damit zusammen, dass durch "action" direkt ins Formular "verwiesen" wird:
PHP-Code:<? echo $_SERVER['PHP_SELF']; ?>
Aber zurück zu meinem "Problemcode"
Hab die Zeilen nun wie folgt angepasst:
PHP-Code:<?php
if (isset($_POST['eingabe'], $_POST['suchen'])) {
switch ($_POST['suchen']) {
default:
case "google":
$url = "http://www.google.de/custom?q={$_POST['eingabe']}"
. "&sa=Suchen&client=pub-2740664290624467&forid=1&ie=ISO-8859-1"
. "&oe=ISO-8859-1&cof=GALT%3A%239A2C06%3BGL%3A1%3BDIV%3A%2333FF"
. "FF%3BVLC%3AD03500%3BAH%3Acenter%3BBGC%3A99CCFF%3BLBGC%3ACCE5"
. "F9%3BALC%3A440066%3BLC%3A440066%3BT%3A336699%3BGFNT%3A223472"
. "%3BGIMP%3A223472%3BFORID%3A1%3B&hl=de";
break;
case "ebay":
$url = "http://partners.webmasterplan.com/click.asp?site=1382&ref=282872"
. "&subid=&type=html&hnb=22&ent=474&prd=yes&partner=25910"
. "&loc=http://search.ebay.de/search/search.dll%3Fshortcut=1%26"
. "query={$_POST['eingabe']}";
break;
}
// Forward zu $url
header("Location: {$url}");
} else {
?>
<form action="index.php" method="post" target="_blank">
<input type="text" size="75" name="eingabe"><input type="submit" name="senden" value="Suchen"><br>
<input type="radio" name="suchen" checked value="google"> <a href="http://www.google.de" target="_blank">Google.de</a>
<input type="radio" name="suchen" value="ebay"> <a href="http://partners.webmasterplan.com/click.asp?ref=282872&site=1382&type=b721&bnb=721&entnb=77" target="_blank">Ebay.de</a>
</form>
<?php
}
?>
Der Fehler wird nun beim ersten Aufruf nicht mehr verursacht und das ganze verhält sich wie gewünscht, mit der Ausnahme das beim klick auf "Suchen" der Fehler wieder verursacht wird. Problem ist wohl wieder der vorangehende header, welcher aber eigentlich auch vorhanden sein sollte. Ich hole noch ein wenig weiter aus, um ein wenig zu erläutern wie ich die seite generell (zum Ende) aufgebaut haben möchte:
Code :1 2 3 4 5
"statischer" / globaler Header mit Suchleiste Menu + Content-Bereich (welcher immer wechselt je nach seite(Inhalt) "statischer" / globaler Footer
Also prinzipiell habe ich das ganze schon Verstanden, es darf kein Code vorab stehen, ich habe nun testweise den ganzen code vorweg entfernt und die "Suche" nochmal probiert, allerdings meckert er hier dann wieder den header an, mit Verweis auf die 1. Zeile (wie im obigen Code). Warum er jetzt direkt den Code bemängelt verstehe ich nicht ...
Gruß
Andy
-
16.07.09 22:23 #11
- Registriert seit
- Dec 2007
- Ort
- Bremen
- Beiträge
- 3.420
Hi,
dann schau wieder in den Browserquelltext. Wenn diese Fehlermeldung kommt, hast Du vorher eine Ausgabe drin.
LGDa es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.
-
Hallo,
lag wohl am Browsercache, hatte jetzt nochmal den gesamten Code vorweg entfernt, also nur den PHP-Code wie zuvor gepostet in der index.php gelassen und siehe da nun ging es doch, hatte mich schon bei dem Probelauf gewundert warum er dennoch den Header zuvor angemekert hat.
Also problem ist definitiv der header welcher aber statisch immer da sein sollte, zumindest hätte ich es gerne so ... bisher hatte es immer gereicht im CONTENT-Bereich zu arbeiten, hier funktionieren auch einfache Datenbank Ein- und Ausgaben Problemlos.
Ist es sehr aufwendig die Ausgaben nur im CONTENT-Bereich durchzuführen ?
Header, sowie Footer binde ich normalerweise per include ein. Content kommt, falls nicht statisch gewünscht, per Datenbankausgabe. Was mich natürlich nun wurmt ist, das das ganze Vorhaben in (m)einem Kontaktformular funktioniert. Liegt wohl durch den übermittelten Header im Suchleisten PHP-Scriptkann man dies anderwertig gestalten ?PHP-Code:header("Location: {$url}");
(wie bereits erwähnt am liebsten nur in dem CONTENT-Bereich.)
Vielen Dank für die bisher geleistete Hilfestellung.
Gruß
Andy
-
16.07.09 22:40 #13
Hi,
die Funktionen zur Ausgabesteuerung könnten die hierbei helfen. Im Handbuch gibts einige Beispiele dazu.mfg
--------------------------------------------------------------------------------
Kein Support via PN, Email, ICQ, Brieftaube oder Flaschenpost!
Besucht den tutorials.de-Chat | Anleitung
RTFM - PHP-Handbuch - MySql Handbuch
--------------------------------------------------------------------------------
Surftipp...Der Postillon
--------------------------------------------------------------------------------
Signatur v2.2
-
Hallo,
das scheint ja reichlich kompliziert zu sein, schade das man die API von Google nicht so einfach erweitern kann, das hätte mir so manche nacht, sowie folgende nächte erspart
Ich verstehe derzeit nur Bahnhof
werde jetzt erstmal die suchleiste in den header packen und dann weiter versuchen das ganze im CONTENT-Bereich wieder zu geben ...
Gruß
Andy
-
17.07.09 01:41 #15
- Registriert seit
- Dec 2007
- Ort
- Bremen
- Beiträge
- 3.420
Na ja, das ist halt ein klassisches Problem, wenn man sich nicht an das EVA-Prinzip hält...
Du könntest die If-Abfrage ja ganz an den Anfang packen (mit dem kompletten Rest der index.php im else-Zweig). Du müsstest nur darauf achten, dass Du in keiner anderen inkludierten Datei gleichnamige Formularfelder hast.
LGDa es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.
![]() |
PHP 5 / MySQL 5 Seminar (22 Stunden Video-Training) Preis: früher: 39,95€ - jetzt nur: 7,99€ PHP 5 / MySQL 5 Lernkurs – 22 Stunden Video-Training auf DVD Hier geht es zum Angebot Über 1.000 weitere IT-Bücher zum Sonderpreis lieferbar! |
Ähnliche Themen
-
Suchmaschine ?
Von Nohh im Forum Delphi, Kylix, PascalAntworten: 3Letzter Beitrag: 09.10.06, 03:44 -
eigene Suchmaschine programmieren
Von Plan -B im Forum Visual Basic 6.0Antworten: 3Letzter Beitrag: 26.09.04, 14:16 -
Eigene Suchmaschine - Erste Probleme
Von SilentWarrior im Forum PHPAntworten: 2Letzter Beitrag: 21.02.03, 01:35 -
EIgene Bilder, Eigene Musik...
Von Sebastian im Forum Microsoft WindowsAntworten: 3Letzter Beitrag: 28.01.02, 14:55 -
Suchmaschine
Von Daniel im Forum Sonstige SprachenAntworten: 5Letzter Beitrag: 29.11.00, 00:21



Zitieren

Login





Lesezeichen