Zurück tutorials.de > Programming > PHP

 
 
Hallo und herzlich willkommen! Tutorials.de ist eine Hilfe-Community mit dem Motto User helfen Usern. Als Gast verfügst Du über Schreibrechte in unseren Foren und Blogs. Du kannst dich aber gerne auch kostenlos registrieren und Teil unserer Gemeinschaft werden! Viel Spaß & Erfolg bei der Vermehrung deines Wissens :-)

Themen: 242.975 | Beiträge: 1.352.293 | Mitglieder: 169.418 (Stand 28.01.10) | Fragen zur Nutzung von Tutorials.de? Nutzungsregeln | Kontaktformular | Impressum

Jubiläums-Countdown 23.02 23.03 23.04 23.05 23.06 23.07 23.08 23.09


4 kostenlose Bücher bei unserer Buch-Verschenkaktion 03/2010
  AntwortAntworten (über Gastzugang)    
  AntwortAntworten (über Gastzugang)    
 
Themen-Optionen Ansicht
Alt 11.03.09, 17:21   #1 (permalink)
Rookie
 
Registriert seit: Nov 2007
Beiträge: 7
Renommee-Modifikator: 0
Disasterp1ece hat eine blütenweiße Weste

Probleme mit include

Guten Tag!

Ich hab ein Problem. Bin ein Anfänger, bitte nicht gleich steinigen, wenn das alles noch etwas wirsch ist. Ich hab eine Funktion geschrieben, die verschiedene Dateien implementieren soll (siehe Anhang). Dies tut sie auch (angeblich Rückgabewert) nur wird mir dann leider diese Fehlermeldung ausgegeben:

Fatal error: Call to a member function query() on a non-object in xxx/functions.php on line 15

line15:
Code:
 $fetch_db = $con->query($select_sql)->fetch_assoc();
$con ist in mysql_connect.php definiert. Diese Datei wird mit meiner eigenen include-Funktion implementiert und sollte ab da an ja eigentlich verfügbar sein:
Code:
  $con = new mysqli($host, $user, $pass, $db);  // Verbindungsdaten sind in   mysql_user.php
   global $con;
Ich dachte erst, dass irgendwelche Dateien nicht richtig includet werden, aber meine Funktion gibt dies aus:

constants.php implementiert.
1
mysql_user.php implementiert.
1
mysql_connect.php implementiert.
1
functions.php implementiert.
1


Ich habe sie so aufgerufen:
Code:
    include '../confidential/include.php';
    include_data('constants', 'mysql_user', 'mysql_connect', 'functions');
Und hier ist mal meine Funktion:
Code:
<?php

    function include_data($constants, $mysql_user, $mysql_connect, $functions)
    {
        //  Funktion dient zur individuellen Implementierung von Dateien.

        // $constants     = 'constants' oder 'no_constants'
        // $mysql_user    = 'mysql_user' oder 'no_mysql_user'
        // $mysql_connect = 'mysql_connect' oder 'no_mysql_connect'
        // $functions     = 'functions' oder 'no_functions'


        // Konstanten

        if($constants == 'constants')
        {
            $ret1 = include 'constants.php';
            echo "constants.php implementiert."."<br>";
            echo $ret1."<br>";
        }

        elseif($constants == 'no_constants')
        {
            // echo "constants.php nicht implementiert."."<br>";
        }

        // Mysql-Daten

        if($mysql_user == 'mysql_user')
        {
            $ret2 = include 'mysql_user.php';
            echo "mysql_user.php implementiert."."<br>";
            echo $ret2."<br>";
        }

        elseif($mysql_user == 'no_mysql_user')
        {
            // echo "mysql_user.php nicht implementiert."."<br>";
        }

        // Mysql-Verbindung

        if($mysql_connect == 'mysql_connect')
        {
            $ret3 = include 'mysql_connect.php';
            echo "mysql_connect.php implementiert."."<br>";
            echo $ret3."<br>";
        }

        elseif($mysql_connect == 'no_mysql_connect')
        {
            // echo "mysql_connect.php nicht implementiert."."<br>";
        }

        // Funktionen

        if($functions == 'functions')
        {
            $ret4 = include 'functions.php';
            echo "functions.php implementiert."."<br>";
            echo $ret4."<br>";
        }

        elseif($functions == 'no_functions')
        {
            // echo "functions.php nicht implementiert."."<br>";
        }
    }
?>
Bevor ich diese Funktion benutzt habe ging alles. Habe die Dateien einfach nacheinander mit include "..." implementiert.
Nur ich dachte mir, dass so etwas vielleicht von Vorteil sein könnte, wenn später diese Dateien nicht gebraucht werden.
Wenn die ganze Idee bescheuert ist oder falls ihr eine bessere habt lasst es mich bitte wissen. Wie gesagt ich lerne im Moment und freue mich über jeden Verbesserungsvorschlag
  Disasterp1ece ist offline  
 
Alt 11.03.09, 17:39   #2 (permalink)
 
Benutzerbild von ZodiacXP  
 
Registriert seit: Mar 2004
Beiträge: 1.743
Renommee-Modifikator: 36
ZodiacXP genießt hohes AnsehenZodiacXP genießt hohes AnsehenZodiacXP genießt hohes AnsehenZodiacXP genießt hohes AnsehenZodiacXP genießt hohes AnsehenZodiacXP genießt hohes AnsehenZodiacXP genießt hohes AnsehenZodiacXP genießt hohes AnsehenZodiacXP genießt hohes AnsehenZodiacXP genießt hohes AnsehenZodiacXP genießt hohes Ansehen

AW: Probleme mit include

Dabei hast du vielleicht den Gültigkeitsbereich (Scope) nicht beachtet.

Stelle dir dein Programm als ein Haus vor, deine Funktion ist ein verschlossener Raum davon.
In dem Raum sagst du jetzt: include "Stuhl"; und es steht ein Stuhl in dem Raum.
Das doofe ist nur das man im Haus nicht an den Stuhl dran kommt, weil der Raum zu ist und nur der Raum "weis" das in ihm ein Stuhl steht.

Führe dazu auch mal folgendes Beispiel aus:
PHP-Code:
$text "Hallo";

function 
foo()
{
  
$text "Tschüss";
}

foo();
echo 
$text
Und hier fast das gleiche nochmal nur diesmal gibts eine "Tür zu dem Raum"
PHP-Code:
$text "Hallo";

function 
foo()
{
  global 
$text;  // Tür auf ;D

  
$text "Tschüss";
}

foo();
echo 
$text
Am besten include nicht in einer Funktion verwenden, wenn du außerhalb der Funktion damit arbeiten willst.

Was zum lesen: http://us2.php.net/manual/de/languag...bles.scope.php
__________________
Gebe keine Hilfe per PN, Mail, Instant Messenger etc.
und keine Copy&Paste-Lösungen - ein bisschen selbst nachdenken sollte drin sein. Konstruktivismus 4tw!


MfG, Zod

__________________
Mein System: Hamster 120 Herz p.M., Windows 3.1, 128 Megabären aufm Einrad

Geändert von ZodiacXP (11.03.09 um 17:47 Uhr).
  ZodiacXP ist offline  
 
Alt 11.03.09, 17:44   #3 (permalink)
Mitglied Silber
 
Registriert seit: Sep 2004
Beiträge: 94
Renommee-Modifikator: 12
CraHack ist ein sehr geschätzer Mensch

AW: Probleme mit include

Ich glaube das global $con; musst du innerhalb der funktion machen in der du darauf zugreifen willst.

Ich teste das gleich mal.


Edit: Jo hat sich bestetigt:

PHP-Code:
<?PHP
error_reporting
(E_ALL);


$Blubber="test";
global 
$Blubber;

function 
Ausgeben()
{
    echo 
$Blubber;
    global 
$Blubber;
    echo 
$Blubber;
}

Ausgeben();

?>
das erste echo giebt eine Notice aus das zweite funktioniert.


