[Funktion] Problem mit Variable

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

  • [Funktion] Problem mit Variable

    Servus Jungs,

    ich habe ein Problem mit einer Varibale. Ich will ein array in die Funktiion übergeben:
    mein code:

    PHP-Code:
    if($_POST['opponent'] == ""
    $error[0] = "<br><font size=\"1\" color=\"red\">» ausfüllen</font>";
             if(
    $_POST['maps'] == ""
    $error[1] = "<br><font size=\"1\" color=\"red\">» ausfüllen</font>";
             if(
    $_POST['result1'] OR $_POST['result2'] == "" 
    $error[2] = "<br><font size=\"1\" color=\"red\">» ausfüllen</font>";        
             echo 
    $matches_navi;
             
    $result=query("SELECT catID, name, url FROM ".PREFIX."_matches_cats");
             
    categories($result"matches_add"); 
    function
    PHP-Code:
     function categories($result$template) {                     
           if(
    mysql_num_rows($result)) {    
           while(
    $row mysql_fetch_assoc($result)) { 
                
    $id=$row['catID'];
                
    $name=$row['name'];                               
               
    $categories .="<option value=\"$id\">$name</option>";                                                                                                 
                }             
                eval (
    "\$template = \"".template("$template")."\";");
                echo 
    $template;     
                return 
    $template;                 
               }
               else {
               
    $categories .="<option value=\"0\">keine Kategorien</option>";                 
               eval (
    "\$template = \"".template("$template")."\";");
               echo 
    $template;  
               return 
    $template;
               }
              } 
    die Varibeln Rufe ich in dem template matches_add auf. doch irgendwie erscheint nichts. Wieso werden die Variblen nicht übergenohmen mit in die Funktion ?

  • #2
    ich gehe mal davon aus, dass $result sehr wohl übernommen wird...

    allerdings sehe ich die stelle nicht, an der die ergebnisse dann ausgegeben werden sollen.

    $template bleibt ja unverändert...

    greetz, high
    Zuletzt geändert von highrise; 05.08.2006, 02:21.
    Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
    When everything else fails, manipulate the data...
    Beschriftungen / Großformatdruck / Werbemittel

    Kommentar


    • #3
      In dem Template steht aber die Variable $error[0] ... drin.

      Kommentar


      • #4
        Ahhh.. daher läuft der hase...

        Du übergibst an die funktion folgendes:

        categories($result, "matches_add");

        means, der funktion ist anschließend $result als $result sowie "matches_add" als $template bekannt.

        das Template wird innerhal der funktion eingebunden... means das template kennt (geschützter Namensraum) auch nur die variablen, die der funktion bekannt sind.

        $error gehört nicht dazu....

        übergib einfach $error als error noch mit an die funktion...

        also categories($result, "matches_add", $error)

        in der definition musst du natürlich auc $error angeben


        function categories($result, $template, $error) {... bla blubb

        greetz high
        Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
        When everything else fails, manipulate the data...
        Beschriftungen / Großformatdruck / Werbemittel

        Kommentar


        • #5
          alles Klar Danke dir. Ich habe ein array so definiert

          $error[0],
          $error[1],
          $error[2]

          kann ich dann einfach die variabke $error übergeben ?

          Kommentar


          • #6
            ja, das sollte ohne Probleme möglich sein

            greetz, high
            Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
            When everything else fails, manipulate the data...
            Beschriftungen / Großformatdruck / Werbemittel

            Kommentar


            • #7
              ok und wie definiere ich dann in der Funktion das array ? so

              $error=$error[0]
              ....

              ???

              Kommentar


              • #8
                nene... also mal ganz langsam schritt für schritt...

                du änderst den kopf deiner funktion:

                function categories($result, $template, $error) {


                der aufruf (im oberen teil deines scriptes) sieht dann so aus:

                categories($result, "matches_add", $error);


                vorher hast du ja eventuell $error[0], $error[1] etc. irgendwelche fehlertexte zugewiesen...

                innerhalb der funktion kannst du nun auf diese texte zugreifen....

                etwa so: echo $error[0];

                was du dann damit machst, weiß ich nicht... wenn es noch nicht so richtig funktioniert, wäre es interessant zu wissen, was template($template) tut, und wie die template-dateien aufgebaut sind...

                immerhin rufst du mit template($template) ja schon wieder eine funktion auf, die die ganzen variablen außerhalb nicht kennt..

                wenn du zu viele verschachtelte funktionen hast, solltest du dir auch mal das schlüselwort global oder das superglobale array $GLOBALS näher betrachten.

                vielleicht hilft das eher weiter...

                greetz, high
                Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
                When everything else fails, manipulate the data...
                Beschriftungen / Großformatdruck / Werbemittel

                Kommentar


                • #9
                  wenn ich ich den inhalt immer kopiere geht es auch, ich wollte nur die Funktion weil ich das öfter brauche diesen Vorgang, deswegen die Funktion.

                  Meine Teamplate funktion sieht so aus :

                  PHP-Code:
                   function template($template,$type="html") {
                                    
                  $folder "templates";
                                    return 
                  str_replace("\"","\\\"",implode("",file($folder."/".$template.".".$type)));                    
                                    } 
                  und im Template stehen

                  Edit:

                  also wenn ich bei der Funktion einfach, $error dranhänge nach $template kommt das:

                  Warning: Missing argument 3 for categories(), called in C:\htdocs\warhistory\administration\matches.php on line 32 and defined in C:\htdocs\warhistory\administration\functions.php on line 94

                  Zeilen in matches
                  PHP-Code:
                  if($_POST['opponent'] == ""$error[0] = "<br><font size=\"1\" color=\"red\">» ausfüllen</font>";
                            if(
                  $_POST['maps'] == ""$error[1] = "<br><font size=\"1\" color=\"red\">» ausfüllen</font>";
                            if(
                  $_POST['result1'] OR $_POST['result2'] == "" $error[2] = "<br><font size=\"1\" color=\"red\">» ausfüllen</font>";
                           
                            echo 
                  $matches_navi;
                            
                  $result=query("SELECT catID, name, url FROM ".PREFIX."_matches_cats");
                            
                  categories($result"matches_add"$error); 
                  die function ist die gleiche
                  Zuletzt geändert von meGa; 05.08.2006, 17:05.

                  Kommentar


                  • #10
                    called in C:\htdocs\warhistory\administration\matches.php on line 32

                    also fehlt in der datei matches.php in zeile 32 die übergabe der dritten variablen (also $error).

                    wenn an dieser stelle kein $error zur verfügung steht, dann kannst du auch ein leeres array oder 'false' oder sowas übergeben...

                    greetz, high
                    Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
                    When everything else fails, manipulate the data...
                    Beschriftungen / Großformatdruck / Werbemittel

                    Kommentar


                    • #11
                      Aber es geht trotzdem der HTML erscheint trotzdem. Was nun ?

                      Kommentar


                      • #12
                        ich verstehe jetzt das problem nicht wirklich...

                        wenn es geht, dann ist es doch in ordnung? oder hab ich da jetzt was falsch verstanden?...

                        was geht denn? und was für fehler macht er noch?
                        Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
                        When everything else fails, manipulate the data...
                        Beschriftungen / Großformatdruck / Werbemittel

                        Kommentar


                        • #13
                          es geht wie es soll aber es erscheint diese meldung.

                          Kommentar


                          • #14
                            dann schau mal in die matches.php in zeile 32

                            dort steht etwas wie categories(irgendwas, irgendwas);

                            das änderst du z.b in categories(irgendwas, irgendwas, false);

                            dann ist die meldung weg
                            Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
                            When everything else fails, manipulate the data...
                            Beschriftungen / Großformatdruck / Werbemittel

                            Kommentar

                            Lädt...
                            X