Function funktioniert nicht - Anfaenger Fehler

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Function funktioniert nicht - Anfaenger Fehler

    Hi,

    bitte nicht lachen, aber obwohl ich schon oefter gepostet habe und doch einiges weis ueber php benutze ich zum ersten mal function.

    Irgendwie will es aber bei mir nicht funkctionieren. Wo sitzt mein logischer Fehler?

    Aufruf der function:
    PHP-Code:
    $result mysqlConnector($host,$db,$user,$pwd,$sql); 
    Funktion:

    PHP-Code:
    function mysqlConnector ($host,$db,$user,$pwd,$sql) {
       
       
     
    //TEST  echo $host;
     //TEST  echo $db;
     //TEST  echo $user;
     //TEST  echo $pwd;
     //TEST  echo $sql;

    // Verbindung aufbauen, auswählen einer Datenbank
        
    $link mysql_connect($host$user$pwd)
        or die(
    "Keine Verbindung möglich!");
        
        
    //TEST 
        
    echo "Verbindung zum Datenbankserver erfolgreich";
        
    $result=mysql_db_query($db,$sql,$link);

        return (
    $result);
        
        
    // Freigeben des Resultsets
        //mysql_free_result($result);

        // schliessen der Verbinung
        
    mysql_close($link);


    Weiterer Code auserhalb der Funktion:
    PHP-Code:
    $anzahl mysql_num_rows($result);

    for (
    $i=0$i<$anzahl$i++ )
    {
     
    $Rubrikenindex mysql_result($result,$i,"Rubrikenindex");
     
    $Rubrik mysql_result($result,$i,"Rubrik");

    echo 
    "
    <tr>
        <td><a href=\"sportive/rechts.php3?Rubrikenwahl=
    $Rubrikenindex\">$Rubrik</td></tr>\n"


    Danke.

  • #2
    • ich steh vor meinem haus
    • ich schließ die tür auf
    • ich schließ die tür zu
    • warum kann ich mir jetzt nicht den schirm aus dem haus holen?


    du lieferst in der funktion die resource-id einer sql-abfrage zurück, soweit so gut, allerdings solltest du die verbindung zur datenbank nicht schließen, bevor du die einzelnen datensätze geholt hast.
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      1000 Dank, hat geholfen. Jetzt laeuft es ...

      Kommentar


      • #4
        aber nicht vergessen die datenbankverbindung irgendwann wieder zu schließen
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          macht das php nicht automatisch am ende von jedem script?

          Kommentar


          • #6
            Original geschrieben von mysterx2000
            macht das php nicht automatisch am ende von jedem script?
            jepp.
            ist nur formsache eigentlich. ich schliesse die auch nie
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Original geschrieben von mrhappiness
              • ich steh vor meinem haus
              • ich schließ die tür auf
              • ich schließ die tür zu
              • warum kann ich mir jetzt nicht den schirm aus dem haus holen?
              OffTopic:
              könnte glatt von mir sein ...
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                Ich habe übrigens herausgefunden, dass die funktion sehr wohl

                ich steh vor meinem haus

                ich schließ die tür auf

                ich schließ die tür zu

                warum kann ich mir jetzt nicht den schirm aus dem haus holen?

                kann. Dass heißt im klartext:

                Ich kann die result aus der funktion per return übergeben und damit arbeiten. Ich hatte nur einen syntax fehler gemacht.

                Kommentar


                • #9
                  die runden klammern bei return?

                  hast übrigens nicht komplett recht, deine funktion knn auch keinen regenschirm aus nem verschlossenen haus holen. Du schließt die verbindung in der funktion nämlich gar nicht (wenn ich das richtig lese diesmal), da mit der return-Anweisung afaik die funktion verlassen wird und alles was hintendran steht ignoriert wird.
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #10
                    Warum nicht ... Statements brauchen's zwar nicht ... aber in der Doku stehts auch so:

                    http://www.php.net/manual/en/function.return.php
                    carpe noctem

                    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                    Kommentar


                    • #11
                      Original geschrieben von goth
                      Warum nicht
                      weil ich sonst nix entdeckt hab auf die schnelle, was nach syntaxfehler aussieht *g*
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar


                      • #12
                        Danke erst mal für die vielen komments. Ja, ich habe es noch nicht probiert, das return statement hinter das schließen der DB zu stellen um zu sehen, ob es dann immer noch geht.

                        Aber ich bin mir fast sicher. Gibt es eigentlich eine noch praktischere Lösung. Also ich benutze diese Funktion ja mehrmals auch auf einer Webseite um verschiedene Dinge aus verschiedenen DB's auszulesen. D.h., ich rufe die Funktion bis zu 4 mal auf.

                        Wie ganz am Anfang gesagt, ich arbeite - nich lachen - zum ersten mal mit funktionen.

                        Noch eine Frage. Ab wann braucht man denn praktisch gesehen klassen bzw. Objekte. Bisher ist mir noch kein usecase (beispiel) eingefallen?

                        danke.

                        Kommentar


                        • #13
                          könntest z.b. deine funktion zur klasse ausweiten.

                          im konstruktor stellst du die datenbankverbindung her
                          im destruktor schließt du die verbindung
                          in der funktion query führst du die abfrage aus
                          in der funktion getnext lieferst du den nächsten datensatz als array zurück

                          nur so ein kleines beispiel
                          PHP-Code:
                          $myDB=new mydb('localhost','user','pass','fuxor'); //Verbindung herstellen
                          $myDB->query('select * from table1');
                          echo 
                          'Anzahl Datensätze: '.$myDB->getCount().'<br />';
                          while (
                          $result=$myDB->getnext(MYSQL_ASSOC))
                            
                          print_r($_result);
                          $myDB->query('select * from table2');
                          while (
                          $result=$myDB->getnext(MYSQL_NUM))
                            
                          print_r($_result);
                          $myDB->disconnect(); 
                          du musst praktisch nur einmal die zugangsdaten an die klasse übergeben und ansonsten einfach nur abfragen machen. spart dir (wie in deinem fall) das stetige aufbauen und schließen der verbindung und du musst die gesamte methodik (mysql_connect, mysql_select_db, ...) nur einmal implementieren

                          kannst die klasse auch immer erweitern, z.b. fehlerbehandlung, formatierte ausgabe, vor und zurückspringen, ...
                          Ich denke, also bin ich. - Einige sind trotzdem...

                          Kommentar


                          • #14
                            Vielleicht denke ich jetzt gerade verkehrt. Der Vorteil meiner Funktion ist, dass sie sich zu beliebigen db's mit beliebigen sql abfragen verbindet und damit völlig unabhängig eingesetzt werden kann.

                            In deiner klasse ist das aber ´hart kodiert.

                            Worin liegt eigentlich der vorteil von klassen und objekten?

                            Anhand deines beispiels verstehe ich den vorteil noch nicht.

                            Danke.

                            Kommentar


                            • #15
                              axo hast du das gedacht. wenn du tatsächlich im gleichen skript mehrere datenbanken abfrägst, dann bringt dir die klasse eher wenig. wirklich hart gecodet isses übrigens auch nich, da die parameter ja im skript übergeben werden.
                              aber du könntest ja ne funktion switch_db einbauen *g* (oder frägst du auch datenbanken von anderen servern ab)

                              allgemein haben klassen dann vorteile, wenn du immer wieder abzuarbeitende tätigkeiten hast und du die an einer zentralen stelle implementieren willst, so dass du z.b. eine klasse für datenbanken hast oder eine für sessions, oder oder oder

                              hat den vorteil, dass du änderungen (fehlersuche/-behebung!!!) und erweiterungen an nur einer einzigenstelle machen musst, und nicht in jedem skript von dir. Solange du die köpfe der funktionen deiner klasse nicht änderst kannst du das nämlich ganz einfach machen.
                              Ich denke, also bin ich. - Einige sind trotzdem...

                              Kommentar

                              Lädt...
                              X