Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWünsch Dir wasWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Javascript: WebSql

Mitglied: internet2107

internet2107 (Level 1) - Jetzt verbinden

16.12.2018, aktualisiert 11:06 Uhr, 3436 Aufrufe, 17 Kommentare

Guten Morgen zusammen,

zunächst einmal einen schönen dritten Advent.

Ich habe ein Problem mit Javascript und WebSQL. Bisher habe ich folgende Dinge immer im local Storage abgelegt, gespeichert und bei Bedarf wieder abgerufen.
Ich würde das gerne etwas "moderner" machen und die Daten in WebSQL ablegen.
Das Ablegen der Daten klappt. Nur die Abfrage und das Rückschreiben nicht.

Folgender Code wird für local Storage verwendet.
Ab hier wird die Abfrage gemacht, die Daten wieder aus dem local Storage geholt, bzw. soll auch WebSQL gelesen werden.
Anschließend werden die Werte auch jeweils wieder in die Felder geschrieben (bei local Storage)

Mein Problem ist, dass die Abfrage der Tabelle irgendwo falsch ist. Vielleicht habe ich auch große Knöpfe auf den Augen und sehe den Fehler nicht.
Klicke ich den Button zum "laden" der Daten, läuft das in eine Endlosschleife und der Browser hängt sich auf.

Was ist daran falsch?
Mitglied: yamaha0815
16.12.2018 um 10:25 Uhr
Kann sein, dass ich jetzt Unfug schreibe, jedoch ist "value" meist ein Schlüsselwort und könnte auch so interpretiert werden, d.h. es wird nicht als Variablenparameter interpretiert sondern eben als Schlüsselwort und damit schafft man sich eben Probleme.
Nenn also die Spalte in der DB um, sofern diese "value" heißt und ändere dahingehend auch dein INSERT und dein SELECT um. Es sollten hier keine möglichen Schlüsselwörter der nachfolgend verwendeten Programmier- und Abfragesprache Anwendung finden.

Hast du auch mal geprüft, ob die Daten auch korrekt in der Datenbank stehen (externer Datenbrowser)?
Bitte warten ..
Mitglied: internet2107
16.12.2018 um 11:09 Uhr
Ich habe es mal geändert, also von "value" nach "Wert1" und es macht keinen Unterschied.

Ja, die Daten kommen einwandfrei in der Tabelle an.
Sieht so aus, Beispiel:

Bitte warten ..
Mitglied: yamaha0815
16.12.2018, aktualisiert um 11:22 Uhr
Hast du dies auch in deiner SELECT Abfrage angepasst oder steht da noch irgendwas von "value" drin?

PS.. OK siehe Script oben. Alles klar.

Was steht denn in der Variable zur Zeilenanzahl? Diese soltte ja auf 2 Elemente hindeuten. Im übrigen ist "len" auch oftmals ein Schlüsselwort.
Bitte warten ..
Mitglied: internet2107
16.12.2018 um 12:16 Uhr
wie gesagt. Lässt man das Script oben so laufen, hängt sich der Browser auf.
Da das console.log eingeschaltet ist, sieht man ja, dass es eine Dauerschleife ist und nicht endet.

Kurz: Wie ich es drehe und wende, ich finde den Fehler leider nicht.
Bitte warten ..
Mitglied: yamaha0815
16.12.2018 um 13:14 Uhr
...und was steht nun in der Variale "len"? Diese setzt sclhußendlich die Abbruchbedingung der Schleife, Kann diese überhaupt erreicht werden und was passiert innerhalb der Schleife? Debugger?

Wo hängt das Ding denn überhaupt?
Bitte warten ..
Mitglied: internet2107
16.12.2018 um 14:45 Uhr
Hallo,

sieht man doch oben im Code?

Hier nochmal der Ausschnitt.
Es ändert aber nichts an der Tatsache, dass es nicht klappt. Egal wie man sie nennt. Selbst wenn ich da nun "var len1 = rs.rows.length;" draus mache.

Das Ding hängt nicht, sondern es ist eine Endlosschleife und ich sehe nicht den Fehler warum.

Nochmal zum Verständnis. Exakt dieselben Werte stehen so auch in "local Storage". Beim Auslesen des local Storage und zurückschreiben in die jeweiligen Felder klappt alles ohne Probleme. Genauso wie das Umschalten einer z.B. Checkbox.

