Antworten auf deine Fragen:
Neues Thema erstellen

Problem bei Funktionen mit PHP

DonUndertaker

Nicht mehr ganz neu hier

Hallo,

ich habe irgendwie ein Problem mit meinen Funktionen, denn nehmen wir mal das Beispiel:

PHP:
<?php

//Funktion zum Auslesen aus DB und Wiedergabe in einem Dropdownauswahlfeld
function dropdown($befehl, $spalte) {
    $db = @new mysqli($localhost, $username, $user_password, $database);
    $result = $db->query($befehl);
    if (!$result){ echo('Konnten nicht ausgelesen werden.'); }
    $output = ' ';
    while( $zeile = $result->fetch_assoc() ) {
     $output .= '<option>';
     $output .= $zeile["$spalte"];
     $output .= '</option>';
    }
    return $output;
}

?>

Das steht dann in der Datei function.php.
In der Index Datei wird steht dann ganz am Anfang
<? include("function.php"); ?>
und im Bereich wo der Content hin kommt wird eine Datei eingefügt in der
damit gearbeitet werden soll:
PHP:
<select name="vertretung" size="1" class="vertretung_det">
       <?php
       $befehl = "SELECT Name FROM vertretung";
       $spalte = 'Name';
       $drop = dropdown($befehl, $spalte);
       echo("$drop"); ?>
</select>

Eigentlich sollte dort dann eine Liste mit den aktuell in der DB befindlichen Werten vorzufinden sein.
Leider passiert da nichts. Doch wenn ich die Abläufe aus der Funktion direkt zwischen select und /select einbaue geht es.

Kann mir jemand sagen was für einen vllt. auch dummen Fehler ich da begehe?
 

r3nt5ch3r

~ Allround pG ~

AW: Problem bei Funktionen mit PHP

Code:
@new mysqli($localhost, $username, $user_password, $database);

Wo sind die Variablen?

€dit: so als Tipp, dafür gibts Klassen und deren Datenfelder. Wehe ich sehe gleich das Wort "global" dann krieg ich das kotzen xD
 
Zuletzt bearbeitet:

DonUndertaker

Nicht mehr ganz neu hier

AW: Problem bei Funktionen mit PHP

Oh ja stimmt hab ich vergessen zu erwähnen, dass die auch in einer Datei stehen und dann in die Hauptdatei wie die oben schon genannte function.php eingefügt werden.

Also daran kann es nicht liegen.

(welche Klassen meinst du jetzt)
 
Zuletzt bearbeitet:

r3nt5ch3r

~ Allround pG ~

AW: Problem bei Funktionen mit PHP

€dit: so als Tipp, dafür gibts Klassen und deren Datenfelder. Wehe ich sehe gleich das Wort "global" dann krieg ich das kotzen xD

entweder du arbeitest mit Klassen und definierst diese Variablen als Datenfelder oder du fragst sie global ab *kotz* xD
 

Duddle

Posting-Frequenz: 14µHz

AW: Problem bei Funktionen mit PHP

Was r3nt5ch3r sagen will ist, dass Variablen standardmässig lokal angelegt werden. Deshalb sind sie nur in ihrem eigenen Gültigkeitsbereich benutzbar. Eine Funktion spannt einen neuen Gültigkeitsbereich auf, deshalb sind lokale Variablen anderer Bereiche dort nicht bekannt. Wäre ja auch noch schöner, sonst müsste man ja drauf achten welche Variablennamen man vorher schon benutzt hat.
Umgehen kannst du das Problem (in der Theorie) mit globalen Variablen, also Variablen die erzwungen in allen Bereichen gültig sind, oder mit Parameterübergabe an die Funktion. Als dritte Variante kannst du innerhalb deiner Funktion die entsprechenden Werte auch neu einlesen, aus einer (Konfigurations-)Datei oder aus einem entsprechend aufbereiteten Objekt, das mit dem Singleton-Muster arbeitet.

Die einfachste und unsauberste Variante ist meiner Meinung nach die globale Variable, die sauberste aber wohl auch aufwändigste Methode das Singleton. Was du wählst, soll dir überlassen sein.


Duddle
 

DonUndertaker

Nicht mehr ganz neu hier

AW: Problem bei Funktionen mit PHP

Achso an die Übergabe der Variablen für das db Objekt hab ich gar nicht gedacht^^

Ja werde es gleich mal ausprobieren.

Ich kann dabei dann doch das fertige db objekt ( $db ) übergeben mit den anderen parametern oder geht das nicht so einfach?
 

Christian

verpeilt & verschallert

AW: Problem bei Funktionen mit PHP

Doch klar geht das.
PHP:
$db = new mysqli($localhost, $username, $user_password, $database);

//Funktion zum Auslesen aus DB und Wiedergabe in einem Dropdownauswahlfeld
function dropdown($befehl, $spalte, &$db) {
//    $db = @new mysqli($localhost, $username, $user_password, $database);
    $result = $db->query($befehl);
    if (!$result){ echo('Konnten nicht ausgelesen werden.'); }
    $output = ' ';
    while( $zeile = $result->fetch_assoc() ) {
     $output .= '<option>';
     $output .= $zeile["$spalte"];
     $output .= '</option>';
    }
    return $output;
}

oder:
PHP:
$db = new mysqli($localhost, $username, $user_password, $database);

//Funktion zum Auslesen aus DB und Wiedergabe in einem Dropdownauswahlfeld
function dropdown($befehl, $spalte ) {
	global $db;
    $result = $db->query($befehl);
    if (!$result){ echo('Konnten nicht ausgelesen werden.'); }
    $output = ' ';
    while( $zeile = $result->fetch_assoc() ) {
     $output .= '<option>';
     $output .= $zeile["$spalte"];
     $output .= '</option>';
    }
    return $output;
}
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.634
Beiträge
1.538.447
Mitglieder
67.555
Neuestes Mitglied
scheflo
Oben