mit js live search


#1
Hallo liebe Leute,
ich bin in js ein absoluter Laie. Ich habe mit so manchem User ein Problem mit seiner Formulareingabe.
Ich habe eine kleine Seite in der sie sich anmelden können. Dabei gibt es das Feld Teamname. Dabei soll jeder User dem jeweiligen Team zugeordnet werden. Doch leider ist Schreiben so eine Sache. Daher möchte ich Ihnen schon bei Beginn der Eingabe ein paar Vorschläge machen, die Sie dann übernehmen können oder halt Ihre eigene machen.
ich habe mir das so gedacht.
Code:
<?php
echo '<!-- Platzhalter für seperate JS name= ID= team_name -->
<script type="text/javascript">
$(document).ready(function()
{
    $("#team_name").keyup(function()
    {
        if($(this).val().length >= 3)
    {var erg = $(this).val();
      ';
      $teamPreview= $tm->teamSearchPreview('team');
      for($a= 0; $a<count($teamPreview);$a++){
        $text= $teamPreview[$a]['team'];}
      echo'alert("';
      echo $text;
      echo '")';
        echo '}
    });
});
</script>';
?>
Doch es ergeben sich ein paar Probleme. 1. wie übernehme die var erg in php? Wo oder wie kann ich die Vorschläge ausgeben zur Übernahme. Also nicht zwingend in alert aber wie dann??
Vielen Dank im Voraus
 
#3
Danke. das ist nicht so einfach. Team/Mannschaften ändern sich von Saison zu Saison und es kommen auch neue dazu. Als Beispiel: "team de sponsor x" dann "team de sponsor y" bishierhin ok doch Sportler haben oft Probleme sich den Namen zu merken bzw. wie er geschrieben wird. Das heißt es dann Team "x-team sponsor" der Nächste gibt Team an "Team sponsor x" .
Ich mache zwar schon nur eine LIKE '%team%' doch es kommt immer wieder zu Problemen. Auf die Sportler zu haoffen habe ich nach 10 Jahren aufgegeben.
Ich denke autocomplete wäre eine gute Idee, an so etwas dachte ich. Gibt es aquch irgendwo eine deutsche Anleitung?
 
#4
ich habe mich nun mal mit dem autocomplete befasst, doch irgendwie bekomme ich kein Ergebnis. Die jQuery Einbindung ist ok, doch der AUfruf des php Script bringt kein Ergebnis.
Code:
<span role="status" aria-live="polite" class="ui-helper-hidden-accessible">No search results.</span>
Das Script sieht so aus:

Code:
<?php
$tm = new participant();

$team= $tm->teamSearchPreview($_GET['term']) ;

    for($a=0;$a<count($team);$a++){
        $results[]= $team[$a]['team'];
    }

    echo json_encode($results);
?>
Der Scriptaufruf direkt funktioniert doch Inhalt $_GET['term'] scheint nicht initiert zu werden.
Wo liegt der Fehler?

Code:
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js">
</script>
<script type="text/javascript" src="http://code.jquery.com/ui/1.10.1/jquery-ui.min.js"></script>   
<script type="text/javascript">
$(function() {         
//autocomplete   
$(".auto").autocomplete({       
source: "teamSearch.php",       
minLength: 3 });                 
});
</script>
 

Sempervivum

Erfahrenes Mitglied
#5
Mit "fest vorgegeben" meinte ich nicht, dass sie über die Zeit sich nicht ändern, sondern dass sie in der Datenbank sind und die Sportler daraus eines auswählen und nicht willkürlich etwas festlegen.
Da Du schreibst, dass das PHP-Skript für sich funktioniert, kann ich durch bloßes Anschauen des Codes keinen Fehler erkennen.
Hast Du die Möglichkeit, eine Testversion online zu stellen?
 
#6
Mit "fest vorgegeben" meinte ich nicht, dass sie über die Zeit sich nicht ändern, sondern dass sie in der Datenbank sind und die Sportler daraus eines auswählen und nicht willkürlich etwas festlegen.
Da Du schreibst, dass das PHP-Skript für sich funktioniert, kann ich durch bloßes Anschauen des Codes keinen Fehler erkennen.
Hast Du die Möglichkeit, eine Testversion online zu stellen?
Testversion derzeit nicht möglich. Nach Fehlersuche scheint js die php nicht aufzurufen. ich habe jetzt mal das array results von hand befüllt. also müsste theorerisch doch der Aufruf den Inhakt anzeigen.
Wenn ich per require die php aufrufe kommt die Ausgabe. geht js einen anderen Pfad?
 
#7
Mit "fest vorgegeben" meinte ich nicht, dass sie über die Zeit sich nicht ändern, sondern dass sie in der Datenbank sind und die Sportler daraus eines auswählen und nicht willkürlich etwas festlegen.
Da Du schreibst, dass das PHP-Skript für sich funktioniert, kann ich durch bloßes Anschauen des Codes keinen Fehler erkennen.
Hast Du die Möglichkeit, eine Testversion online zu stellen?
Zu der Auswahl, ist es so, das in der Saison auch immer wieder neue Teams dazukommen. Teils durch neue Sponsoren, aber auch durch neue Teilnehmer aus meheren Ländern. Das wechselt.
 

Sempervivum

Erfahrenes Mitglied
#8
geht js einen anderen Pfad?
Nein, wenn beide Dateien im selben Pfad liegen, genügt es, den Dateinamen des Skriptes anzugeben.
Ich habe gerade zwei einfache Testdateien gemacht und damit funktioniert es.
Groß-/Kleinschreibung des Namens der PHP-Datei OK?
Außer der Ausgabe von json_encode darf nichts in die Ausgabe geschrieben werden.
Groß-/Kleinschreibung des Suchbegriffes?
Bei Test mit require könntest Du mit json_decode testen, ob der JSON-String fehlerfrei geparst werden kann.
 
#9
Nein, wenn beide Dateien im selben Pfad liegen, genügt es, den Dateinamen des Skriptes anzugeben.
Ich habe gerade zwei einfache Testdateien gemacht und damit funktioniert es.
Groß-/Kleinschreibung des Namens der PHP-Datei OK?
Außer der Ausgabe von json_encode darf nichts in die Ausgabe geschrieben werden.
Groß-/Kleinschreibung des Suchbegriffes?
Bei Test mit require könntest Du mit json_decode testen, ob der JSON-String fehlerfrei geparst werden kann.
Ja die korrekte Schreibweise habe ich. Die json_encode ausgabe habe ich nur an utf8 angepasst
Code:
echo json_encode($results, JSON_UNESCAPED_UNICODE) . PHP_EOL;
ich bekomme es nicht zum Laufen. Da werde ich mir wohl einen anderen Weg ausdenken müssen. Ich habe vor Jahren das mal mit css gelöst, eine select gefüttert aus der db und wenn nicht dabei dann input. Schade ich hätte gerne eine elegantere Lösung. Danke aber für deine Hilfe
 
#10
Also in Deinem Ausgangscode hast Du im JS_Code echo drinnen. Das kann dort nicht funktionieren.
Du müsstest davor den PHP-Aufruf wieder öffnen und vor de mEnde von PHP wieder schließen.
Aber wenn Du ein .val von einem Input änderst wird dieses doch beim speichern mit übertragen.
Die Daten des Formulares wirst Du doch irgendwie, entweder klassisch oder per Ajax, an den Server übertragen damit die Daten gespeichert werden. Da sollte in Deinem $_POST oder $_GET dann das des inputfeldes mit drinnen stehen.

Grüße
 
#11
Also in Deinem Ausgangscode hast Du im JS_Code echo drinnen. Das kann dort nicht funktionieren.
Du müsstest davor den PHP-Aufruf wieder öffnen und vor de mEnde von PHP wieder schließen.
Aber wenn Du ein .val von einem Input änderst wird dieses doch beim speichern mit übertragen.
Die Daten des Formulares wirst Du doch irgendwie, entweder klassisch oder per Ajax, an den Server übertragen damit die Daten gespeichert werden. Da sollte in Deinem $_POST oder $_GET dann das des inputfeldes mit drinnen stehen.

Grüße
Danke,
die Ausgangsidee ist ja nun verworfen. Aber das echo hat funktioniert. Es ist hier wohl nicht sichtbar, dass das echo in php steht und nur der js code per echo an den Browser gehen.
Bei dem Versuch es nun per autocomplete per jQuery zu lösen, scheint die Kommunikation nicht zu funktionieren. die GET['term] oder REQUEST['term'] ist schwer zu überprüfen. Doch auch wenn ich ein vorgefülltes Array "results" hinterlege, erscheint beim Aufruf nur "no results".
Da ich nun schon viel Zeit verschwendet habe, werde ich es nun mit css und js lösen. ein einfaches select mit dem Inhalt der DB und wenn sie es nicht finden die Möglichkeit ein neues einzutragen. Ist zugegeben nicht elegant, doch mein Wissen reicht nicht um den/ meinen Fehler zu finden. Danke an alle die versucht haben zu helfen.
 

Neue Beiträge