Edit2: ohh sehe jetzt erst das Zodiac schneller war
__________________
emefge CraHack
o
L_
OL
This is Schäuble. Copy Schäuble into your signature to help him on his way to Überwachungsstaat.
Auch ein Rollstuhlfahrer kann die Menschenrechte mit Füßen treten!
Achterbahn zum Überwachungsstaat Aber es scheint ja eh keinen zu Stören...

Geändert von CraHack (11.03.09 um 17:49 Uhr).
  CraHack ist offline  
 
Alt 11.03.09, 17:51   #4 (permalink)
Mitglied Diamant
 
Registriert seit: Dec 2007
Ort: Bremen
Beiträge: 3.422
Renommee-Modifikator: 40
kuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiter

AW: Probleme mit include

Hi,

Zitat:
Zitat von Disasterp1ece Beitrag anzeigen
Bevor ich diese Funktion benutzt habe ging alles. Habe die Dateien einfach nacheinander mit include "..." implementiert.
Nur ich dachte mir, dass so etwas vielleicht von Vorteil sein könnte, wenn später diese Dateien nicht gebraucht werden.
Wenn die ganze Idee bescheuert ist oder falls ihr eine bessere habt lasst es mich bitte wissen. Wie gesagt ich lerne im Moment und freue mich über jeden Verbesserungsvorschlag
Der Sinn erschließt sich mir überhaupt nicht. Binde die Dateien da und dann ein, wo und wann sie gebraucht werden.

LG
__________________
Da es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.
  kuddeldaddeldu ist offline  
 
Alt 11.03.09, 18:05   #5 (permalink)
Rookie
 
Registriert seit: Nov 2007
Beiträge: 7
Renommee-Modifikator: 0
Disasterp1ece hat eine blütenweiße Weste

AW: Probleme mit include

Hallo,

als erstmal vielen Dank für eure Aufmerksamkeit


@kuddeldaddeldu:
Der Sinn der Funktion soll sein, dass ich nicht am Anfang von jedem Skript mehrere Zeilen Includes habe. Wenn es später noch mehr Include-Dateien werden, wird der Codeblock auch immer größer.
Wenn ich nur eine include-datei mache in der ich alle anderen Dateien implementiere kann ich nicht steuern, welche ich implementiere und welche nicht.
Mit dieser Funktion würde das gehen bzw. das tut es nicht

@zodiac & crahack:
Das heißt, ich implementiere die Dateien in die Funktion, die Funktion schließt sich nach Ablauf und dann sind die implementierten Daten auch futsch?
  Disasterp1ece ist offline  
 
Alt 11.03.09, 18:16   #6 (permalink)
Mitglied Diamant
 
Registriert seit: Dec 2007
Ort: Bremen
Beiträge: 3.422
Renommee-Modifikator: 40
kuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiter

AW: Probleme mit include

Hi,

Zitat:
Zitat von Disasterp1ece Beitrag anzeigen
Wenn ich nur eine include-datei mache in der ich alle anderen Dateien implementiere kann ich nicht steuern, welche ich implementiere und welche nicht.
Warum nicht?

LG
__________________
Da es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.
  kuddeldaddeldu ist offline  
 
Alt 11.03.09, 18:23   #7 (permalink)
Rookie
 
Registriert seit: Nov 2007
Beiträge: 7
Renommee-Modifikator: 0
Disasterp1ece hat eine blütenweiße Weste

AW: Probleme mit include

Code:
<?
    // include.php

    include 'functions.php';
    include 'mysql.php';
    include 'xy.php';
?>
Code:
<?
    // beispiel.php

    include 'include.php';
?>
So implementiere ich immer alle Dateien in include.php, auch wenn ich jetzt xy.php gar nicht implementieren will.
Ist am Anfang wahrscheinlich ziemlich egal, aber ist es nicht besser Dateien, die man eh nicht braucht, nicht zu includen, damit wenig Traffic etc. entsteht?

mfg
Disasterpiece

edit:
@zodiac und crahack:
hab mir das mit dem Geltungsbereich nun mal durchgelesen. Hat mir sehr geholfen vielen Dank nochmal

