php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2010

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 07.09.2010, 12:07  
Benutzer
 
Registriert seit: 18.08.2010
Beiträge: 34
PHP-Kenntnisse:
Anfänger
marcial befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] mysqli Verbindung besteht in externer Funktion nicht mehr

Hallo,


ich steh ziemlich auf dem Schlauch und bitte deswegen um Hilfe.

Ich habe php-scripts in vier Dateien aufgeteilt. Zum einen gibt's die normale index.php (im Browser wird Seiteninhalt über index.php?seite=SEITENAME geladen), dann eine konfig.php in der die nötig Variablen gesetzer werden, eine verbindung.php zur mysqli Verbindung mit den Variablen aus config.php und eine funktionen.php zur Auslagerung von Funktionen (insbesondere um einen Seiteninhalt zu laden).

index.php

PHP-Code:
<?php
require("verbindung.php");
include(
"funktionen.php");

echo isset(
$mysqli_db); // Debug -> 1

if(isset($_GET['seite']))
    
ladeSeite($_GET['seite']);

?>
funktionen.php

PHP-Code:
<?php
echo isset($mysqli_db); // Debug -> 1
function ladeSeite($seite)
{
    echo isset(
$mysqli_db); // Debug -> 0
   // ...
}
?>
verbindung.php

PHP-Code:
<?php
require("konfig.php");
$mysqli_db = new mysqli(...);
?>
und in der konfig natürlich die Verbindungsdaten.


Mein Problem ist, dass die mysql Verbindung nicht mehr besteht wenn die Funktion "ladeSeite" aufgerufen wird (siehe Kommentare).

"Notice: Undefined variable: mysqli_db in funktionen.php on line 5"

In index.php besteht sie, wenn die Datei funktionen.php eingefügt wird besteht sie, jedoch sobald man die Funktion "ladeSeite" aufruft besteht sie nicht mehr.

Was mache ich falsch?

Vielen Dank für hilfreiche Antworten!

Geändert von marcial (07.09.2010 um 12:13 Uhr).
marcial ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 07.09.2010, 12:10  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Die existiert schon weiter. Nur in IN einer Funktion hast du einen neuen Scope (Variablengültigkeitsbereich). Heißt dort sind NICHT die Variablen von außerhalb verfügbar! Du müsstest die benötigten Variablen schon übergeben. (es gibt zwar noch das Wort "glob" das solltest du aber möglichst nicht einsetzen).
Flor1an ist offline  
Alt 07.09.2010, 12:11  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

http://www.php.de/php-einsteiger/489...nsammlung.html (Lerne Grundlagen | Quellensammlung)
Asipak ist offline  
Alt 07.09.2010, 12:16  
Benutzer
 
Registriert seit: 18.08.2010
Beiträge: 34
PHP-Kenntnisse:
Anfänger
marcial befindet sich auf einem aufstrebenden Ast
Standard

Danke Flor1an. Ich dachte Variablen außerhalb des Codeblocks würden ihre Gültigkeit innerhalb des Blocks behalten (bei manch anderen Sprachen der Fall).

Jetzt klappts, super .
marcial ist offline  
Alt 07.09.2010, 12:21  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Normalerweise ist es aber so das man Variablen außerhalb von Funktionen NICHT in der Funktion verwenden kann, außer diese Variablen werden explizit als Global deklariert.
Flor1an ist offline  
Alt 07.09.2010, 12:30  
Benutzer
 
Registriert seit: 18.08.2010
Beiträge: 34
PHP-Kenntnisse:
Anfänger
marcial befindet sich auf einem aufstrebenden Ast
Standard

Hm somit können dann auch Variablen in .php Dateien die über include(...); aufgerufen werden nicht direkt verwendet werden. Das wirft meine Überlegungen ein CMS zu gestalten ziemlich über den Haufen .

Kurze Frage vll. noch falls es überhaupt eine direkte Antwort gibt: Ist der Ansatz eine mysql Verbindung in jeder Datei eines CMS (login.php, registrierung.php etc.) seperat aufzubauen und wieder zu schließen dann in Ordnung? Oder ist es in diesem Fall doch geschickter auf Globals zurückzugreifen? Mit dem Hintergedanken allerdings, dass beim Aufruf einer Seite somit durchaus auch zwei Verbindungen auftreten können, wenn zum Beispiel eine zusätzl. .php Datei über include(...) eingefügt wird.
marcial ist offline  
Alt 07.09.2010, 12:35  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Hm somit können dann auch Variablen in .php Dateien die über include(...); aufgerufen werden nicht direkt verwendet werden.
Doch.

