# live search mit php



## D2587 (22. Juni 2011)

Hallo,

ich will zum Suchbegriff: USA  aus der Datenbank vom Feld: *"name"* mit reinem PHP  live änliche Inhalte anzeigen. Leider funktioniert es nicht. Was mache ich falsch? 


```
<html>
<head>
  <title></title>
</head>
<body>
     <h2>Suchbegriff: USA</h2>
     <input type="text"  value="USA">
     <br />
     <div id="results">Änliches gefunden: 
	 
	 <?php
mysql_connect("localhost","web123","123456") or die(mysql_error());
mysql_select_db("usr_web112_3") or die(mysql_error());

$partialStates = $_POST['partialState'];

$states = mysql_query("SELECT name FROM states WHERE name LIKE '%$partialStates%' LIMIT 10");
while($state = mysql_fetch_array($states)){
   echo "<div>".$state['name']."</div>";
}

$query = sprintf("SELECT name FROM states WHERE name='%s'",
            mysql_real_escape_string($partialStates));

?>
	 </div>
	  
</body>
</html>
```


Datenbank

```
CREATE TABLE IF NOT EXISTS `states` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `abbr` varchar(200) NOT NULL,
 `name` varchar(500) NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;

INSERT INTO `states` (`id`, `abbr`, `name`) VALUES
(1, 'ER', 'Berlin'),
(2, 'AS', 'ALASKA'),
(3, 'KU', 'USA'),
(4, 'NK', 'KANADA');
```


----------



## jannicars (22. Juni 2011)

also du möchtest live beim tippen z.B U gleich als Beispiel USA angezeigt haben oder wie meinst du das?

Beispiel:
http://jqueryui.com/demos/autocomplete/

Oder was meinst du mit Live?


----------



## Yaslaw (22. Juni 2011)

Bitte poste die genaue Fehlermeldung!
Sonst können wir dir nicht helfen.

Und was ist PHP live?


----------



## D2587 (22. Juni 2011)

jannicars hat gesagt.:


> also du möchtest live beim tippen z.B U gleich als Beispiel USA angezeigt haben oder wie meinst du das?
> 
> Beispiel:
> http://jqueryui.com/demos/autocomplete/
> ...


 
ich will, dass live beim tippen z.B U gleich als Beispiel USA angezeigt wird.


----------



## saftmeister (22. Juni 2011)

Oder auch ohne jQuery mit reinem Ajax: http://woork.blogspot.com/2007/11/simple-search-engine-in-ajax-and-php.html


----------



## D2587 (22. Juni 2011)

Ja nur PHP, kein javascript , kein jQuery und kein Ajax bitte.


----------



## jannicars (22. Juni 2011)

geht nicht ohne.


----------



## D2587 (22. Juni 2011)

Die angezeigte Datensätze müssen für Suchmaschinen lesbar sein. Das bedeutet dass die Ergebnise im html zu finden sein müssen. Deswegen  denke ich mit Ajax oder jQuery wird es nicht gehen.


----------



## D2587 (22. Juni 2011)

wovon habe ich keine ahnung ?


----------



## jannicars (22. Juni 2011)

was bringt dir das?
ich bezweifle, dass die Suchmaschine Text eingibt in ein Feld.


----------



## D2587 (22. Juni 2011)

Auf dieser Forumseite unter dem Betrag findest du "Ähnliche Themen". Hier werden relewandte Inhalte angezeigt.  Etwas änliches will ich auch einbauen.


----------



## jannicars (22. Juni 2011)

Achso also statisch - nix mit javascript.


----------



## D2587 (22. Juni 2011)

Ja, wie hier auch, ohne javascript.


----------



## jannicars (22. Juni 2011)

Und was ist der verwendungszweck?
Dann könnt ich dir das so "hinbauen".


----------



## D2587 (22. Juni 2011)

Dem User soll es helfen, änliche Inhalte schnell zu finden.


----------



## jannicars (22. Juni 2011)

ja, bei was...?
Forum, Blog etc?


----------



## D2587 (22. Juni 2011)

Webseite mit Datenbank.


----------



## jannicars (22. Juni 2011)

ok hier:

```
<html>
<head>
  <title></title>
</head>
<body>
  <h2>Suchbegriff: USA</h2>
  <form action="index.php" method="post">
    <input type="text" name="partialState"  value="" id="partialState">
    <input type="submit">
  </form>
  <br />
  <div id="results">Änliches gefunden:
     <?php
if (isset($_POST['partialState'])) {
    mysql_connect("localhost", "root", "") or die(mysql_error());
    mysql_select_db("like") or die(mysql_error());

    $partialStates = $_POST['partialState'];

    $states = mysql_query("SELECT name FROM states WHERE name LIKE '%$partialStates%' LIMIT 10");
    while ($state = mysql_fetch_array($states)) {
        echo "<div>" . $state['name'] . "</div>";
    }

    $query = sprintf("SELECT name FROM states WHERE name='%s'",
        mysql_real_escape_string($partialStates));
}

?>
  </div>
</body>
</html>
```


