PHP Funktion - Error

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

  • PHP Funktion - Error

    Folgende Funktion:
    Code:
    <?php function menu($var)
    	{
    		$i = 0;
    		while($i < 80)
    		{
    		if($i>0)
    			$var = $tpl;
    		$tpl = preg_match("/{menu_(.*)}/i", $var, $matches);
    		foreach($matches AS $key=>$element)
    			${"tpl_$key"} = $element;
    		$tpl = str_replace('{menu_', '', $tpl_0);
    		$tpl = str_replace('}', '', $tpl);
    		$tpl = preg_replace("/{menu_(.*)}/i", $index."?sec=".$tpl, $var);
    		$i++;
    		}	
    		return $tpl;	
    	} 
    ?>
    Möchte, dass ein Platzhalter {menu_variable} immer wieder (80x) ersetzt wird und dann letztendlich ausgegeben wird, leider wird dieser Platzhalter immer wieder mit dem ersten ersetzten Element ersetzt, warum?

    EDIT:
    Z.B. {menu_index} -> index.html?sec=index
    {menu_download} -> index.html?sec=download

    So sollte das ganze nachher aussehen, aber es bleibt das Problem, dass zum Schluss immer index.html?sec=index steht und nicht mit download,... weiter ersetzt wird.

  • #2
    while($i < 80) Solange $i kleiner ist als 80
    if($i>0) Wenn $i grösser ist als 0

    dann

    $var = $tpl;



    Oder hab ich da nen denkfehler

    PHP-Code:
    for ($i=0;$i<80;$i++)
    {
     ...
    Dein Code...

    Wird etwas 80x wiederholt...
    gruss Chris

    [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

    Kommentar


    • #3
      mach mal testausgaben, dann wirst du den fehler sicher rasch finden. error-reporting ist auf E_ALL?

      Warum benutzt du keine [PHP]-Tags?

      Kommentar


      • #4
        Wo ist mein Denkfehler?
        Wenn $i größer ist als 0, dann ist die Schleife mind. 1x durchgelaufen, dann soll er als Quelltext $tpl nehmen und nicht mehr die Templatedatei ($var), damit die vorherigen Ersetzungen nicht verloren gehen. Oder denke ich vollkommen falsch?


        EDIT:
        @TobiaZ
        Habe ich jetzt eingebaut, danke für den Hinweis, muss erstmal alle Meldungen analysieren, wenn ich dann noch Fragen habe, melde ich mich nochmal.
        Zuletzt geändert von ; 12.10.2005, 18:10.

        Kommentar


        • #5
          muss erstmal alle Meldungen analysieren, wenn ich dann noch Fragen habe, melde ich mich nochmal.
          Genau so ists gedacht. Erst wenn alle Fehler weg sind, können wir uns ums eigentliche Problem kümmern.

          Kommentar


          • #6
            So habe soweit alle Errors gefixt.
            Mein Problem besteht aber weiterhin.
            Habe jetzt sogar noch eines dazu bekommen. Habe die Dateien index.php, confic.inc.php, functions.inc.php alle in einem Verzeichnis.
            Die Dateien sind so includet in der index.php
            PHP-Code:
            include('confic.inc.php');  
            include(
            'function.inc.php'); 
            Jetzt bekomme ich aber die Meldung:
            Notice: Undefined variable: index in F:\xampp\htdocs\ngd-systems\function.inc.php on line 36
            Die Variable ist aber definiert. Sie steht auch in der index.php zur Verfügung, leider nicht in der functions.inc.php, wie kann dies zusammenliegen?
            Mein Problem mit der Schleife in der Funktion besteht auch noch, hat jemand noch eine Idee?

            Kommentar


            • #7
              wann wird die var aufgerufen und wann wird sie definiert.
              EDIT:
              edit: ich seh gerade, dass du $index in der funktion verwendest. schonmal was davon gehört, dass normale variablen nicht global sind. somit also entweder in der funktion definiert werden müssen, oder der funktion übergeben werden müssen.
              Zuletzt geändert von TobiaZ; 12.10.2005, 18:34.

              Kommentar


              • #8
                Original geschrieben von hasch
                Die Variable ist aber definiert. Sie steht auch in der index.php zur Verfügung, leider nicht in der functions.inc.php, wie kann dies zusammenliegen?
                Wird dort versucht, auf die Variable innerhalb einer Funktion zuzugreifen, ohne sie für diese verfügbar zu machen ...?


                Edit: Blöde Frage - Ja, natürlich, wie man am eingangs geposteten Codeschnippsel sieht.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Original geschrieben von TobiaZ
                  wann wird die var aufgerufen und wann wird sie definiert.
                  $var wird in der index.php definiert, sie enthaält den Quellcode der Templatedatei für einen gewissen Bereich des Gesamttemplates -> also normale Templatequelltext.

                  @wahsaga
                  Edit: Blöde Frage - Ja, natürlich, wie man am eingangs geposteten Codeschnippsel sieht.
                  Wie kann man eine Variable für eine Funktion bereitstellen? (Habe echt zuvor noch nei etwas davon gehört.)

                  Kommentar


                  • #10
                    $var wird in der index.php definiert,
                    um $var geht es aber im moment nicht! Fehlermeldung gelesen?

                    Kommentar


                    • #11
                      OK danke, die $index Variable habe ich gefixt, wird jetzt übergeben.
                      Aber wieso klappt der Rest der Funktion nicht? (Das jeweilige Ersetzen?) - Dafür gibt es ja keine Fehlermeldung.

                      Kommentar


                      • #12
                        Aktueller code? Inkl. Testausgaben?

                        Kommentar


                        • #13
                          Habe hier mal nen Code von einem Kumpel, hat er mir gerade zugesandt, der klappt.
                          PHP-Code:
                          function menu($var)
                          {
                            
                          $tpl preg_replace("#\{menu_(.*?)\}#is""index.php?sec=\\1"$var80);
                            
                            return 
                          $tpl;

                          Aber wieso meiner nicht?

                          PHP-Code:
                              function menu($var$index)
                              {
                                  
                                  for (
                          $i=0;$i<3;$i++)
                                  {
                                      if(
                          $i>0)
                                          
                          $var $tpl_end;
                                      
                          $tpl preg_match("/{menu_(.*)}/i"$var$matches);
                                      foreach(
                          $matches AS $key=>$element)
                                          ${
                          "tpl_$key"} = $element;
                                      
                          $tpl str_replace('{menu_'''$tpl_0);
                                      
                          $tpl str_replace('}'''$tpl);
                                  
                                      
                          $tpl_end preg_replace("/{menu_(.*)}/i""$index?sec=".$tpl$var);
                                  }    
                                  return 
                          $tpl_end;    
                              } 
                          Testausgaben immer: http://localhost/ngd-systems/index.php?sec=support

                          Kommentar


                          • #14
                            du held!!!

                            Kommentar


                            • #15
                              OffTopic:
                              Rofl!!!

                              Kommentar

                              Lädt...
                              X