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

  • thetvMt2
    hat ein Thema erstellt probleme mit einbinden von dateien via include.

    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>"); 

  • SebTM
    antwortet
    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.

    Einen Kommentar schreiben:


  • thetvMt2
    antwortet
    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.

    Einen Kommentar schreiben:


  • Unlikus
    antwortet
    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.

    Einen Kommentar schreiben:


  • tk1234
    antwortet
    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.

    Einen Kommentar schreiben:

Lädt...
X