----------



## D2587 (22. Juni 2011)

es muss ohne submit sein, sofortergebnis, wie im forum .


----------



## jannicars (22. Juni 2011)

was ist die Quelle mit dem ähnlichen Suchbegriff?


----------



## D2587 (22. Juni 2011)

Ein Suchbegriff, hier ist ein Beispiel: _http://www.freelancer.com/projects/by-tag/featured-article-slider-wordpress.html?per=20


----------



## jannicars (22. Juni 2011)

```
<html>
<head>
  <title></title>
</head>
<body>
  <h2>Suchbegriff: USA</h2>
  <br />
  <div id="results">Änliches gefunden:
     <?php
    $partialStates = ; // Hier die variable mit dem ähnlichen Suchbegriff eintragen!!
     
    mysql_connect("localhost", "root", "") or die(mysql_error());
    mysql_select_db("like") or die(mysql_error());

    $states = mysql_query("SELECT name FROM states WHERE name LIKE '%$partialStates%' LIMIT 10");
    while ($state = mysql_fetch_array($states)) {
        echo "<div>" . $state['name'] . "</div>";
    }

    $query = sprintf("SELECT name FROM states WHERE name='%s'",
        mysql_real_escape_string($partialStates));

?>
  </div>
</body>
</html>
```


----------



## D2587 (22. Juni 2011)

alles funktioniert,


----------



## jannicars (22. Juni 2011)

$partialStates = "usa"; // Hier die variable mit dem ähnlichen Suchbegriff eintragen!!

Da keine zahl " !


----------



## D2587 (22. Juni 2011)

alles funktioniert, Danke dir für deine Unterstützung. Ich wünsche dir super Woche. Super Arbeit. Klasse.


----------



## D2587 (23. Juni 2011)

hi jannicars, ich habe heute den Code mehrmals ausprobiert und festgestellt, dass die eingegebenen Suchbegriffe müssen unbedingt nebeneinander stehen. Ich will aber nicht, dass die eingegebenen Suchbegriffe müssen unbedingt nebeneinander stehen. Was muss im Code geändert werden?


----------



## jannicars (23. Juni 2011)

```
<html>
<head>
  <title></title>
</head>
<body>
  <h2>Suchbegriff: USA</h2>
  <br />
  <div id="results">Änliches gefunden:
     <?php
    $partialStates = ; // Hier die variable mit dem ähnlichen Suchbegriff eintragen!!
     
    mysql_connect("localhost", "root", "") or die(mysql_error());
    mysql_select_db("like") or die(mysql_error());

    $states = mysql_query("SELECT name FROM states WHERE name LIKE '%$partialStates%' LIMIT 10");
    while ($state = mysql_fetch_array($states)) {
        echo $state['name'] . " | ";
    }

    $query = sprintf("SELECT name FROM states WHERE name='%s'",
        mysql_real_escape_string($partialStates));

?>
  </div>
</body>
```
oder wie?


----------



## saftmeister (23. Juni 2011)

Damit findet man auch nur zusammen hängende Strings. Du müsstest den String mit den Keywords zerlegen und dann mit % als Trenner wieder zusammen fügen:


```
$partialStates = 'Einige Schlüsselworte ohne Zusammenhang';
$partialStates = implode('%', explode(' ', $partialStates));
```


----------



## jannicars (23. Juni 2011)

naja ein Beispiel, was er möchte wäre am besten.


----------



## D2587 (23. Juni 2011)

Ich möchte es genau so wie in Wordpress-Suche haben: _http://bodenfrost.wordpress.com/?s=Bei+R%C3%A4umung+Blockade


Wenn ich google als Word eingebe, dann funktioniert es. 
$partialStates = google; // Hier die variable mit dem ähnlichen Suchbegriff eintragen!! 

Aber wenn ich eine variable reinschreinbe, dann funktioniert es nicht.

$partialStates = "<?php single_tag_title(''); ?>"; // Hier die variable mit dem ähnlichen Suchbegriff eintragen!! 


So funktioniert es auch nicht.
$partialStates = 'Einige Schlüsselworte ohne Zusammenhang';
$partialStates = implode('%', explode(' ', $partialStates));


----------



## jannicars (23. Juni 2011)

D2587 hat gesagt.:


> Wenn ich google als Word eingebe, dann funktioniert es.
> $partialStates = google; // Hier die variable mit dem ähnlichen Suchbegriff eintragen!!


Also wenn du das einträgst, dann funktioniert es, so wie du möchtest****
Bei mir nicht.


D2587 hat gesagt.:


> Aber wenn ich eine variable reinschreinbe, dann funktioniert es nicht.
> 
> $partialStates = "<?php single_tag_title(''); ?>"; // Hier die variable mit dem ähnlichen Suchbegriff eintragen!!


Warum nochmal PHP in PHP öffnen?
Wenn eher so:

```
$partialStates = single_tag_title(''); // Hier die variable mit dem ähnlichen Suchbegriff eintragen!!
```