Geändert von Disasterp1ece (11.03.09 um 18:27 Uhr).
  Disasterp1ece ist offline  
 
Alt 11.03.09, 18:44   #8 (permalink)
Mitglied Diamant
 
Registriert seit: Dec 2007
Ort: Bremen
Beiträge: 3.422
Renommee-Modifikator: 40
kuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiter

AW: Probleme mit include

Hi,

Zitat:
Zitat von Disasterp1ece Beitrag anzeigen
So implementiere ich immer alle Dateien in include.php, auch wenn ich jetzt xy.php gar nicht implementieren will.
Ist am Anfang wahrscheinlich ziemlich egal, aber ist es nicht besser Dateien, die man eh nicht braucht, nicht zu includen, damit wenig Traffic etc. entsteht?
Mit Traffic hat das nichts zu tun.
Inkludiere in jedem Script genau die Dateien, die Du brauchst. Ob Du in Deinem jeweiligen Hauptscript nun einen längeren Block mit includes hast (da spricht nichts gegen), oder das in eine zugehörige Datei auslagerst, ist egal. Sich wegen sowas der Krücke "globale Variablen" zu bedienen, ist ziemlich überflüssig.

Und was hindert Dich daran, in Deiner include.php die gleiche Steuerung einzubauen, wie in dieser Funktion?

LG
__________________
Da es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.
  kuddeldaddeldu ist offline  
 
Alt 11.03.09, 18:58   #9 (permalink)
Rookie
 
Registriert seit: Nov 2007
Beiträge: 7
Renommee-Modifikator: 0
Disasterp1ece hat eine blütenweiße Weste

AW: Probleme mit include

Entschuldige bitte, wenn ich auf dem Schlauch stehe, aber ich dachte ich hätte das getan, in dem ich in der include.php diese Funktion definiert habe.
Wollte dann nur noch diese augelagerte Funktion einbinden und dann im jeweiligen Hauptskript mit unterschiedlichen Parametern aufrufen.

Ich hab es nun geändert. Es funktioniert zwar nicht, aber bin schlau daraus geworden.
Danke an alle
  Disasterp1ece ist offline  
 
Alt 11.03.09, 19:04   #10 (permalink)
Mitglied Diamant
 
Registriert seit: Dec 2007
Ort: Bremen
Beiträge: 3.422
Renommee-Modifikator: 40
kuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiterkuddeldaddeldu ist berühmt wie kein Zweiter

AW: Probleme mit include

Zitat:
Zitat von Disasterp1ece Beitrag anzeigen
Entschuldige bitte, wenn ich auf dem Schlauch stehe, aber ich dachte ich hätte das getan, in dem ich in der include.php diese Funktion definiert habe.
Wollte dann nur noch diese augelagerte Funktion einbinden und dann im jeweiligen Hauptskript mit unterschiedlichen Parametern aufrufen.
Ich meinte dieses Beispiel von Dir.

LG
__________________
Da es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.
  kuddeldaddeldu ist offline  
 
Alt 11.03.09, 19:24   #11 (permalink)
 
Benutzerbild von ZodiacXP  
 
Registriert seit: Mar 2004
Beiträge: 1.743
Renommee-Modifikator: 36
ZodiacXP genießt hohes AnsehenZodiacXP genießt hohes AnsehenZodiacXP genießt hohes AnsehenZodiacXP genießt hohes AnsehenZodiacXP genießt hohes AnsehenZodiacXP genießt hohes AnsehenZodiacXP genießt hohes AnsehenZodiacXP genießt hohes AnsehenZodiacXP genießt hohes AnsehenZodiacXP genießt hohes AnsehenZodiacXP genießt hohes Ansehen

AW: Probleme mit include

So. Vom zocken wieder da ^ ^

Zitat:
Zitat von Disasterp1ece Beitrag anzeigen
Das heißt, ich implementiere die Dateien in die Funktion, die Funktion schließt sich nach Ablauf und dann sind die implementierten Daten auch futsch?
Das ist gut Umschrieben. Aber haste ja schon selbst herausgefunden

