include funktion

Tetsuo

Erfahrenes Mitglied
hi @ all

Ich möchte gerne eine funktion machen mit der man einzelne dateien includen kann. Hier mein erster versuch:

PHP:
<?php

function import($file)
{
        include "$file.php";
}

import(test);
Leider funktioniert das nicht
Kann mir jemand helfen? Ich möchte diese funktion dann in einer anderen brauchen kann das daran liegen?

Vielen Dank im voraus

Oli
 
Vielen dank für die schnellen antworten.

Das importieren funktioniert jetzt

Jedoch habe ich noch ein prob:

Die variabeln werden nicht mit importiert

Das script mit der import funktion
PHP:
<?php

function import($file)
{
	include($file.".php");

}


function create()
{
	import(config);
	
		$conn = mysql_connect($host,$user,$passw);
	echo "HOST: $host , USER: $user ,PASSWORD: $passw ,DATABASE: $db ,TABLE: $table <br>";		
		
					if($conn){
				echo "Verbindung erfolgreich hergsetellt<Br>";}
					else {
						echo "Verbindung konnte nicht hergestellt werden!<br>";}
	
		$create = 'CREATE TABLE `$table` ( `id` INT NOT NULL AUTO_INCREMENT ,'
        . ' `header` TEXT NOT NULL ,'
        . ' `content` TEXT NOT NULL ,'
        . ' `date` VARCHAR( 10 ) NOT NULL ,'
        . ' `author` TEXT NOT NULL ,'
        . ' `lang` VARCHAR( 10 ) NOT NULL ,'
        . ' PRIMARY KEY ( `id` ) );'
        . ' '; 
mysql_select_db($db, $conn);

			mysql_query($create, $conn) OR die(mysql_error());
			
	
		
mysql_close($conn);

}

create();
?>

Und hier ist die config:

PHP:
<?php


/* MySQL verbindungsdaten */

$host == "localhost";
$user = "root";
$passw= "";
$db = "test-cms";
$table = cms;

/* Admin - Daten */

$admin_name = "";
$admin_pw = "";
echo "Ich bin die config.php<br>";
?>

Es wird nur der Text "Ich bin die config.php" ausgegeben, die variablen nicht.

Vielen dank nochmals für eure Hilfe!

Oli
 
Zuletzt bearbeitet von einem Moderator:
Code:
<?php
function create()
{
    include "config.php";
    $conn = mysql_connect($host,$user,$passw);
    echo "HOST: $host, USER: $user, PASSWORD: $passw, DATABASE: $db, TABLE: $table <br />";
    if ($conn) {
        echo "Verbindung erfolgreich hergsetellt<br>";
    } else {
        echo "Verbindung konnte nicht hergestellt werden!<br />" . mysql_error();
    }
    mysql_select_db($db, $conn);
    $create ="CREATE TABLE `$table` ( `id` INT NOT NULL AUTO_INCREMENT ,";
    $create.= "`header` TEXT NOT NULL,";
    $create.= "`content` TEXT NOT NULL,";
    $create.= "`date` VARCHAR( 10 ) NOT NULL,";
    $create.= "`author` TEXT NOT NULL,";
    $create.= "`lang` VARCHAR( 10 ) NOT NULL,";
    $create.= "PRIMARY KEY ( `id` ) );";
    mysql_query($create, $conn) or die(mysql_error());
    mysql_close($conn);
}

create();
?>
Code:
<?php
/* MySQL verbindungsdaten */

$host = "localhost";
$user = "root";
$passw= "";
$db = "test-cms";
$table = "cms";

/* Admin - Daten */

$admin_name = "";
$admin_pw = "";
?>

Versuche bitte, deine Beiträge in eine etwas geschlifferen Form zu bringen, es reicht nicht aus, den ersten Buchstaben jedes Satzes groß zu schreiben.
 
Viehleicht ist es dir nicht aufgefallen, aber ich möchte die config.php mit einer Funktion importieren und nicht einfach per include. Bitte eintschuldige das ich nicht besonders gut bin in der Deutschen Rechtschreibung. Schreib mir doch bitte wenn es keine andere möglichkeit als deine gibt.


Oli


PS: ich habe den code zum erstellen der Tabelle aus phpMyAdmin kopiert und ich denke das sollte eigentlich funktionieren oder?
 
Original geschrieben von Oli
Viehleicht ist es dir nicht aufgefallen, aber ich möchte die config.php mit einer Funktion importieren und nicht einfach per include.
Doch, das ist mir aufgefallen, aber ich habe es als totalen Quatsch abgetan und ignoriert.

Original geschrieben von Oli
Bitte eintschuldige das ich nicht besonders gut bin in der Deutschen Rechtschreibung.
Das höre ich so oft, und ich kann immer nur das sagen, was ich denke: Gib dir etwas Mühe, dann wird das schon.

Original geschrieben von Oli
Schreib mir doch bitte wenn es keine andere möglichkeit als deine gibt.
Es gibt noch Hunderte von Varianten, die den gleichen Zweck erfüllen, was hast du an meiner Lösung auszusetzen? Ich verstehe auch nicht ganz, wieso du eine Funktion brauchst, um eine Tabelle zu erstellen... :rolleyes: :eek:
 