Das alles soll nun von local Storage auf WebSQL geändert werden, sprich der local Storage soll abgeschaltet werden.
Das Schreiben in die SQL_DB klappt ja ohne Fehler. Nur das Auslesen und zurückschreiben aus der DB klappt nicht.
Ich habe wahrscheinlich ein riesen Brett vor dem Kopf und sehe den Fehler nicht
Bitte warten ..
Mitglied: yamaha0815
16.12.2018, aktualisiert um 15:07 Uhr
Alles gut Kollege, ich will dir ja nix böses.

Was spuckt die Konsole denn aus?
Hast du schon mal den Wert deiner Stopbedingung geprüft, also was steht denn nun in "len" drinn? Lies diesen Wert doch einfach mal aus und lass dir diesen auf der Konsole anzeigen.
Prüf nochmal deine {} und () ob das alles passt und vor allem an der richtigen Stelle sitzt.

Wenn das in eine Endlosschleife geht, dann wird entweder die Abbruchbedingung nicht erreicht oder diese ist gar nicht vorhanden.
Bitte warten ..
Mitglied: internet2107
16.12.2018, aktualisiert um 15:25 Uhr
auch alles gut
Ich weiß, ich sehe das auch nicht als "Böse".

Ich habe mal ein Console.log auf das "len" gesetzt". Er Spuckt "1458" aus, was wiederum genau die Anzahl der Reihen in der DB beträgt.
Bitte warten ..
Mitglied: yamaha0815
16.12.2018 um 15:39 Uhr
Du meinst wohl Zeilen in der DB, oder?

Fütter die DB doch mal nur mit 5 wohl definierten Zeilen und versuch diese auszulesen.

In "len" müsste dann 5 stehen.
Gib auch mal die Laufvariable i mit aus, damit man sieht wie diese incrementiert wird.

Evtl. auch mal len um 1 vor der Schleife incrementieren und als Abbruchbedingung != setzen. Sobald i = len ist sollte die Schleife der logik nach ja abrrechen, weil eben die Abbruchbedingung erreicht ist.
Bitte warten ..
Mitglied: 137846
16.12.2018, aktualisiert um 18:03 Uhr
var rowid1 = rs.rows.item(i). Wert1
Tippfehler (Leerzeichen zwischen . und Property)!
'SELECT Wert1 FROM Profil1'
Du weist aber schon wie Selects funktionieren?
Normalerweise sieht dieser ja meist so aus wenn man einen bestimmten Eintrag holen möchte:
Und überhaupt, wieso setzt du auf ein totes Pferd WebSQL??

Gruß A.
Bitte warten ..
Mitglied: yamaha0815
16.12.2018, aktualisiert um 18:15 Uhr
Also bei einem Tippfehler würde sich der Interpreter beschweren und anscheinend wird die Variable trotzdem irgendwie bedient. Deswegen drängte ich ja auch drauf, dass man den Wert hier auch mal mit den Zeilen in der DB verifiziert.

Eine where clause ist nicht norwendig, sofern man keine Einschränkungen macht. Hier wird eben einfach der gesamte Tabelleninhalt bzw. alle Zeilen zurück gegeben. Daran soll es nicht liegen.

Da die Frage nun den Status gelöst hat.. was war es denn?
Bitte warten ..
Mitglied: 137846
16.12.2018, aktualisiert um 18:28 Uhr
Zitat von yamaha0815:
Eine where clause ist nicht norwendig, sofern man keine Einschränkungen macht. Hier wird eben einfach der gesamte Tabelleninhalt bzw. alle Zeilen zurück gegeben. Daran soll es nicht liegen.
Macht dann aber bei der Zeile:
$(this).val(value_load_txt_p1);
wenig Sinn . Ich denke er will ja die Felder alle wieder mit Ihrem Inhalt bestücken. Und bei jedem Feld alle Einträge der DB zu durchlaufen ist auch nicht sinnvoll.
Vermutlich entspricht das was da oben steht schon lange nicht mehr dem tatsächlichen Stand seines jetzigen Codes.

Da die Frage nun den Status gelöst hat.. was war es denn?
Vermutlich wieder nur verklickt, wie immer ...
Bitte warten ..
Mitglied: yamaha0815
16.12.2018 um 19:35 Uhr
Naja, wer weiß was da in this drin steht. Wir wissen es ja nicht.
Ist ja auch nicht weiter relevant, wenn der Code in einer Endlosschleife hängt, oder?

