Ajax Suche ohne "Hilfs-Php-Datei"

Hallo,
ich bin gerade dabei etwas mit Ajax rum zu spielen.
Es geht um eine simple Textsuche + Mysql.
Also: Liste mit Namen, wenn der USer "Mu" eingibt, sollen alle Namen mit MU beginnend angezeigt werden.
Der Ansatz:
mit der Hilfs-PHP-Datei
funktioniert soweit grundsätzlich. Allerdings habe ich noch einige Sahnehäubchen, welche ich umsetzen möchte:
  • Wie bekomme ich es ohen die Hilfs-PHP hin? Als Ziel die eigene Datei funktioniert zwar, allerdings zeigt er mir das Formular dann doppelt an. EIn
    um das Formular half nicht.
  • Ich möchte beim Laden, dass allle Elemente angezeigt werden. Und dann soll gefiltert werden, sobald eine EIngabe erfolgt.
Der Ansatz wäre sowas wie:
Also bei Laden erstmal die Funktion ausführen und den sql-Query ohne where ausführen, sobald eine Eingabe erfolgt, denselben Query mit where name like 'suchebegriff%'. Leider habe ich von js wenig und von Ajax gar keine Ahnung.
Irgendeine Idee?
mfG
tsunami

Content-Key: 599335

Url: https://administrator.de/contentid/599335

Ausgedruckt am: 20.01.2022 um 12:01 Uhr

Mitglied: godlie
godlie 26.08.2020 um 12:58:14 Uhr
Goto Top
Hallo,

um dir die 2te Datei zu ersparen musst du nur deine Hauptdatei als php datei Speichern und den Teil der 2ten Datei hinzufügen, ich würde daraus eine einfache function machen die ich dann mit den Parametern calle, also so im groben:


Was natürlich wiedereinmal nicht beachted wird ist die Gefahr einer SQL Injection <-- hierzu gibt es genügend threads
Mitglied: tsunami
tsunami 26.08.2020 um 15:24:14 Uhr
Goto Top
Hi,
vielen Dank für die schnelle Antwort. Ich war nicht untätig und der Part "Alle anzeigen" bei Aufruf ohne Filder klappt.
DU meinst den Teil der externen php einfügen und dann als url die eiene Datei einsetzen? Das habe ich versucht, hatte aber dann das Formular doppelt drin. Das mit dem SQL injection lösst mir doch das mysql_real_escape_string, oder nicht? Zudem ist es nicht öffentlich und das Verzeichnis ist mit htaccess geschützt.
mfG
tsunami
Mitglied: godlie
godlie 26.08.2020 aktualisiert um 15:32:01 Uhr
Goto Top
Hallo,

ich hab dir den Aufbau bereits oben Skizziert, in deinem Ajax Call machst du dann einfach einen Aufruf auf dich selbst.


Oh das mysqli_real_escape ist mir entfleucht, aber schöner und zukunftssicherer wäre es auf PDO umzusteigen.
Mitglied: tsunami
tsunami 31.08.2020 aktualisiert um 10:12:55 Uhr
Goto Top
Guten Morgen,
ich habe nun mal wieder die Suche auf dem Plan.
Ich habe mal den Aufbau übernommen. Nun bekomme ich einen Error:

Also echo searchFor();
Daraufhin habe ich den Javascript-Kram nach oben gepackt. Im Quelltext wird er korrekt geparsed.
Warum zum Henker kennt er dann die Funktion nicht?

Ok, das habe ich gelöst. Aber nun habe ich das alte Problem, dass er zum einen den html Block doppelt anzeigt und zum anderen scheint die SUche eine Schlagzum haben. Denn wenn ich "Me" eingebe zeigt er mir ua Praxis Caries an und Kevin Droste Hülshoff.
Dabei ist die sql-Abfrage ein
mfG
tsunami
zwischenablage01
Mitglied: godlie
godlie 31.08.2020 um 11:27:49 Uhr
Goto Top
Hallo,

poste doch mal deinen ganzen Source Code hier rein, wo sich die Function Definition befindet ist php egal.
Mitglied: tsunami
tsunami 31.08.2020 aktualisiert um 15:58:50 Uhr
Goto Top
Das Query ist einfach mit name like "suche%" und ohne like "suche%". Das geht soweit, daher habe ich es gekürzt. Was ich gesehen habe, ist, dass das "formular" 2x abgeschickt wird. Einmal mit dem Suchbegriff, einmal leer, ohne das weitere Tasten gedrückt wurden.