Ich mache das mit funktionen weil ich das noch nie eingesetzt habe. An deiner Version gibts sicher nichts auszusetzen jedoch möchte ich es einmal mit Funktionen probieren. Wie sicher aus dem Code ersichtlich ist, plane ich ein CMS-System zu machen. Natürlich in einem sehr einfachen rahmen. Wenn du eine Variante kennst, welche das include in eine Funktion umwandelt, oder was bei meiner Variante falsch ist, dass nur der echo Befehl ausgegeben wir und die Variablen nicht, wäre ich sehr froh wenn du mir dieses doch mitteilen würdest. Ebenfalls stelt sich mir eine Frage, da ich noch nicht solange mit PHP und MySQL arbeite, warum du das so machst:

Code:
    mysql_select_db($db, $conn);
    $create ="CREATE TABLE `$table` ( `id` INT NOT NULL AUTO_INCREMENT ,";
    $create.= "`header` TEXT NOT NULL,";
    $create.= "`content` TEXT NOT NULL,";
    $create.= "`date` VARCHAR( 10 ) NOT NULL,";
    $create.= "`author` TEXT NOT NULL,";
    $create.= "`lang` VARCHAR( 10 ) NOT NULL,";
    $create.= "PRIMARY KEY ( `id` ) );";
    mysql_query($create, $conn) or die(mysql_error());
    mysql_close($conn);

Diese Art habe ich bis jetzt noch nie gesehen. Könntest du mir das Erklären wenn du magst Vielen dank für deine Hilfe und entschuldige meine Rechtschreibung aber ich versuche mein möglichstes und manchmal trifft ein Finger die falsche Taste.

Oli
 
Ich habe ja bis jetzt noch nicht den Inhalt bewertet, weil ich dachte das ist nur ein Beispiel für das was du machen willst.
Aber mit deiner Begründung, ich mache das so, weil ich das vorher noch nicht gemacht habe, find ich sehr lustig.
Das ist genauso als wenn du ne Funktion für echo schreiben würdest, also sinnlos.

Wenn es dir nur darum geht, etwas über Funktionen zu lernen, dann bist du auf der richtigen Spur. Auch wenn ich es immer noch so sinnlos finde.
Schaue dir andere Scripte an, die sowas enthalten, lese und lerne...

Eine Funktion ist folgender Maßen aufgebaut:

function NAME($uebergabevariablen)
{
// Anweisungen
return $etwasausdenanweisungen;
}

Wie man aus deinem Code erraten könnte, möchtest du ein CMS schreiben. Dort geht es ja um eine gute Struktur und schnelle Bearbeitung.
Wenn du nun um eine Datei zu includen extra ne Funktion schreibst, geht das zur Last des Servers und damit auf die Performance.
Wenn du wenig Ahnung hast von PHP und SQL würde ich mit Vorsicht und vieeeel Mut und Engagement an die Sache gehen. Ein CMS sieht einfach aus, aber was dahinter steckt ist enorm. Es gibt gute Programmierer die da mehrere Monate bis zu nem Jahr dran sitzen und es Jahre weiterentwickeln.

Warum dein Code nun genau nicht funktioniert, kann ich dir auch nicht 100% sagen. Es kann sein, das du deine Variablen die in der config.php sind auf Global setzen musst, damit sie in der Create() Funktion nutzen kannst, aber das weiss ich nicht, weil ich so eine Situation noch nie wirklich im Auge gehabt habe.
Sorry

Andreas
 
PHP:
$create.= "bla";
--> Bedeutet, dass an die Variable $create der Text "bla" angefügt wird --> Basics. Oder was verstehst Du an dem Quellcode nicht?

Zu dem Problem, warum Du nicht auf die Variablen der includeten Datei zugreifen kannst: Wenn das Includen über die Funktion erfolgt, dann sind die Variablen aus der includeten Datei nur innerhalb der Funktion gültig. Wenn Du also auch ausserhalb der Funktion auf diese Variablen zugreifen willst, musst Du sie entweder:
1/ globalisieren,
2/ in einem Array zurück geben,
3/ oder die gleichen Variablen per Referenz an die Funktion übergeben.

Wenn Du also unbedingt bei Deiner Methode bleiben möchtest, was ich für den konkreten Fall absolut für unnötig halte, würde ich Variante 2 bevorzugen. Wenn Du ein CMS programmieren möchtest, dann wirst Du noch so viele Funktionen und Klassen schreiben müssen, so dass Du das nicht gerade für eine einfache Include-Anweisung probieren musst.

Vielen dank für deine Hilfe und entschuldige meine Rechtschreibung aber ich versuche mein möglichstes und manchmal trifft ein Finger die falsche Taste.
Dafür gibt es Kontroll-Lesen.

snuu


// Edit:
Ein CMS sieht einfach aus, aber was dahinter steckt ist enorm. Es gibt gute Programmierer die da mehrere Monate bis zu nem Jahr dran sitzen und es Jahre weiterentwickeln.
Für Imperia oder RedDot brauchst Du eine gute Schulung, um es bedienen zu können.
 
Zuletzt bearbeitet:
Zurück