Fragen wir doch den TS bzw. geben ihm Zeit zu antworten.
Bitte warten ..
Mitglied: internet2107
17.12.2018, aktualisiert um 11:16 Uhr
Guten Morgen.

Ja, aus Versehen verklickt. Demnach noch nicht gelöst, leider.

Die Zeile "$(this).val(value_load_txt_p1);" bedeutet, dass hier immer der Wert zurückgeschrieben wird, werden soll.
"this" ist in diesem Moment das "<input value="hier_kommt_der_Wert_hinein">"

Der "Tippfehler" ist beim hineinkopieren hier im Textfeld passiert. Im Original gibt es keine Leerzeile "var rowid1 = rs.rows.item(i).Wert1"
Aber auch mit "Tippfehler = Leerzeile" läuft das ohne Probleme durch..


Ich sehe das Problem an einer anderen Stelle, weiß aber nicht, wie ich es umsetzen soll.
Denn nochmal: Mit dem local Storage klappt es seit Jahren fehlerfrei.

Das Problem sehe ich persönlich in der doppelten Schleife.
Ausschnitt aus Code oben:

Und hier beginnt Abfrage der DB
Hier nochmal zum Verständnis und besseren Überblick der Code, wie er eigentlich logisch sein sollte. Eigentlich.
Klickt man also den Button, rennt die erste Schleife los und soll aus der Tabelle aus jeder Zeile den Wert aus der Spalte "Wert1" nehmen, wenn in der Spalte "Bezeichnung" die Vorgabe "profil1_text%" gegeben ist.
Mache ich es so, passiert nichts.

Erst wenn ich diese zweite Schleife der DB selbst einbaue, macht er die Abfrage. Dann aber rennt sich das Ganze tot.

Darum belasse ich es einfach beim local Storage und verwerfe die Idee mit der DB.
In jedem Fall einen schönen Tag.
Bitte warten ..
Mitglied: 137846
17.12.2018, aktualisiert um 12:12 Uhr
Zitat von internet2107:
Die Zeile "$(this).val(value_load_txt_p1);" bedeutet, dass hier immer der Wert zurückgeschrieben wird, werden soll.
Wissen wir.
Ich sehe das Problem an einer anderen Stelle, weiß aber nicht, wie ich es umsetzen soll.
Denn nochmal: Mit dem local Storage klappt es seit Jahren fehlerfrei.
Hat ja auch nichts mit WebSQL zu tun.

Das Problem sehe ich persönlich in der doppelten Schleife.
Ausschnitt aus Code oben:

Hier nochmal zum Verständnis und besseren Überblick der Code, wie er eigentlich logisch sein sollte. Eigentlich.
Klickt man also den Button, rennt die erste Schleife los und soll aus der Tabelle aus jeder Zeile den Wert aus der Spalte "Wert1" nehmen, wenn in der Spalte "Bezeichnung" die Vorgabe "profil1_text%" gegeben ist.
Mache ich es so, passiert nichts.
Ist ja auch logisch denn tx.executeSql gibt ja auch nichts zurück, also ist die Variable value_load_txt_p1 leer!

Nö, hier ein simples Beispiel, das rennt in Chrome testweise einwandfrei:

Darum belasse ich es einfach beim local Storage und verwerfe die Idee mit der DB.
Wenn db dann IndexedDB, WebSQL ist tot ...

Gruß A.

p.s. Den Status einer Frage kann man zurücksetzen! Lese dazu https://administrator.de/faq/32
Bitte warten ..
Mitglied: internet2107
17.12.2018 um 13:24 Uhr
Danke für die Antwort und den Code.
Nur: Was bringt es? Soweit war und bin ich auch und habe es auch schon geschrieben, dass die einfache Abfrage läuft, Ausgabe in die Console.
Dort sehe ich alle Werte. Es bringt aber nichts, weil nichtsdestotrotz nichts in die jeweiligen Felder zurückgeschrieben wird.
Einzig darum geht es.