Also rufe ich doch das Formular auf, alles oK. Gebe zB M ein . Im ersten Block habe doch $_post['suchbegriff']="M"
Drunter habe ich $_post['suchbegriff'] umnbekannt...
Mitglied: godlie
godlie 31.08.2020 um 18:31:23 Uhr
Goto Top
Hallo,

das ist klar, du gibst dir ja unten das Ergebniss aus deinem Query aus, weiters sehe ich keine abschliesende Klammer für das else...

Was mir auch auffällt, du prüfst ja nur ob $_POST['suchbegriff'] gesetzt ist, du prüfst nicht, ob diese auch etwas beinhaltet.

Alles in allem ist der code nicht vollständig, ich versteh auch nicht warum die du deine qry im If und im Else Zweig veränderst.
Mitglied: tsunami
tsunami 01.09.2020 um 10:38:52 Uhr
Goto Top
Hi,
die Idee ist halt einmal where name like "suchtext%" und einmal ohne where.
Die andere Version wäre where name like "%" . Aber dass das funktioniert, war mir nicht klar. Ok.
Die Query-Ausgabe ist nur zu testzwecken. Das würde nach der neuen Erkenntnis wegfallen.

Die Klammer scheint beim c&p verloren gegangen zu sein. Die ist natürlich da. Sonst würde php meckern.

Was ich mit doppelter Ausgabe meine, ist dass die Überschrift und das Suchfeld doppelt ausgegeben werden.
Das der Code nicht komplett ist, ist mir klar, sonst wäre ich nicht hier.
Müsste da irgendwo nicht noch sowas wie ein exit rein?
Es scheint ja so, als wenn der die Seite lädt, ich gebe einen Buchstaben ein, die Funktion wird 1x ausgeführt (getestet mit alert).
Die Daten werden an sich selber gesendet und die html-Inhalte (input und h2) nochmals dargestellt.
Und das möchte ich unterbinden.
mfG
tsunami
Mitglied: godlie
godlie 01.09.2020 um 11:25:45 Uhr
Goto Top
Hallo,
so ich das jetzt mal ein bisserl aufgeräumt und ein html konstrukt rund herum gemacht, bei mir wird der Input nur einmal dargestellt und bei Eingabe des Suchbegriffs wird mir das Ergebniss angezeigt.

Was natürlich wichitg ist, dass deine php Datei genau so heist, wie du Sie in der searchFor unter var url genannt hast.

Mitglied: tsunami
tsunami 01.09.2020 um 13:51:45 Uhr
Goto Top
Hm, und das ohne hilfsdatei? Also alles in der Suche.Php? Ich setze es nachher um.
Mfg Tsunami
Mitglied: godlie
godlie 01.09.2020 um 13:55:19 Uhr
Goto Top
Hallo,

ja deswegen ist ja heir das if/else Konstrukt drinnen, damit die Datei weis was sie machen soll :) face-smile
Mitglied: tsunami
tsunami 01.09.2020 um 16:38:51 Uhr
Goto Top
Hi,
leider immer noch ein Satz mit X!
Den JS-Code nochmal 1:1 übernommen.
php mit like "%" funktioniert überings, so dass das if-else tatsächlich nicht gebraucht würde. Habe es auch im phpmyadmin getested.

Ich bekomme wieder den <h1>-Block und das Suchfeld doppelt angezeigt. Um aus zu schlßen, dass es irgendwas mit Cache etc. ist, habe ich es im FF und Chrome getestet. Der FF löscht alle Daten beim beenden, es ist also wirklich noch ein Problem drinnne..

Wenn ich mir den html-Quellcode ausgeben lasse:

