Datenbankeinträge ohne Zugriff auf Verwaltung speichern
lima-city → Forum → Programmiersprachen → Sonstige Programmiersprachen
anbieter
ansatz
browser
code
datei
datenbank
datum
einloggen
gruppe
http
login
manager
null
post
programm
senden
server
software
string
url
-
Hier mal eine Frage an die Datenbankexperten.
Gibt es eine Moeglichkeit, Einträge, die in Datenbanken vom Nutzer (nicht Admin) gemacht werden, von diesem Nutzer zu speichern um sie dann im Falle eines Falles wieder einfach in die Datenbank zurückzusichern?
Es geht um den Fall, dass Anwender von der Leitung angehalten werden, ihre Daten in die Datenbank einzutragen. Diese Daten verschwinden aber regelmaessig (woechentlich) und es scheint keine Datenbanksicherung zu erfolgen. Trotzdem sollen die Daten immer wieder aufs Neue eingetragen werden, was einer Arbeitsbeschaffung gleich kommt.
Die eigegebenen Daten lassen sich zwar durch Copy&Paste in eine Excel Tabelle uebernehmen, aber eben nicht effektiv wieder zurueck ueber die Eingabemaske in die Datenbank schreiben, da dort nur Einzeleingaben akzeptiert werden.
Ach ja der Hinweis, "Wende Dich an den Administrator!" hilft nicht wirklich weiter. Ich sage nur, alle Windowsnutzer haben hier alle Administratorrechte! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Was ist das denn für ein Datenbanksystem?
-
Höchstwahrscheinlich geht dies nicht.
Aber es lässt sich sehr einfach ein kleines Programm schreiben, welches diese Arbeit für die abnimmt. Das musst du dann zwar jedes mal starten und der Computer wird - wenn deine Eingabemaske ein Programm ist und nicht über den Browser - für diese Zeit blockiert (dann kannst du dem Programm zuschauen).
Ist das Eintragen über den Browser möglich, kann dies im Hintergrund erfolgen.
Bei diesem Workaround würdest du die Daten bei dir am PC in eine Datei eingeben (nicht mehr direkt in die Datenbank) und das Programm überträgt diese dann.
Wenn dies nicht funktioniert oder eine andere Möglichkeit dir vorschwebt, benötige ich eine genauere Beschreibung der Aufgabe. -
Es ist eine Software von einem kleinen Anbieter. Ich weiß nicht mal, welche Datenbank dahinter steckt. Es ist ein Bewertungssystem.
Die Eingabemaske ist leider der Browser und die Software ist auf einem Server installiert. Sonst hätte ich es schon mit einem Makro versucht.
Es gibt Gruppen mit mehreren Personen. Für jede Gruppe gibt es verschiedene Tasks, bei denen die Gruppenmitglieder bewertet werden.
-
waytogermany schrieb:
Kannst du noch mehr Informationen geben, z.B. wie der Anbieter heißt oder was er tut?
Es ist eine Software von einem kleinen Anbieter.
Also, man kann sich da einloggen, Gruppen und Tasks erstellen und dann seine Gruppenmitglieder bewerten. Hast du ein Adminpanel oder vergleichbares, um das alles zu verwalten?
waytogermany schrieb:
Hast du Zugangsdaten zur Datenbank oder was hast du sonst damit zu tun? Oder meinst du einfach die Datenbank des Anbieters? (auf die du logischerweise nicht direkt zugreifen kannst)
Ich weiß nicht mal, welche Datenbank dahinter steckt.
Edit:
Eins muss ich auch noch fragen: Wieso verschwinden die Daten immer wieder? Können die am System beteiligten Personen den gesamten Datenbestand löschen (und es erlaubt sich jemand einen schlechten Scherz) oder arbeitet der Anbieter nicht besonders seriös?
Beitrag zuletzt geändert: 15.11.2015 21:31:02 von fuerderer -
Da es im Browser ist, kannst du leicht ein Script schreiben, welches im Hintergrund läuft und die Daten einträgt.
Dann machst du deine Einträge in deiner Exceltabelle und startest anschließend das Programm.
Wärenddessen kannst du problemlos den PC weiter nutzen.
Wenn du dafür eine Anleitung brauchst, kann ich dir gerne eine schreiben. Eigentlich geht das Script schreiben aber noch schneller als eine Anleitung. Da du womöglich Daten hast, die du nicht weitergeben darfst, aber für das Programmieren notwendig wären können wir ja eine Mischung machen. -
Ich wäre schon dankbar für einen Hinweis in die Richtung des Scriptes oder ein Link. Ich stehe zur Zeit völlig auf dem Schlauch und mir fällt kein Ansatz ein.
Wenn ich Zugriff auf den Server hätte, könnte ich einfach die Excel Datei hochladen und dann von einem Script die Daten in die Datenbank schreiben lassen. Aber von einer lokalen Datei am Rechner in ein nur schwach formatiertes Eingabefeld am Browser fehlt mir der Ansatz! -
waytogermany schrieb:
Aber von einer lokalen Datei am Rechner in ein nur schwach formatiertes Eingabefeld am Browser fehlt mir der Ansatz!
Dein Script müsste "einfach" das Verhalten des Browsers nachahmen. Das heißt Du siehst Dir Login, Dateneingabe und Logout im Browser im Seitenquelltext an und baust im Script diese Vorgänge nach. Was Du genau machen musst, hängt von der Web-Anwendung ab. Excel bietet in VBA auf jeden Fall Klassen an, mit denen Du HTTP-Requests an den Server schicken und die Antworten verarbeiten kannst.
H. -
Das ist schon mal ein Anstoß. Die Webseite ist sehr javascriptlastig.
Hast Du eventuell einen Link, wo ich mich mal einlesen kann? -
Oh, da gibt es einen Punkt, an dem ich mich leider noch nicht auskenne: AJAX.
Wenn die Seite nach dem Absenden der Daten aber neu lädt, dann schickt dein Browser die Daten an den Server (GET über die URL und POST versteckt).
Du nimmst dir nun eine Programmier-/Skriptsprache deiner Wahl, welche HTTP unterstützt.
In Python sieht eine Funktion von mir so aus:
def Verbinden(URL): """Meldet sich bei der URL an. Return: Inhalt, Session """ #Verbinden print("#Verbinde mit",URL,"...") headers = {'User-Agent': 'Python-Script'} e=requests.Session() URLN="http://"+Benutzername+":"+Passwort+"@"+URL print("#URL: "+URLN) t=e.get(URLN,headers=headers) t=t.text return t,e
(Kein schöner Code, musste mal schnell gehen)
Damit melde ich mich bei einer Website an, welche Passwortgeschützt ist und lese den Inhalt aus.
Damit Java (Android) auch vorkommt:
public String SendPost(String httpURL, String data) throws IOException { CookieManager manager = new CookieManager(); manager.setCookiePolicy(CookiePolicy.ACCEPT_ALL); CookieHandler.setDefault(manager); URL url = new URL(httpURL); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoOutput(true); connection.setRequestMethod("POST"); connection.setRequestProperty("User-Agent",Useragent); connection.setRequestProperty("charset", "utf-8"); // If cookie exists, then send cookie if (_cookie != "") { connection.setRequestProperty("Cookie", _cookie); } connection.connect(); // If Post Data not empty, then send POST Data if (data != "") { OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream()); out.write(data); out.flush(); out.close(); } String headerName = null; //_cookies.clear(); if ((_cookie == "")||(true)) { for (int i=1; (headerName = connection.getHeaderFieldKey(i))!=null; i++) { if (headerName.equalsIgnoreCase("Set-Cookie")) { String cookie = connection.getHeaderField(i); String ncookie = cookie.substring(0,cookie.indexOf(";")) + "; "; _cookie+=ncookie; } } } java.net.CookieStore cookieJar = manager.getCookieStore(); List <HttpCookie> cookies =cookieJar.getCookies(); for (HttpCookie cookie: cookies) { _cookie+=cookie+";"; } BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream(),"utf-8")); // Get HTML from Server String getData = ""; String getAll=""; String decodedString; while ((decodedString = in.readLine()) != null) { getData += decodedString + "\n"; getAll += decodedString; } in.close(); return getAll; }
Bei dem Java-Beispiel lassen sich POST-Daten versenden. GET-Daten schreibst du einfach direkt in die URL (index.php?Var1=42&Var2=0815).
Du wirst dich womöglich zuerst anmelden müssen. Dazu schickst du einfach die Formulardaten der Login-Seite (Quelltext->Nach <form> suchen und die name="" Bezeichnung übernehmen) an die Login-Seite und speicherst die Cookies, welche du geschickt bekommst.
Diese sendest du dann, zusammen mit den POST/GET-Daten deiner DB-Einträgen, an die Seite, auf der du die Einträge vornimmst.
Ganz verallgemeinert:
Du schickst genau die Daten an die Seite, welche du bei normaler Benutzung auch senden würdest.
Jedoch musst du dir die Seite nicht darstellen lassen, da sich daran ja nichts ändert (und wenn, musst du das Programm eben anpassen) -
Naja, einloggen kann ich mich schon erst manuell und dann versuchen, mit dem Script die Daten einzutragen. Wie man sicher merkt, habe ich so was noch nie gemacht. Für einen Link mit Hintergrundinformationen oder ein Stichwort zum suchen wäre ich deshalb dankbar.
-
Du hast zwei Möglichkeiten:
Du lässt dein Skript die Maus und Tastatur steuern. Dann ist es, als würdest du es machen.
Jedoch ist natürlich dein PC für diese Zeit blockiert.
Nimmst du die von mir gerade vorgestellte Möglichkeit, dann kannst du dich nicht selbst anmelden, da die Cookies in deinem Browser sind, aber nicht in deinem Programm.
Ich empfehle dir Variante 2, da es weniger Fehleranfällig ist und der PC nicht blockiert ist.
Such dir einfach eine Sprache aus, in der du dein Programm schreiben möchtest und erkundige dich, wie du das HTTP ansprichst.
Zum suchen:
[Programmiersprache hier einsetzen] send POST data
[Programmiersprache hier einsetzen] HTTP
Programmablauf:
Datei auslesen -> Anmeldedaten an [login.php] senden ->>
>> Schleife über die Anzahl deiner Datensätze {n-ten Datensatz an [eingabe.php] senden}->>
>>Fertig!
-
waytogermany schrieb:
Naja, einloggen kann ich mich schon erst manuell und dann versuchen, mit dem Script die Daten einzutragen.
Leider nicht. Der Browser hat dann das Login und nicht Dein Script ...
Ganz 'ne andere Idee:
Unter den Suchbegriffen 'web app client automatization' bin ich auf www.seleniumhq.org/ gestossen. Das ist ein Project in Sachen Browser Automatisierung und die haben etwas, das sich "Selenium IDE" nennt, ist eine Art "Record and Playback" für Firefox. Ist unter Apache 2.0 License also FOSS.
edit: Ist natürlich nur sinnvoll, wenn Du im Büro Firefox einsetzt. Unter dem Suchbegriff gab es aber noch viel mehr. Müsste eigentlich für jeden Geschmack was dabei sein.
H.
Beitrag zuletzt geändert: 16.11.2015 17:52:41 von hddg -
Vielen Dank, ich werde mich da mal einlesen und es mal ausprobieren.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage