tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
8
ZUGRIFFE
182
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von atlantyz
    atlantyz atlantyz ist offline Mitglied Gold
    Registriert seit
    Apr 2007
    Ort
    Wetzlar (Hessen)
    Beiträge
    147
    Hallo,

    ich lerne grad PHP und probiere verschiedenes aus.

    Nun habe ich eine Frage zum Verständnis von Funktionen. Also... wenn ich eine Funktion in eine externe Datei auslagern möchte (also ich hab da die Datei functions, wo nachher alle Funktionen drin stehen sollen), wie rufe ich die dann im Hauptprogramm wieder auf?

    Ich hab zu Beginn die Verbindung zur Datenbank ausgelagert.
    PHP-Code:
    <html>
    <body>
    <?php
    mysql_connect
    ("","root","root");
    mysql_select_db("user");
    $res mysql_query("select * from uebersicht");
    $num mysql_num_rows($res);
    ?>
    </body
    </html>
    Und rufe das über include dann im Hauptprogramm auf. Habe ich nun aber mehrere Funktionen in dieser Datei (nicht nur die Datenbankverbindung), muss ich dann nicht sagen, was er wann ausfüren muss? Also z.B. so:

    PHP-Code:
    <html>
    <body>
    <?php
    function db_connect()
    {
    mysql_connect("","root","root");
    mysql_select_db("user");
    $res mysql_query("select * from uebersicht");
    $num mysql_num_rows($res);
    }
    function 
    naechste_funktion ()
    {
    blabliblubb
    }
    ?>
    </body
    </html>
    Sobald ich jedoch function davorsetze, kann er sich im Hauptprogramm nicht mehr mit der Datenbank verbinden, bzw. er kann die Variable $res und $num nicht mehr benutzen usw. Mache ich was falsch oder geht das mit dem Auslagern ganz anders?

    Grüße
    Joey
     
    Nur sprechenden Menschen kann geholfen werden...

  2. #2
    Avatar von fiacyberz
    fiacyberz fiacyberz ist offline Mitglied Brokat
    Registriert seit
    Aug 2001
    Ort
    Hamburg
    Beiträge
    446
    Funktionen werden nur ausgeführt, wenn du sie aufrufst.

    Also du machst ein include, dann stehen dir die Funktionen so zur VErfügung, als wären sie in der selben Datei.
    Dann kannst du sie zb per naechste_funktion(); aufrufen.

    PHP-Code:
    include (datei2.php)

    blabla

    naechste_funktion
    (); 
    PHP-Code:
    // Datei 2
    function naechste_funktion () {
    echo 
    "hallo";

     

  3. #3
    Avatar von atlantyz
    atlantyz atlantyz ist offline Mitglied Gold
    Registriert seit
    Apr 2007
    Ort
    Wetzlar (Hessen)
    Beiträge
    147
    Okay, das habe ich so probiert, erhalte aber leider nur eine Fehlermeldung (wie gesagt, mache ich es ohne function davor geht es).

    Meine Funktion:

    PHP-Code:
    <html>
    <body>
    <?php
    function db_connect()
    {
    mysql_connect("","root","root");
    mysql_select_db("user");
    $res mysql_query("select * from uebersicht");
    $num mysql_num_rows($res);
    }
    ?>
    </body
    </html>
    Und die Funktion eingebunden:

    PHP-Code:
    <html>
    <body>
    <?php
    include "functions.php";

    echo 
    "<table border>";

    echo 
    "<tr> <td>Name</td> <td>Level</td>";

    db_connect ();

    while (
    $dsatz mysql_fetch_assoc($res))
    {
    echo 
    "<tr>";
    echo 
    "<td>" $dsatz["Name"] . "</td>";
    echo 
    "<td>" $dsatz["Level"] . "</td>";
    echo 
    "</tr>";
    }
    echo 
    "</table>";
    ?>
    </body
    </html>
    Und die Fehlermeldung:

    Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /var/www/web440/html/darkshadow/user/uebersicht.php on line 14

    Heißt für mich... er kennt $res nicht... oder?
     
    Nur sprechenden Menschen kann geholfen werden...

  4. #4
    nchristoph nchristoph ist offline Mitglied Platin
    Registriert seit
    Sep 2007
    Beiträge
    527
    Die Fehlermeldung ist bei mir weg wenn ich SELECT und FROM gross schreibe.
     

  5. #5
    Avatar von fiacyberz
    fiacyberz fiacyberz ist offline Mitglied Brokat
    Registriert seit
    Aug 2001
    Ort
    Hamburg
    Beiträge
    446
    Zitat Zitat von nchristoph Beitrag anzeigen
    Die Fehlermeldung ist bei mir weg wenn ich SELECT und FROM gross schreibe.
    das wundert mich, da groß/kleinschreibung eigentlich egal ist und nur gemaht wird für die übersicht
    der fehler den du hattest lag aber nicht an php, sondern sql
    in solchen fällen am besten den sql-befehl kopieren und direkt auf der datenbank, zb mit phpmyadmin, ausführen
     

  6. #6
    Avatar von SnEaKy
    SnEaKy SnEaKy ist offline Mitglied Gold
    Registriert seit
    Sep 2004
    Ort
    Hattersheim
    Beiträge
    219
    Also erstmal gehört in deine "functions.php" kein HTML-Code!

    Es kann nicht funktionieren, weil du innerhalb deiner Funktion die Variable $res deklarierst, sie aber eigentlich ausserhalb deiner Funktion brauchst.

    Probier mal folgendes:
    funcions.php:
    PHP-Code:
    <?php 
    function db_connect() 

    mysql_connect("","root","root"); 
    mysql_select_db("user"); 

    ?>
    andere Datei:
    PHP-Code:
    <html> 
    <body> 
    <?php 
    include "functions.php"

    echo 
    "<table border>"

    echo 
    "<tr> <td>Name</td> <td>Level</td>"

    db_connect (); 

    $res mysql_query("select * from uebersicht"); 
    $num mysql_num_rows($res); 
    while (
    $dsatz mysql_fetch_assoc($res)) 

    echo 
    "<tr>"
    echo 
    "<td>" $dsatz["Name"] . "</td>"
    echo 
    "<td>" $dsatz["Level"] . "</td>"
    echo 
    "</tr>"

    echo 
    "</table>"
    ?> 
    </body 
    </html>
     
    Die Welt ist binär: Entweder man ist eine Eins oder eine Null, tot oder lebendig! - Und ich? Lebe...

  7. #7
    Avatar von atlantyz
    atlantyz atlantyz ist offline Mitglied Gold
    Registriert seit
    Apr 2007
    Ort
    Wetzlar (Hessen)
    Beiträge
    147
    Ja, das geht jetzt

    Okay... und wenn ich nun noch weitere Funktionen aufrufen möchte, reicht es dann, wenn ich einmal am Anfang die Seite mit include einbinde?
     
    Nur sprechenden Menschen kann geholfen werden...

  8. #8
    LordDestros LordDestros ist offline Rookie
    Registriert seit
    Dec 2003
    Ort
    Berlin
    Beiträge
    7
    durch einen include wird die angegebene datei in die wo der include steht eingebunden. es ist also so, als hättest du es direkt in der datei stehen.

    wenn du funktionen aus der functions.php nutzen willst, so reicht es wenn du die functions.php einmalig includest am anfang der datei
     

  9. #9
    Avatar von SnEaKy
    SnEaKy SnEaKy ist offline Mitglied Gold
    Registriert seit
    Sep 2004
    Ort
    Hattersheim
    Beiträge
    219
    Wenn du 2-Mal die Datei einbinden willst über den include-Befehl kommt wird eine Warnung kommen. Um zu verhindern, dass eine Datei mehrmals eingebunden wird kannst du include_once() nehmen.
     
    Die Welt ist binär: Entweder man ist eine Eins oder eine Null, tot oder lebendig! - Und ich? Lebe...

Ähnliche Themen

  1. verständnis frage!
    Von rise6mi im Forum .NET Windows Forms
    Antworten: 5
    Letzter Beitrag: 05.08.08, 11:31
  2. Verständnis Frage...
    Von Radhad im Forum CSS
    Antworten: 3
    Letzter Beitrag: 18.10.06, 17:10
  3. Sessions Verständnis Frage [z.B. Login]
    Von versuch13 im Forum PHP
    Antworten: 2
    Letzter Beitrag: 08.09.06, 00:24
  4. PHP -> MySQL Abfrage -> Frage zum Verständnis
    Von Thomas Lindner im Forum PHP
    Antworten: 2
    Letzter Beitrag: 08.03.06, 17:38
  5. Allgemeine verständnis Frage
    Von Meccan im Forum Photoshop
    Antworten: 4
    Letzter Beitrag: 07.06.05, 14:32