Nun ja, egal. Ich begrabe das Thema.
Bitte warten ..
Mitglied: 137846
17.12.2018, aktualisiert um 13:41 Uhr
Nun du schreibst in deinem zweiten Beispiel ja gar nichts in die Variable value_load_txt_p1 also kann dort dann auch nichts landen und auch nichts im Feld landen.
Und das hier
var value_load_txt_p1 = db_gehalt.transaction(function(tx)
geht ja nun überhaupt nicht weil die Funktion nichts zurückliefert! Du musst die Daten im Callback zuweisen und dort ins Feld schreiben, nicht außerhalb. Bedenke das sind asynchrone Funktionen!

Das berühmte Brett vorm Kopf ...

p.s. Gerade aktuell:
https://www.golem.de/news/datenbank-fehler-in-sqlite-ermoeglichte-codeau ...
Noch ein Grund die Finger davon zu lassen.
Bitte warten ..
Ähnliche Inhalte
JavaScript
JavaScript hochladen
gelöst Frage von Patrick-ITJavaScript12 Kommentare

Hallo zusammen, ich bin auf der Suche nach einer Seite, wo ich meine JavaScript Datei hochladen kann und die ...

JavaScript
Javascript Array
gelöst Frage von internet2107JavaScript2 Kommentare

Ich habe folgendes Problem. Ersetze ich die folgenden Zahlen gegen Variablenwerte, bekomme ich nicht das Ergebnis, wie mit festen ...

JavaScript
Javascript SavaAs
Frage von achim13JavaScript1 Kommentar

Hallo, ich muss eine PDF Datei in bestimmten Ordner auf dem Server speichern. Kann ich es mit JavaScript z.B. ...

JavaScript
Javascript Button klicken
gelöst Frage von shc4everJavaScript5 Kommentare

Hallo zusammen, seit 2 Tagen versuche ich es hinzukriegen, dass der ein Tab automatisch beim Laden geöffnet wird. Ich ...

Neue Wissensbeiträge
Erkennung und -Abwehr

Liste ungeschützter Pulse-VPN-Server veröffentlicht

Information von Visucius vor 9 StundenErkennung und -Abwehr

bzw. Der tiefe Blick in die Profi-Administratoren-Welt ;-)

Windows 10

Windows Defender verhindert Telemetrieblocking via hosts-Datei

Information von BirdyB vor 10 StundenWindows 102 Kommentare

Für diejenigen, die keine Daten an MS senden wollten, war die hosts-Datei manchmal eine Option.

Monitoring

Unabhängiger Ansatz - IoT (frei von Cloud- oder Appzwang) - Hier mit Schaltsteckdosen

Anleitung von beidermachtvongreyscull vor 2 TagenMonitoring2 Kommentare

Tach Kollegen, ich erzähle Euch mal von meiner Ausgangslage und den/m Problem(chen) Ich benutze ein NAS zur Lagerung meiner ...

Microsoft
Microsoft Advanced Threat Protection for Linux
Information von Dani vor 5 TagenMicrosoft

Microsoft Defender Advanced Threat Protection (MD ATP) support for Linux with kernel version 3.10.0-327 or later, including the following ...

Heiß diskutierte Inhalte
Windows 10
Windows "Home" Version im Unternehmen legal?
gelöst Frage von BosnigelWindows 1024 Kommentare

Hallo, ich habe hier einen Kleinstunternehmer der überall sparen muss. Die Frage: Ist Windows 10 (also nicht Pro) für ...

Hyper-V
Hardware Empfehlung Hyper-V Host
Frage von TraxxTecHyper-V20 Kommentare

Hi, ich habe keine Ahnung was aktuell an Hardware unterwegs ist, deshalb bräuchte ich eine grobe Empfehlung für einen ...

Batch & Shell
Doppelte If Anweisung - check if file exist
Frage von chkdskBatch & Shell12 Kommentare

Hello Again :-) Ich habe hier ein Skript, welches zu zu Beginn überprüft ob eine Datei vorhanden ist. Falls ...

Windows 10
Gruppenrichtlinenen Anzeigen lassen ohne Administrator rechte ?
gelöst Frage von DavidHergWindows 1011 Kommentare

Guten Abend zusammen, kann ich mir die Gruppenrichtlinien ohne Administrator Rechte anzeigen lassen ? MFG DavidHerg

Weniger Werbung?
Administrator Magazin
07 | 2020 In der Juli-Ausgabe beleuchtet das IT-Administrator Magazin den Themenschwerpunkt "Monitoring & Support". Darin zeigt die Redaktion unter anderem, wie Sie die Leistung von Terminalservern im Blick behalten und welche Neuerungen das Ticketsystem OTRS 8 mitbringt. Auch die Überwachung von USV-Anlagen darf nicht fehlen. In ...