[Variablen] Globals sind nicht in Funktion verfügbar :/

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

  • [Variablen] Globals sind nicht in Funktion verfügbar :/

    Hallo ihr Lieben

    erstmal wünsche ich euch allen ein gesundes neues Jahr !

    Nun zu meinem Problem.
    Um mir später einiges an Arbeit zu erleichtern, arbeite ich gerade daran meine Seite etwas umzustellen. So verwende ich zB nun ein Config DB in der bestimmte Sachen (verschiedene DB Namen) gespeichert sind.
    Sind der Sache soll sein, dass ich nun nicht mehr bei SQL Abfragen SELECT * FROM login ... sondern SELECT * FROM {$db['login']} verwende.
    Die Daten dafür frage ich vorher in einer Funktion ab und speicher sie dann als GLOBALS['db']. Soweit so gut ... in normalen Abfragen funktioniert das auch einwandfrei. Nur leider stehen mir diese Variablen in anderen Funktionen nicht zur Verfügung. Kann mir jmd. sagen warum

    Zusammengefasst: die VAR kann ich in SQL Abfragen verwenden. Sobald diese SQL Abfragen allerdings innerhalb einer anderen Funktion sind, klappt es nicht mehr

  • #2
    frohes neues!

    speicherst du die variablen wirklich global.

    Kommentar


    • #3
      ja ... hier is der code der in meiner index.php steht

      PHP-Code:
      $GLOBALS['db'] = get_db(); 
      und hier is meine fkt.
      PHP-Code:
      function get_db()
         {
         
      $query "SELECT * FROM config WHERE id = '1'";
         
      $result mysql_query($query);
         while (
      false !== $row mysql_fetch_object($result))
            {
            
      $return = array();
              
            
      $return['config'] = $row->$db_config;
            
      $return['member'] = $row->db_member;
            ....
            ....
            ....
            return 
      $return;    
            }
         } 
      und wie gesagt ... in meinen dateien wo ich ohne funktionen arbeite funktioniert es ja auch
      Zuletzt geändert von DasUNBEKANNTe; 01.01.2004, 18:06.

      Kommentar


      • #4
        was soll an dem beispiel jetzt konkret passieren und was passiert?

        Kommentar


        • #5
          sollte das nicht $[COLOR=red]_[/COLOR]GLOBALS heissen ?
          Kissolino.com

          Kommentar


          • #6
            Laut Manual nicht.

            Kommentar


            • #7
              auf anderen seiten finde ichs mit '_', allerdings in den UCN *verwirrtichbin*
              aber du hast recht.
              Kissolino.com

              Kommentar


              • #8
                OffTopic:
                Ich hab auch extra nachgesehen

                Aber ich kann das Problem in dem Beispielcode nicht erkennen.

                Kommentar


                • #9
                  also wenn ich $_GLOBALS schreibe is dat ganze nimmer blau sondern schwarz ... kann also wohl nich ganz hinhauen oda ?

                  die beiden codeschnipsel sind keine bsp. ... es sollte nur zeigen wie ich das gemacht habe und das es vor allem korrekt is

                  nun zu nem bsp:
                  wenn ich in einer datei ganz normal eine sql abfrage mache und die variable nutze ( SELECT * FROM {$db['login']} ) dann erfolgt die ausgabe ohne probleme.
                  wenn ich eine solche abfrage oder das eintragen von daten innerhalb einer Funktion habe, geht es nicht mehr ... dann kommt folgende Fehlermeldung ( Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in ). Sobald ich statt der VAR wieder nur login (also den Namen der DB) schreibe geht es.
                  also kann er die Variablen innerhalb einer Funktion nicht deuten

                  Nachtrag:
                  muss ich vielleicht irgendwas deklarieren, dass der in der Funktion mit den geschweiften Klammern klarkommt oda so ? also hiermit: {$db['login']}
                  Zuletzt geändert von DasUNBEKANNTe; 01.01.2004, 20:25.

                  Kommentar


                  • #10
                    also wenn ich $_GLOBALS schreibe is dat ganze nimmer blau sondern schwarz ... kann also wohl nich ganz hinhauen oda ?
                    Oh, du verlässt dich auf den Highlighter? Ich würd meine Codes immer Testen und nicht nur gucken, ob er im Programm schöne Farben hat

                    die beiden codeschnipsel sind keine bsp. ... es sollte nur zeigen wie ich das gemacht habe [...]
                    Die Zeigen aber was anderes, als du hier beschreibst.

                    Verrate mir aber vorallem Mal, wie du auf die Idee kommst, dass $db['login'] global ist!!!

                    es sollte [...] das es vor allem korrekt is
                    Das ist es mit sicherheit nicht, sonst würds ja klappen

                    Kommentar


                    • #11
                      mmh wenn $db['login'] nich global is nachdem ich das array in der index so speicher: $GLOBALS['db'] = get_db; dann weiß ich auch nimmer
                      wie muss ich es denn dann speichern, sodass es global is ?

                      Kommentar


                      • #12
                        überleg mal bitte, genau, was du da machst.

                        wenn ich $GLOBAL = 'hallo'; mache. Warum sollte hallo dann global sein? Das ist ne ganz normale Variablenzuweisung oder nicht. keine Funktion kein gar nichts. das heißt auf hallo selber wird kein einfluss genommen. aber das hallo wird in GLOBAL gespeichert, wol?

                        Kommentar


                        • #13
                          also mit $GLOBALS['db'] = get_db(); hole ich die ganzen gespeicherten daten aus meiner funktion get_db() (dort sind die daten erst im array gespeichert worden und dann per return zurückgegeben worden). Diese Daten werden dann in $GLOBALS['db'] gespeichert und sollten normalerweise mit $db['var'] abrufbar sein, was soweit funktioniert außer in funktionen.
                          und ich habe eigentlich gedacht, dass die daten jetz global gespeichert sind. Wenn das nicht der fall sein sollte, wüsste ich gerne wie ich sie dann speichern muss um sie global abrufen zu können.

                          im übrigen habe ich mal $_GLOBALS ausprobiert (also mit Unterstrich). Dann funktioniert meine ganze seite nicht mehr.

                          Kommentar


                          • #14
                            denk bitte nochmal drüber nach, was du grade geschrieben hast. Das wiederspricht sich wie sonst was, oder findest du nicht?

                            Diese Daten werden dann in $GLOBALS['db'] gespeichert und sollten normalerweise mit $db['var'] abrufbar sein, was soweit funktioniert außer in funktionen.

                            Kommentar


                            • #15
                              naja ich bin kein profi ... ich mach das noch nich lange
                              wo is da jetz der fehler ... sind die daten nich global gespeichert oder rufe ich sie falsch ab oda was

                              Nachtrag:
                              is es richtig wenn ich die var mit $GLOBALS['db']['login'] abrufe ? Das geht nämlich nach einem kurzen test ebend.
                              Zuletzt geändert von DasUNBEKANNTe; 01.01.2004, 21:11.

                              Kommentar

                              Lädt...
                              X