Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

Verzweiflung macht sich breit!

Hallo!

Ich kapier es nicht mehr, folgendes habe ich tausend mal schon gemacht, immer hat es funktioniert! Warum jetzt auf einmal nicht mehr?

Code:                   In Zwischenablage kopieren (nur IE)
1">

Das ist doch das einfachste der Welt!

Das Feld in der Konfigurationstabelle heißt ganz sicher "std_sprache", wenn ich es mit "echo" anzeigen lasse, dann kommt nichts! Obwohl ich mit der gleichen Abfrage auch ein Copyright-Info auslesen lasse, welches problemlos angezeigt wird! Bei dem Sprachfeld handelt es sich um ein ENUM-Feld, beim Copyright um ein VARCHAR-Feld.

Er geht mir immer auf die letzte if-Abfrage, und zeigt mir die sonstige Sprache an, obwohl ich in der Config auf "DEU" für Deutsch geschaltet habe.

Bin mit meinem Latein am Ende!

Gruß
Hans
Hier gehts zum Orginal Eintrag "Verzweiflung macht sich breit!" im Forum

Antworten

Zitat:
...wenn ich es mit "echo" anzeigen lasse, dann kommt nichts!
Zitat:
Er geht mir immer auf die letzte if-Abfrage, und zeigt mir die sonstige Sprache an, obwohl ich in der Config auf "DEU" für Deutsch geschaltet habe.
Das widerspricht sich doch. Ganz sicher kein Tippfehler?


2.

[1] Eigentlich dürfte das so gar nicht funktionieren. - $cfgadmdat ist doch ein Hash. Der Zugriff auf die Index-Keys müßte dann nach meiner Meinung per String erfolgen, also mit $cfgadmdat['std_sprache'].

[2] Hast Du mal Dein ErrorReporting in der php.ini überprüft? Wenn keine Browserausgabe erfolgen soll, dann zumindest loggen und das Log in solchen Situationen im Auge behalten.

[3] Deine Variante ist nicht allzu fehlertolerant. Ich würde das z.B. so machen:

Code:                   In Zwischenablage kopieren (nur IE)
2">

Ist kürzer, lesbarer und Du fängst mit dem default-Zweig alle Sprachen/Fehlbelegungen außer DEU und ENG ab. Du kannst natürlich auch einen Zweig für SON bauen und im default-Zweig eine Fehlermeldung generieren. Außerdem würde ich Werte aus Conf-Files sicherheitshalber immer normalisieren (hier in Großbuchstaben wandeln), um eine saubere Vergleichsbasis zu haben. In einem Jahr denkst Du beim Ändern der Conf nicht mehr daran, DEU groß zu schreiben und Deine Auswertung im Script geht schief.

Bis denn,
Count.Zero

PS: Ich hab' meinen Vorschlag nicht getestet. Wenn's klemmt, in die PHP-Doku schauen oder hier weiter posten ...


3.

Hallo count.zero,

erst mal danke für den Tipp! Funktioniert prima!

Aber mein Problem liegt darin, dass ich je eine Definitionsdatei für die Begriffe in Deutsch, Englisch und Sonstige erstellt habe, die jeweils so aussehen:

Code:                   In Zwischenablage kopieren (nur IE)
3">

Die Variable $headline1 füge ich dann in der Configurationsdatei folgendermaßen ein:

Code:                   In Zwischenablage kopieren (nur IE)
4">

Leider bekomme ich keine Anzeige! Ich werd noch irre, das macht man doch 100.000 mal am Tag, und jedes mal funktioniert es, warum jetzt nicht?

Der include für die Languagedatei funktioniert, sonst würde ich ja ne Fehlermeldung bekommen.

Vielleicht kannst Du mir ja helfen.

Gruß
Hans


4.

Das wird so nix ;-)

Zitat:
<?php
<td class="tdheastyle" style="text-align: center;" colspan="4"><? echo $headline1 ?></td>
?>

Probier's mal mit

Code:                   In Zwischenablage kopieren (nur IE)
5">

PHP kann mit Deiner HTML-Tabellenzelle wenig anfangen (müßte aber einen Fehler melden) und dürfte gegen Ende der Zeile mit dem zweiten Wechsel in den PHP-Context völlig irritiert sein ;-)

Noch eine Anmerkung zur Fehleranzeige. Fehler bekommst Du nur angezeigt, wenn die entsprechenden Parameter in der php.ini gesetzt sind. In einer Produktivumgebung sollte keinesfalls eine Ausgabe auf den Bildschirm, sondern ausschließlich in ein regelmäßig gelesenes Log erfolgen. Schalte mal spaßeshalber die Fehlerausgabe mit

error_reporting = ~E_ALL

oder

display_errors = off
display_startup_errors = off

ab. Nicht vergessen, den Apachen zu restarten, damit er die geänderte Konfiguration auch wahrnimmt. Baue dann einen kräftigen Fehler in ein funktionierendes Script ein und laß es im Browser laufen. Du wirst lediglich mit einem leeren Fenster, aber keiner Fehlermeldung beglückt. IDE's wie ZendStudio lassen sich zum Glück von den Einstellungen der php.ini nicht beeindrucken ;-) Dort werden die Fehler im Debugging sauber präsentiert.

Bis denn,
Count.Zero

PS#1: Ist der class-Name "tdheastyle" Absicht oder hast Du da noch einen Tippfehler drin und es sollte "tdheadstyle" heißen?

PS#2: Laß' Dir mal die Variable direkt nach dem Include ausgeben und nicht erst mitten im HTML-Context. Dort siehst Du am ehesten und unverfälscht, was drin steht. Wenn die Ausgabe dort stimmt, schiebst Du diese Debug-Zeile immer weiter. Könnte sein, daß Du Dir den Wert irgendwo überschreibst ...

PS#3: Schau' Dir mal im Mozilla/Firefox mit aktiviertem Webdeveloper-Plugin die HTML-Struktur Deiner Seite an ([Outline Block Level Elements] oder [Outline Table Cells]). Notfalls tut's auch ein direkter Blick in den Quelltext im Browser. Ist dort überhaupt eine vier Spalten breite Zelle, wo Du sie erwartest? - So würde ich zumindest ans Debugging rangehen ;-)


Hier gehts zum Orginal Eintrag "Verzweiflung macht sich breit!" im Forum
 
phpforum.de | Impressum