Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Variablen in PHP5 anders als in 4

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Variablen in PHP5 anders als in 4

    Ein Kunde sagte mir, dass er mit einem Mini-PHP Skript von mir Probleme hat, weil unter PHP 5 Variablen (angeblich) in Hochkommta geschrieben werden müssen.

    Falsch:
    PHP-Code:
    $Ergebnis Import2Xmlab($_GET[last_id],$table1,$steuerfeld); 
    Richtig:
    PHP-Code:
    $Ergebnis Import2Xmlab($_GET['last_id'],$table1,$steuerfeld); 
    In diesem Fall 'last_id'



    Stimmt das? Ich habe zwei Server, einen mit PHP 4, einen mit PHP 5 und auf beiden läuft das Skript ohne die Hochkommata.

    Gruß
    Eviandem

  • #2
    wahrscheinlich erscheint eine notice, die besagt dass der interpreter davon ausgeht, dass last_id eine konstante ist und dass 'last_id' erwartet wird...
    das ist aber nichts neues, belegt einfach nur schlechten Programmierstil, der nun eben gerügt wird...
    also mal error_reporting anschauen

    Kommentar


    • #3
      Zitat von Eviandem Beitrag anzeigen
      Ein Kunde sagte mir, dass er mit einem Mini-PHP Skript von mir Probleme hat, weil unter PHP 5 Variablen (angeblich) in Hochkommta geschrieben werden müssen.
      Das stimmt natürlich nicht.
      Aber in diesem Beispiel gehts auch nicht um eine Variable, sondern um den Index eines assoziativen Arrays. Der der ist bekanntlich ein String, und diese werden - sofern es sich nicht um Variablen handelt - in Anführungszeichen geschrieben.
      Gruss
      L

      Kommentar


      • #4
        Generell ist last_id hier schonmal keine Variable sondern ein Array-Key und das heisst es ist ein String, die schreibt man generell in einfache oder doppelte Hochkomma, sonst wäre es eine undefinierte Konstante, das mag in der ein oder anderen PHP-Konfiguration zu Problemen führen, weil schlecht programmiert...

        [edit]
        verdammt, da waren gleich 2 Leute schneller

        Kommentar


        • #5
          OK, habe ich verstanden, jetzt noch folgende Fragen:

          1. Wieso tritt das nur bei einem Kunden auf? Wieso nicht bei mir, wieso nicht bei verschiedenen anderen?

          2. error_reporting: Wo gibt’s das? Wie mache ich das?



          Gruß
          Eviandem

          PS: Bin echt erstaunt, wie prompt hier in diesem Forum geholfen wird

          Kommentar


          • #6
            Zitat von Eviandem Beitrag anzeigen
            2. error_reporting: Wo gibt’s das? Wie mache ich das?

            Das ist nicht dein Ernst oder? Und du hast KUNDEN? AUTSCH!!!!

            [edit]
            Hättest du das hier gelesen dann siehst du gleich den ersten Punkt error_reporting

            Kommentar


            • #7
              Ja, aber keine PHP Kunden.

              Das ist ja auch genau das Problem: Ich habe die Sachen auch gar nicht selber programmiert, weil ich von php keine Ahnung habe.

              Ich hatte vor einiger Zeit eine Schnittstelle programmieren lassen, mit der ich einfach Daten aus einer MySQL Datenbank auf dem Webserver in XML Dateien schreibe.

              Mehr nicht. Diese 5 Seiten liefen eine ganze Zeit lang gut, nur eben jetzt gibt es Fehlermeldungen. Der Programmierer, der mir das damals gemacht hat, ist nicht mehr erreichbar <nein, er ist nicht ins Ausland geflüchtet, wegen der vielen Reklamationen>

              So, und dann habe ich gedacht: Mich interessiert php schon seit langen, jetzt ist eine gute Gelegenheit, sich da einzuarbeiten.

              Gruß
              Eviandem

              Kommentar


              • #8
                Dann fang am besten ganz von vorne an und gewöhn dir nicht den schlechten Stil deines Ex-Programmierers an...

                Kommentar


                • #9
                  Ja, danke für den Hinweis.

                  Zurück zum Problem:

                  PHP-Code:
                  error_reporting(E_ALL); 

                  Wirft bei mir keinen Fehler aus, wenn ich das Dokument mit dem Code

                  PHP-Code:
                  $Ergebnis Import2Xmlab($_GET[last_id],$table1,$steuerfeld); 
                  ausführe.


                  Aber da sollte einer kommen?


                  Gruß
                  Eviandem

                  Kommentar


                  • #10
                    error_reporting(E_ALL|E_STRICT);

                    so müsste einer kommen...

                    Kommentar


                    • #11
                      Und wenn immer noch nicht, dann vorher ein
                      PHP-Code:
                      ini_set('display_errors'1); 
                      Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

                      Kommentar


                      • #12
                        Das hats gebracht! Viele schöne Fehlermeldungen


                        Danke
                        Eviandem

                        Kommentar


                        • #13
                          ich markiere es mal als erlegit, bitte nächstes mal selber dran denken

                          Kommentar


                          • #14
                            Der Vollständigkeit halber (diese Informationen findest Du auch im PHP Manual):

                            1. Arrays unterstützen als Schlüssel ausschließlich Strings (Zeichenketten) und Integer Typen.
                            2. PHP nimmt bei Bedarf implizite Type-Castings vor, d.h. wandelt Typen in das gerade benötigte Format um. Ähnlich verhält es sich hier: Ein String wird erwartet, angegeben ist eine Konstante (alle Schlüsselwörter die nicht reserviert sind, ein vorangestelltes $ besitzen oder in Stringbegrenzer eingeschlossen sind, werden als solche interpretiert). Da die Konstante nicht definiert ist, erfolgt eine Translation in einen String-Wert.
                            3. Schlechter Stil ist das Nicht-Verwenden von Stringbegrenzern, weil
                            - theoretisch eine gleichnamige Konstante im System definiert sein kann
                            - spätere PHP Versionen die automatische Umwandlung nicht mehr unterstützen könnten
                            4. Lt. Handbuch wird eine E_NOTICE erzeugt.
                            [COLOR="#F5F5FF"]--[/COLOR]
                            [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                            [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                            [COLOR="#F5F5FF"]
                            --[/COLOR]

                            Kommentar

                            Lädt...
                            X