Irgendwie versteh ich immer nochnicht, was du erreichen möchtest.


----------



## D2587 (23. Juni 2011)

Ich möchte änliches haben: _http://www.freelancer.com/projects/by-tag/featured-article-slider-wordpress.html?per=20

*PHP in PHP*
Du hast natürlich recht, so ist viel besser:
$partialStates = single_tag_title(''); // Hier die variable mit dem ähnlichen Suchbegriff eintragen!! 

2 Ergebnise:
googletechniker krankenkasse privatversicherung | pkv zesar | 

Warum zum Suchbegriff "google" erscheint "pkv zesar"?


----------



## jannicars (23. Juni 2011)

Und was ist der Rest, der in einer Zeile steht?
Oder sind deine Suchergebnisse so lang?


----------



## D2587 (23. Juni 2011)

Ich habe über 21.000 Datensätze in der Datenbank. 

Ich habe für Test das Ergebnis auf 2 Limitiert, so kann ich besser Ergebnise auf die Richtigkeit prüfen.
$states = mysql_query("SELECT sterm FROM wp_mysearchterms WHERE sterm LIKE '%$partialStates%' LIMIT 2");


----------



## jannicars (23. Juni 2011)

und was soll jetzt nebeneinander stehen?


----------



## D2587 (23. Juni 2011)

Relevante  Suchbegriffe. 
Suchbegriff ist eine Wortkombination, über den User auf meine Webseite gekommen.

Sobald ein User meine Webseite besucht, wird ein Suchbegriff in DB gespeichert. Ich will dem User änliche Suchbegriffe anzeigen.


----------



## D2587 (23. Juni 2011)

Kleines Beispiel: _http://www.freelancer.com/projects/by-tag/featured-article-slider-wordpress.html?per=20


----------



## jannicars (23. Juni 2011)

Meinst du die Tabelle mit den Jobangeboten?


----------



## D2587 (23. Juni 2011)

Nein, ich meine keywords, die über der Tabelle stehen.


----------



## jannicars (23. Juni 2011)

musst einfach ein fixierten Div machen und dann da alle mit einem Komma abgetrennt reinschreiben.


----------



## D2587 (23. Juni 2011)

ja, aber dafür muss der Code relevante keywords augeben. Und das kann der Code noch nicht.


----------



## jannicars (23. Juni 2011)

schonmal überlegt, wie du die keywords generieren willst****
per hand eintragen oder meistgenutzte wörter****


----------



## D2587 (23. Juni 2011)

Das macht den Plugin automatisch.
_http://wordpress.org/extend/plugins/mysearchtermspresenter/


----------



## jannicars (23. Juni 2011)

und was hat das jetzt mit:


> live search mit php


zu tun?


----------



## D2587 (23. Juni 2011)

Das ist für mich live search.

_http://www.freelancer.com/projects/by-tag/featured-article-slider-wordpress.html?per=20

Weil da werden sofort relewandte Inhalte (Keywords, Jobangebote) augegeben.
Oder ist das nicht so?


----------



## jannicars (23. Juni 2011)

Und du willst jetzt einfach nur die keywords ausgeben und mehr nicht zum Artikel (im Wordpress Blog)?


----------



## D2587 (23. Juni 2011)

Es werden noch andere Inhalte ausgegeben. Denn Besucher will natürlich nicht nur keyword sehen.


----------



## jannicars (23. Juni 2011)

Wende dich da doch lieber an ein Wordpress Forum,
viellecht gibs dafür ja sogar schon ein Mod.


----------



## D2587 (23. Juni 2011)

Was meinst du mit Mod?
Ich wollte diese Code nicht nur im Wordpress einsetzen. Deswegen Plugin, wenn du das meinst, ist nich die beste Idee.


----------



## jannicars (23. Juni 2011)

> Was meinst du mit Mod?


Das:
http://wordpress.org/extend/plugins/


----------



## D2587 (23. Juni 2011)

Ich habe min. 2 Tage damit verbracht, ein passendes Plugin zufinden. 
Nichts gefunden.


----------



## jannicars (23. Juni 2011)

Also du möchtest die Keywords aus dem Wordpress Blog auf ner anderen Seite ausgeben, oder gleich im Blog untendran?


----------



## D2587 (23. Juni 2011)

Ich will das auf einer anderen Seite und im Blog ausgeben können.


----------



## D2587 (23. Juni 2011)

Den Code muss die einzelnen Wörter splitten und dann jedes Wort abfragen.


----------



## saftmeister (23. Juni 2011)

Oder du arbeitest mit OR im Query.


----------



## D2587 (23. Juni 2011)

saftmeister hat gesagt.:


> Oder du arbeitest mit OR im Query.


 
Query ist nicht Suchmaschinenfreundlich. Google kann dann Inhalte nicht lesen.


----------



## Yaslaw (23. Juni 2011)

? Das Query hat nix mit der Suchmaschine zu tun, sondern mit deiner DB.
Die Lösung habe ich dir ja bereits in einem anderen Thread geliefert.


----------