Globale Variablen sind immer eine schlechte Idee. Du kannst auch zwei Verbindungen parallel nutzen. Die entsprechenden Funktionen liefern dir beim Verbindungsaufbau eine Verbindungskennung zurück, die du den Datenbankfunktionen übergeben kannst.
Asipak ist offline  
Alt 07.09.2010, 12:41  
Benutzer
 
Registriert seit: 18.08.2010
Beiträge: 34
PHP-Kenntnisse:
Anfänger
marcial befindet sich auf einem aufstrebenden Ast
Standard

Sorry meinte lokale Variablen. Das dachte ich mir auch aber dann muss ich die Variable doch irgendwie übergeben.

Ich hab jetzt schnell gegoogelt und in Foren wird beschrieben dass include den akt. Scope benutzt. Ich habs jetzt aber getestet wenn ich ne Variable vor include("test.php") deklariere ist sie in test.php nicht mehr deklariert.
marcial ist offline  
Alt 07.09.2010, 12:43  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Doch. Versuchst du etwa wieder, die Variable in einer Funktion zu benutzen?
Asipak ist offline  
Alt 07.09.2010, 12:53  
Benutzer
 
Registriert seit: 18.08.2010
Beiträge: 34
PHP-Kenntnisse:
Anfänger
marcial befindet sich auf einem aufstrebenden Ast
Standard

Nicht wirklich... aber ich hab jetzt zwei Test Dateien erstellt und es funktioniert einwandfrei. Der Fehler liegt in meinen Dateien irgendwo anders - ich werds schon noch rausfinden. Dann mal vielen Dank für eure Hilfe und die Erläuterungen, jetzt bin ich um einiges schlauer.
marcial ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Parameter an weiter Funktion übergeben thiagojonas JavaScript, Ajax und mehr 2 26.07.2010 22:48
[Erledigt] Von externer Datenbank zu interner zurückspringen regsnerven PHP Tipps 2009 11 31.10.2009 22:49
[Erledigt] funktion aufrufen wenn andere funktion aufgerufen wird kalli.c0re PHP Tipps 2009 16 05.06.2009 13:49
[Erledigt] js funktion funktioniert nach änderungen am php teil nicht mehr xstefxanx JavaScript, Ajax und mehr 7 13.04.2009 16:09
Problem: UPDATE-Abfrage in externer Funktion cheaterfritz PHP Tipps 2009 5 03.04.2009 14:56
funktion für html escape etc. TeazY PHP Tipps 2009 19 12.02.2009 13:19
[Erledigt] Array innerhalb einer Funktion Marko_Schulze PHP Tipps 2008 8 02.12.2008 18:58
Rekursive Funktion bricht ab... duras666 PHP Tipps 2008 9 28.04.2008 11:36
persistente MySQL Verbindung und clonen HStev PHP-Fortgeschrittene 16 22.11.2005 13:24
JS: Frage zu onClick in Verbindung mit einer Funktion HTML, Usability und Barrierefreiheit 1 04.11.2005 16:06
PHP-GTK Tutorial Beitragsarchiv 9 02.11.2005 21:07
[Erledigt] Array-Übergabe in Funktion PHP Tipps 2005 1 08.05.2005 21:05
[Erledigt] Wie kann ich beliebig viele Werte an eine Funktion übergeben PHP Tipps 2005 11 25.01.2005 10:44
[Erledigt] sql syntax error in funktion, kann aber nix finden :( PHP Tipps 2004 10 20.07.2004 19:19
[Erledigt] Referenz auf Funktion übergeben PHP-Fortgeschrittene 7 20.07.2004 09:51

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
notice: undefined variable: mysqli, mysqli in funktionen, verbindungsdaten an funktion übergeben php, php mysqli and verbindungsdaten auslagern, mysqli verbindung auslagern, notice: undefined variable: mysqli in, new mysqli php, new mysqli, php function mysqli übergeben, mysqli php variablen javascript, mysqli-verbindung in funktion, mysqli-verbindung auslagern, mysqli verbindungsaufbau auslagern, php mysqli in funktions, mysqli innerhalb einer funktion, mysql verbindung php mysqli, php mysqli verbindung, \@new mysqli\, mysqli verbindung übergeben, notice undefined variable php new mysqli

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:47 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum