Ausgabe mal mit Leerzeichen mal ohne??
Moses
- datenbank
Liebes Forum,
möchte mal wieder eure Glaskugeln befragen...
Ich habe eine Datenbank (MySql irgendeine 4er Version) da lese ich via PHP Daten aus, die dann in eine CSV Datei geschrieben werden. Soweit so gut, nun habe ich eine Zelle in einer Tabelle in der ich Bestellnummern geschrieben habe - und diese Info wird unterschiedlich aus gelesen
mal
ABC 1234-5
mal
ABC6789-5
also einmal mit Leerzeichen das nächste mal ohne Leerzeichen.
Die Eingabe in die Datenbank erfolgt immer auf dem gleichen Wege und wenn ich mir die Daten anschaue ist auch immer das Leerzeichen vorhanden. Des weiteren ist keine Regelmäßigkeit zu erkennen, ob nun mit oder ohne Leerzeichen ausgelesen wird - d.h. es kann passieren, daß die gleiche Nummer mal mit und mal ohne Leerzeichen ausgelesen wird.
Irgendjemand eine schlaue Idee woran das liegen könnte? Oder noch besser wie man das abstellen kann? - Allerdings: "Nummer einfach ohne Leerzeichen eingeben" ist keine Lösung - muß aus verschiedenen Gründen die jetzt zu weit führen würden das Leerzeichen haben.
Wäre echt dankbar wenn ihr mir helfen könntet,
Moses
echo $begrüßung;
[...] diese Info wird unterschiedlich aus gelesen [...] also einmal mit Leerzeichen das nächste mal ohne Leerzeichen.
[...] und wenn ich mir die Daten anschaue ist auch immer das Leerzeichen vorhanden.
Wie schaust du dir die Daten an, ohne sie dafür auszulesen?
Irgendjemand eine schlaue Idee woran das liegen könnte?
Nun, wenn sie beim "Anschauen" richtig sind, muss es wohl am "Auslesen" liegen.
möchte mal wieder eure Glaskugeln befragen...
Die waren nichtmal früher besser.
echo "$verabschiedung $name";
Hallo dedlfix,
Wie schaust du dir die Daten an, ohne sie dafür auszulesen?
Ist natürlich richtig... Also wenn ich sie mir über PHPMYADMIN anschaue sind alle Eingaben richtig. Und auch wenn ich mir die Nummern auf der Website anschaue (z.B. Suche nach Nummer) sind die immer mit Leerzeichen - ohne Leerzeichen kommt nicht vor (wird auch nicht gefunden).
Nun, wenn sie beim "Anschauen" richtig sind, muss es wohl am "Auslesen" liegen.
Das hatte ich schon vermutet, aber wenn sie immer falsch ausgelesen würden oder einzelne falsch ausgelesen würden könnte ich das noch irgendwie nachvollziehen da aber keine Regelmäßigkeit festzustellen ist kapiere ich das nicht...
Kann es an der Verschlüsselung liegen? Nachdem die Daten ausgelesen worden, werden sie in eine csv.Datei geschrieben diese wird dann verschlüsselt (über mcrypt) und via ftp übertragen auf der anderen Seite entschlüsselt und bearbeitet und hier laufen dann die Fehlermeldungen auf.
Also gehe ich davon aus, daß das Leerzeichen bei Verschlüsselung und Entschlüsselung manchmal anders interpretiert wird. Obwohl, dann müßten ja auch in den anderen Variablen die Leerzeichen fehlen - tun sie aber nicht??? Ist es mir ein großes rätsel ;-(
Trotzdem Danke,
Moses
echo $begrüßung;
Nun, wenn sie beim "Anschauen" richtig sind, muss es wohl am "Auslesen" liegen.
Das hatte ich schon vermutet, aber wenn sie immer falsch ausgelesen würden oder einzelne falsch ausgelesen würden könnte ich das noch irgendwie nachvollziehen da aber keine Regelmäßigkeit festzustellen ist kapiere ich das nicht...
Eine generelle Datenverfälschung bei den auslesenden Funktionen wäre sicher nicht unbemerkt geblieben, so häufig wie dieser Vorgang in der freien Wildbahn stattfindet.
Kann es an der Verschlüsselung liegen? Nachdem die Daten ausgelesen worden, werden sie in eine csv.Datei geschrieben diese wird dann verschlüsselt (über mcrypt) und via ftp übertragen auf der anderen Seite entschlüsselt und bearbeitet und hier laufen dann die Fehlermeldungen auf.
Selbstverständlich. Jeder falsch ausgeführte Verarbeitungsschritt kann eine Datenverfälschung zur Folge haben. Als Tipp kann ich dir nur geben, die Daten direkt nach jedem Bearbeitungsschritt zu begutachten. Notfalls mit einer Ausgabe der Hex-Werte, denn Freiraum ist nicht immer Leerzeichen, und manchmal steht zwischen zwei Zeichen ein unsichtbares (das kann dann aber kein Leerzeichen sein).
CSV ist auch kein wirklich genormtes Format. Normalerweise gibt es aber Regeln, wie mit bestimmten Zeichen umzugehen ist. Siehe http://de.wikipedia.org/wiki/CSV_(Dateiformat).
mcrypt() ist auch ein getestetes Verfahren, einen Datenverlust, und noch dazu in Form eines Leerzeichens, halte ich nicht für sehr wahrscheinlich.
FTP hat zwei Übertragungsmodi, Binär und ASCII. Verschlüsselte Daten sind als Binärdaten zu betrachten. Eine Zeilenendezeichenbehandlung, wie sie bei ASCII stattfindet dürfte mehr Schaden anrichten als nur verschwundene Leerzeichen. Deshalb vermute ich, dass ihr Binär einsetzt und halte die FTP-Übertragung auch nicht als die Ursache. Um ganz sicher zu gehen, kann man ja Prüfsummen vor und nach der Übertragung berechnen und diese vergleichen (beispielsweise einen MD5-Hash berechnen).
Die Idee mit der Prüfsumme lässt sich natürlich auch auf alle anderen Stellen des Übertragungsweges anwenden. Also vor jeder Behandlung und nach jeder "Ent"handlung die Prüfsummen vergleichen, sollte doch dem Aufspüren des Verursachers dienlich sein.
echo "$verabschiedung $name";