Sql Abfrage direkt ohne frond end Eingabe durchführen

07/11/2019 23:42 Mr_Venom#1
Hallo zusammen,

Ich habe eine Frage.
Wir haben in der Arbeit ein webbasiertes Ticketsystem. Hier können wir über Textboxen nach gewissen kritieren filtern.
Ich möchte ein Tool machen, welches die Tickets über js filtert und danach ausliest.

Wie ist der manuelle Prozess:
1. Filter über Textboxen eingeben
2. Über Button aktualisieren den Filter anwenden

Mein Gedankengang:
In der Webanwendung gibt es bestimmt eine Funktion, welche den Filter erstellt und eine die den Filter letztendlich ausführt. Kann ich den Filter in meinen Tool erstellen als variable speichern und die Funktion für die Ausführung mit meinen Filter starten?

Gibt es Möglichkeiten genau zu sehen, welche Funktion ein Button ausführt? Wenn ich den Button untersuchen, sehe ich nur <a class b... ahref:javascript:>

Grüße
Venom
07/12/2019 13:09 iMostLiked#2
Falls ich deinen Text richtig verstehe, willst du dir ein Tool basteln, welches eine fremde Website, bei der du keine Möglichkeit hast den Code zu ändern, um gewisse Funktionalitäten erweitert? So was wie Shortcuts für diese Filter?

Also zuallererst kannst du SQL Abfragen ohne Backend nicht ausführen. Das muss im Backend gemacht werden (e.g. PHP, NodeJS, Python). JavaScript kannst du dann nutzen, um AJAX-Requests auszuführen, damit du die serverseitigen Ressourcen auslesen kannst.

Wie auch immer, kommen wir zurück zu deiner eigentlichen Frage.
Quote:
Gibt es Möglichkeiten genau zu sehen, welche Funktion ein Button ausführt? Wenn ich den Button untersuchen, sehe ich nur <a class b... ahref:javascript:>
Ja, gibt es. Aber das macht in dem Fall wenig Sinn. Du kannst dir das Leben erleichtern, indem du mit einem Userscript (schau dir hierfür [Only registered and activated users can see links. Click Here To Register...] an) die DOM-Elemente manipulierst.

Gehen wir davon aus, dass diese Website so aufgebaut ist:
Code:
<input aria-label="Filter" type="text" placeholder="Filter" id="filter">

<a href="javascript:applyFilter()">Filter anwenden</a>
Was du jetzt ganz einfach machen könntest, ist die Elemente mithilfe von Javascript zu manipulieren. Also ganz grob:

Code:
document.querySelector('input#filter').value = 'Filter ABC XYZ'; // Manipuliert den Text des Input-Feldes
document.querySelector('a[href="javascript:applyFilter()"]').click(); // Klickt den Button zum Anwenden des Filters an
07/12/2019 16:41 False#3
#moved
07/12/2019 23:35 Mr_Venom#4
Vielen Dank iMostLiked für dein Feedback.

Genau so ist die Website aufgebaut, allerdings endet es bei mit javascript
Quote:
<a href="javascript:">Filter anwenden</a>
Okey die funktion document.querySelector() schau ich mir genauer an. Problem wird es mit komplexe Filter sein. In der Inputbox kann nur ein Wert eingefügt werden. Ich muss allerdings mit Und arbeiten wie z.b. Auftragsstatus = "Bearbeitet" und "Offen"

Zum Thema frondend und backend:
Backend fürt letzentlich die Anfrage durch aber muss die suchkriterium nicht von frondend an das backend übergeben werden?

Nachtrag:
Wenn ich den kompletzen Filter anwende, öffnet sich ein Fenster und der Filter kann eingetragen werden. Beim analysieren der Seite habe ich ein Element mit der Bezeichnung erweiterte Suche gefunden, welches auch mit hidden versehen war, eventuell wird ja die Abfrage gespeichert und beim aktualisieren abgerufen.
07/13/2019 00:33 False#5
Quote:
Originally Posted by Mr_Venom View Post
Vielen Dank iMostLiked für dein Feedback.

Genau so ist die Website aufgebaut, allerdings endet es bei mit javascript


Okey die funktion document.querySelector() schau ich mir genauer an. Problem wird es mit komplexe Filter sein. In der Inputbox kann nur ein Wert eingefügt werden. Ich muss allerdings mit Und arbeiten wie z.b. Auftragsstatus = "Bearbeitet" und "Offen"

Zum Thema frondend und backend:
Backend fürt letzentlich die Anfrage durch aber muss die suchkriterium nicht von frondend an das backend übergeben werden?
Ja die Daten kommen gewöhnlicherweiße vom Frontend ins Backend.

Wenn das eine Input Feld eh nur ein Wert zulässt, wirst du dort kein UND hinbekommen.
Es sei den du hast die Möglichkeit dir ALLE Daten anzeigen zu lassen dann könntest du dir selber Filter bauen, bei vielen Daten könnte das aber sehr eklig werden.
07/13/2019 19:28 iMostLiked#6
Wenn es zu kompliziert ist, den Filter im Frontend selbst zu manipulieren, kannst du einfach mal über deine Browser-Konsole in das Netzwerk schauen und analysieren, wie der Payload der XHR-Request aufgebaut ist.

Ich denke mal es wird einfacher sein die Request selbst zu senden als irgendwelche DOM-Elemente zu manipulieren.

Also ungefähr so..
Code:
let xhr = new XMLHttpRequest();
xhr.open('POST', 'https://example.com/api/v1/tickets');
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onload = () => {
    console.log(xhr.responseText);
};
xhr.send(JSON.stringify({
    action: 'fooBar',
    filter: 'filter xyz bla filter'
}));
Im Grunde hast du aber die zwei Lösungen. Entweder das, was ich in meinem ersten Post geschrieben habe (existierende DOM-Elemente manipulieren) oder das, was ich in diesem Post geschrieben habe (XHR-Request "faken").