Ankündigung

Einklappen
Keine Ankündigung bisher.

probleme mit einbinden von dateien via include

Einklappen

Neue Werbung 2019

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

  • probleme mit einbinden von dateien via include

    Hallo,
    ich habe ein problem beim einbinden von einer Datei:
    Die Datei ist doch eingebunden oder? (Anfänger)

    PHP-Code:
    #Errors:
    [04-Jan-2015 19:45:23 Europe/BerlinPHP Notice:  Undefined variabledb in C:\xampp\htdocs\classes.php on line 18
    [04-Jan-2015 19:45:23 Europe/BerlinPHP Fatal error:  Call to a member function query() on a non-object in C:\xampp\htdocs\classes.php on line 18

    #Datei: classes.php :
    require_once ('/incs/config.php');
        function 
    GetPVar($name,$variable){
            if(empty(
    $name)) die("Name nicht Vorhanden");
            
    $sql $db->query("SELECT $variable FROM samp_players WHERE SpielerName=$name");#die zeile hier
            
    $num $sql->num_rows;
            if(
    $num == 0) die("Die Spalte existiert nicht");
            return 
    $sql->fetch_object();
        }
    #Datei config.php:

        
    $db = @new mysqli('ip''name''pw''db_name');
        if(
    mysqli_connect_errno()== 1) die("Die Datenbank konnte nicht erreicht werden. Folgender Fehler trat auf: <strong>' .mysqli_connect_errno(). ' : ' .mysqli_connect_error(). '</strong>"); 


  • #2
    Zitat von thetvMt2 Beitrag anzeigen
    Die Datei ist doch eingebunden oder? (Anfänger)
    Das ist in dem Fall egal ob die Datei eingebunden ist oder nicht: innerhalb der Funktion sind Variablen die außerhalb der Funktion definiert wurden nicht vorhanden.

    Kommentar


    • #3
      also wenn die Funktion require die Datei nicht laden kann, gibt es immer einen Fatal Error, eingebunden ist die also, aber es scheint nicht das drinzustehen, was du erwartest.
      Fatal Error: Windows wird gestartet

      Wie administriert man ein Netzwerk: Beispiel

      Kommentar


      • #4
        ich hab es momentan so, dass ich alle Funktionen in der "classes.php" habe.
        Verbindung zur Datenbank herstellen, hab ich in der "incs/config.php".

        classes.php:
        PHP-Code:
        <?php
            
            
        function player_variable($name){
                
        $sql $db->query("SELECT * FROM samp_players WHERE SpielerName=$name");
                
        $num $sql->num_rows;
                if(
        $num 0){
                    while(
        $row=$sql->fetch_object()){
                        
        $playervar['SpielerName'] = $row->SpielerName;
                        
        $playervar['Passwort'] = $row->Passwort;
                    }
                }
            }
            
            
            function 
        GetPVar($name,$variable){
                if(empty(
        $name)) die("Die Variable ist Leer");
                
        $query $SQL->query("SELECT $variable FROM samp_players WHERE SpielerName=$name");
                
        $num $query->num_rows; if($num == 0) die("Die Spalte existiert nicht");
                return 
        $sql;
            }
        ?>
        config.php:
        PHP-Code:
        <?php
            
            defined
        ('SECURE') or die('Der Zugriff von Unbefugten auf diese Datei ist nicht gestattet!');

            
        error_reporting(E_ALL); 
            
        ini_set('display_errors'true);
            
            
        $config['sql_hostname'] = "llllll";
            
        $config['sql_username'] = "llll";
            
        $config['sql_password'] = "lll";
            
        $config['sql_database'] = "ll";

            
        $SQL = new MySQLi($config['sql_hostname'], $config['sql_username'], $config['sql_password'], $config['sql_database']);
            if(
        mysqli_connect_errno() != || !$SQL->set_charset('utf8' )) {
                die(
        'ERROR: Es konnte keine Verbindung hergestellt werden!');

            }

        ?>
        Und ich wollte die Function "GetPVar" in der Index.php aufrufen:
        PHP-Code:
        <span class="level">LEVEL <b>
                                                        <?php 
                                                            
        require_once ('incs/config.php');
                                                            require_once (
        'classes.php');
                                                            
                                                            echo 
        GetPVar("thetvMt2","Level"); 
                                                        
        ?></b></span>
        Dabei kommt mir der Error:
        Code:
        Notice: Undefined variable: SQL in C:\xampp\htdocs\classes.php on line 17
        
        Fatal error: Call to a member function query() on a non-object in C:\xampp\htdocs\classes.php on line 17
        
        Zeile 17:
        $query = $SQL->query("SELECT $variable FROM samp_players WHERE SpielerName=$name");
        Ich komme immernoch nicht dahinter, wo das problem liegt.

        Kommentar


        • #5
          Hallo,

          ich würde dir raten ordentliche und korrekte Dateinamen zu verwenden! Eine Sammlung von "functions" in eine "classes.php" zu packen ist unsinn weil jeder andere Entwickler davon ausgeht, das du dort Klassen speicherst. Nur für's Protokoll: Mehr als eine Klasse in einer Datei halte ich auch für Bad Practice.

          Zu deinem Problem:
          Du versuchst die Variabele $SQL in einer Funktion nutzen, innerhalb von Funktionen sind nur die Variabelen verfügbar die du als Parameter übergeben hast oder die du dort definierst. Es gibt zwar die Möglichkeit via "global $variabele;" eine Variabele von außerhalb in der Funktion verfügbar zu machen das ist aber Bad Style!

          Auch wenn es ebenfalls (vgl. einiger Beiträge hier im Forum) als Bad Style angesehen wird denke ich das für die die Lösung mit einer Datebank-Klasse welche das DB-Objekt "verwaltet" am sinnvollsten ist. (Siehe: http://www.php.de/php-einsteiger/942...nstruktor.html)

          Ich glaube der Umstieg von "nichts" auf dieses Singleton ist schon schwierig genug - wenn ich dir jetzt rate dein Projekt komplett auf OOP umzustellen und dann Dependecy Injection u.ä. zu nutzen - wird das nicht das sein was du von uns willst.
          Gruß,
          SebTM

          Kommentar

          Lädt...
          X