zeigt er mir den fehlerhaften Part an, also das Ganze mit leerem Suchbegriff. Im Screenshot dagegen zeigt er oben den korrekten Part an. Hier das Textfeld mit "Wo" als Beispiel und der Ergebnisliste (Wolf und Wortmann. dann eine Leerzeile und dann alle Einträge

Der php-Code:
zwischenablage01
Mitglied: godlie
godlie 01.09.2020 um 17:17:44 Uhr
Goto Top
Hallo,

also denn Sinn u. Zweck des If / Else Konstrukts hast du nicht verstanden.

Wenn dein Suchbegriff da ist, dann gib nur dein Suchergebniss zurück.
Wenn dein Suchbegriff nicht da ist, dann gib die Form aus.

grüße
Mitglied: tsunami
tsunami 01.09.2020 um 17:28:56 Uhr
Goto Top
Hi,
nicht ganz:
Wenn Suchbegriff leer, zeige Form und alle Einträge.
Wenn Suchbegriff != leer zeige Form und gefilterte Ergebnisse.

Bsp:
1 Seitenaufruf
2 Anzeige Form und alle Einträge aus zB Handelspartner
3 Eingabe 1. Buchstabe Suchbegriff (t) zeige Form + alle Suchergebnisse mit "t" am Anfang.
4 Eingabe "s" Zeige form plus alle Einträge mit "ts" am Anfang
usw
Also sowas wie ein Filter, für lange Listen. Ist es nun klarer geworden?
mfG
tsunami
Mitglied: godlie
Lösung godlie 01.09.2020 um 17:48:33 Uhr
Goto Top
Hallo,

ja ist klarer geworden, anhand von diesen Anforderungen lässt sich das nicht in einer Datei abbilden ohne ein sinnbefreites Konstrukt.

Ergo: eine Datei die deine Form Rendert und eine 2te welche dann die Ergebnisse zurückliefert und nur diese Zurückliefert
Mitglied: tsunami
tsunami 01.09.2020 um 17:51:14 Uhr
Goto Top
Danke für Deine Hilfe.
Dachte ich bin im falschen Wald. Geht also nicht.
:) face-smile Dann kann ich noch lange suchen!
mfG
tsunami
Heiß diskutierte Beiträge
question
Windows XP: IE 8 zeigt keine Seiten mehr an :-) gelöst altmetallerVor 1 TagFrageWindows XP21 Kommentare

Huhu, ich habe hier tatsächlich noch einen Dell Dimension 9100 (Pentium IV, 3Ghz) stehen, den ich mit einer NVIDIA Quadro FX 540 und 4GB RAM ...

question
Datensicherung nach Geschäftsaufgabefboy33Vor 1 TagFrageBackup8 Kommentare

Guten Tag liebe (ex) Kollegen, nun nach 50 Jahren EDV, habe ich meine Firma abgemeldet und bin in den Ruhestand gegangen. Mein Problem, was mache ...

question
Zu lange Glasfaserkabel in Netzwerkschrank - wie organisieren? gelöst HerrITVor 1 TagFrageNetzwerke7 Kommentare

Hallo liebe Administratoren, ich hätte eine Frage an euch Experten, für die ich - selbst nach stundenlanger Suche - keine richtige bzw. zufriedenstellende Antwort gefunden ...

question
Ethernet über Telefonleitung gelöst Net-ZwerKVor 1 TagFrageLAN, WAN, Wireless8 Kommentare

Moin! Ich suche einen Konverter, mit dem ich auf eine Telefonleitung (2 Draht) ein Netzwerksignal legen kann. Geht darum, dass ich beim einem Kunden einen ...

question
PLEX bricht im HEIMNETZ nach 1 Minute Film abStrahlemann-69Vor 1 TagFrageUbuntu9 Kommentare

Hallo an alle, ich hab mir den Plexserver auf Proxmox installiert und mein NAS eingebunden. Er ließt auch alles ein und funktioniert. Nun laß ich, ...

question
MFA mit Microsoft?cseVor 16 StundenFrageWindows Userverwaltung5 Kommentare

Hi Leute, ich hoffe ihr könnt mir ein wenig helfen. Von unserer Gruppe (central IT im Ausland) verlange ich (im Zuge TISAX Audit) auf unseren ...

question
O365 Outlook + Teams sperren gelöst sraL91Vor 19 StundenFrageMicrosoft Office15 Kommentare

Hallo Zusammen, wir haben in unserer Firma Office 365 ausgerollt und ich stehe nun vor folgendem Problem. Unsere Firma sind in 50 Standorte unterteilt und ...

question
Image auf zweiten Laptop kopierenmario28Vor 1 TagFrageWindows Installation5 Kommentare

Hallo zusammen, ich habe mir für daheim zwei Mal den gleichen Laptop bestellt (Schenker Via 15 Pro M20) und nach Erhalten mit dem ersten begonnen, ...