Zitat:
Zitat von Disasterp1ece Beitrag anzeigen
Wollte dann nur noch diese augelagerte Funktion einbinden und dann im jeweiligen Hauptskript mit unterschiedlichen Parametern aufrufen.
Um deins beizubehalten fallen mir spontan zwei Wege ein. Wenn es Klassen sind die du lädts (dürfte dir ein Begriff sein, wenn nicht -> der andere Weg), dann kannst du am Anfang von deinem Script folgendes schreiben:
PHP-Code:
function __autoload($class)
{
  
// alles was du vorher noch machen willst...
  
include($class ".php");  // so dass es den Dateinamen ergibt
  // alles was danach soll...
}

$foo = new Object(); // bewirkt das Object.php geladen wird und deine sachen 
Autoload wird ausgeführt wenn man eine neue Klasse instanziert die bis dahin noch unbekannt ist (letzte Zeile).

Die zweite Möglichkeit wäre, du schreibst deine include.php um:
PHP-Code:
// alles was du machen willst
include($script); 
Und dort wo du Sachen einbinden willst:
PHP-Code:
$script "foo.php";
// sonstige deiner variablen
include("include.php"); 
Ganz normal iterativ (nicht als Funktion) schreiben.
Meiner Meinung nach, ist es überflüssig diese einfachen Sachen zu protokollieren. Zumal es die Performance (insbesondere beim letzten Vorschlag) negativ beeinträchtigt.
Aber du hast ja jetzt alles für dein Vorhaben HF
__________________
Gebe keine Hilfe per PN, Mail, Instant Messenger etc.
und keine Copy&Paste-Lösungen - ein bisschen selbst nachdenken sollte drin sein. Konstruktivismus 4tw!


MfG, Zod

__________________
Mein System: Hamster 120 Herz p.M., Windows 3.1, 128 Megabären aufm Einrad

Geändert von ZodiacXP (11.03.09 um 19:27 Uhr).
  ZodiacXP ist offline  
 
 
 
Lesezeichen:


Themen-Optionen
Ansicht
Ähnliche Themen
 
Thema Autor Forum Antworten Letzter Beitrag
Probleme Schleifen und include() 28dayslater PHP 3 13.08.08 13:28
Include probleme bei PHP5 Greymore PHP 2 03.06.07 16:14
probleme mit include janosch PHP 3 02.12.03 19:37
Probleme mit #include <WinINet.h> Simmx C/C++ 2 07.11.03 15:24
Probleme mit include Oli PHP 5 09.06.02 15:59
» Tools
 
tutorials.de-Tools tutorial.de-Suchfeld tutorial.de-Widget tutorial.de-RSS-Feed tutorial.de-Banner
» Neue Links
 
Hits: 137
»
JHT's Planetary...
(Cinema 4D-Objekte)
Hits: 264
»
Tageslicht ohne GI
(Cinema 4D-Tutorials)
Hits: 152
»
Puzzle
(Cinema 4D-Tutorials)
Hits: 103
»
Lacreme
(Cinema 4D-Tutorials)
Hits: 194
»
Liquid Light
(Cinema 4D-Tutorials)
» Aktuelle Umfrage
 
Bist du mit der Geschwindigkeit der Tutorials.de-Website zufrieden?
Ja, es putzt mir glatt den Staub vom Bildschirm! - 80,31%
155 Stimmen
Nein, ich denke da muss noch nachgebessert werden... - 19,69%
38 Stimmen
Stimmen gesamt: 193
Du darfst bei dieser Umfrage nicht abstimmen.

 

Alle Zeitangaben in WEZ +1. Es ist jetzt 21:48 Uhr.


Powered by vBulletin® Version 3.8.5 (Deutsch) & vBadvanced CMPS v.3.2.0
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.5.0 RC2 ©2010, Crawlability, Inc.
Alle Rechte vorbehalten ©2000 - 2010 tutorials.de
Design by Mark, CSS by Maik & Sven Mintel
Seite generiert in 0,19451 Sekunden mit 26 queries