Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Habe ein kleines Problem, wir haben seit lägerem im Intranet u.a. HTML-Formulare mittels PHP erzeugt und die laufen auch ganz gut. Nun ist es aber vorgekommen das in bestimmten Feldern mal mehr als 255 Zeichen eingetragen wurden/werden. Fakt ist es kommen aber nur 255 Zeichen in der DB an, was definitiv nicht an der DB liegt (das Feld hält wesentlich mehr aus). Es scheint also, als ob in die PHP-Variable nur 255$ Zeichen "reinpassen" und dann einfach abgeschnitten wird ?

Wie kann ich das umgehen bzw. richtigstellen :confused:

Lo Schledo,

Eine normale php Variable verträgt ganz sicher mehr als 255 zeichen. Hast du die Variable vielleicht irgendwie auf 255 beschränkt ? (Falls das in PHP überhaupt geht).

Falls es wirklich nicht an der Datenbank liegt (Feld als varchar deffiniert ?) Kann auch sein, daß das Textfeld des HTML Formulares auf 255 Zeichen beschränkt ist.

Gruß

Fraggy

  • Autor

Also so ähnliche Gedanken habe ich mir auch schon gemacht, aber woran liegt das nun ?

A.Datenbank. Sicherlich nicht, denn das Feld ist mit nvarchar 1000 deklariert.

B. HTML-Textarea. Möglicherweise, hat da jemand ne Ahnung ?

C. PHP-Variable. Glaub ich einfach nicht.

Das Problem / Phänomen muss doch bekannt sein :confused:

Hallo,

nvarchar wird von PHP nicht unterstützt.

http://bugs.php.net/bug.php?id=8055

Ob das von der PHP Version abhängt, weiss ich nicht. Musste mal notfalls mit ner neueren Version testen.

Gruß Jaraz

Dann ist das ja klar...

Liegt dann doch an der Datenbank .. deklarier das Feld halt mal probeweiese als Text ...

  • Autor
nvarchar wird von PHP nicht unterstützt.

Ähm, nicht unterstüzt kann jawohl auch nicht wirklich sein, denn ich verwende ziemlich viele andere Felder auch mit nvarchar und das problemlos. Ich mache jetzt mal ein paar Test die mir weiterhelfen könnten ...

  • Autor

Also ich habe jetzt einige Tests gemacht und festgestellt, das die Texte eigentlich ordentlich in die Datenbank geschrieben werden, der Fehler liegt mehr beim Auslesen/Anzeigen der Daen, da wird nämlich "abgeschnitten" nach dem 255ten Zeichen.

Denke das dies wohl an der Inkompatibilität mit nvarchar liegen könnte (die dann nur ab 255 Zeichen vorhanden wäre) daran liegen könnte.

Jetzt habe ich allerdings eine Fragebezüglich der Umstellung auf den Feldtyp Text. Ich hatte vorher bzw. habe im Moment den Typ nvarchar 1000, was ausreicht, wenn ich allerdings auf TExt umstelle, so habe ich maximal Text 16 im "Angebot", wieviele Zeichen sind das letztendlich bzw. wie ist diese Größenangabe gemeint ? Nicht das mit das was von den aktuellen Texten abgeschnitten wird, das wäre ziemlich schlimm.

Hallo,

wieso nimmst du nicht varchar?

Übersicht der einzelnen Datentypen:

http://www.berndjungbluth.de/sqlfaq/faqb4.htm

Original geschrieben von Schledo

Nicht das mit das was von den aktuellen Texten abgeschnitten wird, das wäre ziemlich schlimm.

Ich hoffe ja stark du sicherst die Datenbank bevor du was an der Tabellenstruktur änderst.

Gruß Jaraz

:rolleyes: öööhm -.. Was für eine Datenbank benutzt du da eigentlich ??
  • Autor

Verwenden im Betrieb den SQL-Server 2000, hat schon seine Gründe ...

Stimmt eigentlich, das mit varchar wäre ne Möglichkeit :rolleyes: Werde ich gleich mal (natürlich erst nach der Mittagspause) versuchen ...

  • Autor

Versuch mit varchar fehlgeschlagen, in der DB stehen nach wie vor die Texte mit weit mehr als 255 Zeichen drinne, nur beim Auslesen kommen in den Variablen nur 255 an ....

Weitere Ideen :confused:

Kannst du die Codezeilen zum Auslesen mal posten per copy&paste?

Am besten gleich die komplette Datei posten, wenn da nichts Firmeninternes drinsteht. (Ansonsten die Stellen weglassen)

Denn vielleicht liegts ja doch ganz woanders.

CU

Tachyoon

  • Autor

Die ganze Ausgabedatei ist denke ich durch viele Sonderoptionen zu groß für hier, aber die wesentlichen Auslesevorgänge aus der DB sind diese (auf wesentliche gekürzt) :

$sqlanfrage = "SELECT TOP $limit * FROM $tabelle WHERE $bedingung AND $id NOT IN (SELECT TOP $offset $id FROM $tabelle WHERE $bedingung ORDER BY $sortierung) ORDER BY $sortierung";

$ergebnis = mssql_query($sqlanfrage)

$zeile = mssql_fetch_row($ergebnis)

... die entspr. Text werden dann in einer HTML-Tabelle / Zelle ausgegeben ...

Grundlegende Fehler ausgeschlossen, denn Skript schon recht lange in ständigem Betrieb. (Und nicht wundern warum ich oben eine Verschachtelung gewählt habe anstatt einfach nur die LIMIT-Klausel, diese gibt es nämlich bei meinem SQL-Server nicht ;) )

Hast du auch mal ne Extra-PHP Datei erstellt und dir $ergebnis bzw. $zeile alleine anzeigen lassen (ohne alles andere - Minimaleinstellug halt)? Noch immer dasselbe?

Wenn ja, mußt du wohl oder übel mal alle textartigen Variablentypen zum Auslesen (z.B. auch Memo) durchprobieren.

Wenn nicht, stellst du vielleicht mit einer der angesprochenen Sonderoptionen die maximal verfügbare (oder auch nur anzeigbare?) Länge auf 255 Zeichen ein. Dann darfst du die große Datei durchsuchen.

CU

Tachyoon

  • Autor

Nein, das hilft mir alles nicht weiter. Einzel ist es genau das selbe Problem. Und die angesprochenen Sonderoptionen wirken sich nur auf den Seitenaufbau anhand der Daten aus und nicht auf die Daten selbst.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.