Logische Schleife geht nicht; habe ich einen Denkfehler ?

Das mag schön aussehen, verursacht aber mir das Problem, dass nur 1. Sache ersetzt wird. Nämlich nur den Ausdruck der komischerweise miteinander identisch ist.

Map : de_dust2 (1 Runde)
Map : de_dust2 (2 Runde) Waren bei der Eingabe 2 mal die gleichen Maps, und nur diese werden auch angezeigt...
Für die anderen Expressions bleiben die Platzhalter stehen... :/

Klar kann man den Code noch kürzen, ich wollte, ob ihr mir das glaubt ich oder nicht, ein bisschen mit while Schleifen rumprobieren ^^. Außerdem hast du ein Semikolon vergessen ;).

Naja, was soll's jeder wie er möchte ...
 
Dein Problem wird durch meinen letztlich geposteten Code auch behoben. Die Zeile, in der ich das Semikolon vergessen habe, bewirkt, dass die Vorlage mit den Platzhaltern kopiert wird, um mit der Kopie weiter zu arbeiten. Dadurch wird das Original nicht verändert und die Platzhalter bleiben somit erhalten. Probier's einfach aus oder auch nicht. Ich wollte nur helfen.

snuu
 
PHP:
$tpl_inhalt_runden = $inhalt_runden;

for ($e = 0; $e < $anz_runden; $e++) {
  $inhalt_runden = $tpl_inhalt_runden;
  $inhalt_runden = ereg_replace("{nr}", ($e+1), $inhalt_runden);
  $inhalt_runden = ereg_replace("{mapx}", $map_x[$e], $inhalt_runden);
  $inhalt_runden = ereg_replace("{resultx}", $result_x[$e], $inhalt_runden);
  $inhalt_runden = ereg_replace("{teamx}", $team_x[$e], $inhalt_runden);
  echo(stripslashes($tmp_inhalt_runden));
}
So sollte es dann letztendlich funktionieren...
 
Ich hatte es eigendlich anders gemeint, dass du deine Vorlage, in deinem Fall $inhalt_runden als $template speicherst, doch jetzt hab ich was besseres, was du auch leicht verstehen kannst:

&nbsp;&nbsp;$e = 0;
&nbsp;&nbsp;while($e < $anz_runden) {
&nbsp;&nbsp;&nbsp;&nbsp;$inhalt_runde = $inhalt_runden;
&nbsp;&nbsp;&nbsp;&nbsp;$inhalt_runde = ereg_replace("{nr}", ($e+1), $inhalt_runde);
&nbsp;&nbsp;&nbsp;&nbsp;$inhalt_runde = ereg_replace("{mapx}", $map_x[$e], $inhalt_runde);
&nbsp;&nbsp;&nbsp;&nbsp;$inhalt_runde = ereg_replace("{resultx}", $result_x[$e], $inhalt_runde);
&nbsp;&nbsp;&nbsp;&nbsp;$inhalt_runde = ereg_replace("{teamx}", $team_x[$e], $inhalt_runde);
&nbsp;&nbsp;&nbsp;&nbsp;echo(stripslashes("<br>".$inhalt_runde));
&nbsp;&nbsp;&nbsp;&nbsp;$e++;
&nbsp;&nbsp;}
 
So, Jungs, ihr seit ja richtig fleißig ;). Ich bin auch sehr dankbar für eure Anteilnahme. Ich habe jetzt alle Codebeispiele getestet. Der Code von Reima ging nicht; es wurde nichts angezeigt. Ich hab dann mal echo(stripslashes($tmp_inhalt_runden)); (es wurde nichts angezeigT) in echo(stripslashes($inhalt_runden)); geändert, danach ging es allerdings auch nicht (es wurden jediglich 2 mal die Platzhalter angezeigt).
Das Codebeispiel von Gumbo hat allerdings tadellos funktioniert. Ich denke das Script geht jetzt erst, da du die 3 Zeile, welche vorher
PHP:
while($e < $anz_runden) {
    $inhalt_runden = $template;
    $inhalt_runden = str_replace("{mapx}", $map_x[$e], $inhalt_runden);
lautete, in der 1. Variable "richtigrum" bestimmt hast. Nämlich diesmal ist
PHP:
    $inhalt_runden = $template;
    $inhalt_runden = str_replace("{mapx}", $map_x[$e], 
 # WIRD ZU ->
    $inhalt_runde = $inhalt_runden;
    $inhalt_runde = ereg_replace("{nr}", ($e+1), $inhalt_runde);
Du speicherst nun glaub ich korrekterweise in einer neuen, bislang undefinierten Variable eine definierte Variable ab ($inhalt_runde = $inhalt_runden;
). Die neue Variable $inhalt_runde kann nun einen gewissen Inhalt, $inhalt_runden, speichern und man kann mit ihr arbeiten. Dieser Inhalt ist außerhalb der Variable abgespeichert ($inhalt_runden = Templates) und verändert sich bei der Ausführung der Schleife nicht. Anders hast du in einer schon definierten Variable etwas leeres gespeichert ($inhalt_runden = $template; ). Man kann zwar nun mit dieser Variable arbeiten, allerdings ist das wie eine Rechenanweisung in der man für x=0 arbeitet -> a*x+x=0... erhält. Also etwas ziemlich unbrauchbares. Und so ging dein Code vorher auch nicht. Dieser Fehler hat sich bei mir anfangs auch schon einige male dummerweise bemerkbar gemacht.
So, eine schöne Lösung.
So zu dieser Erklärung noch einmal das schöne Codebeispiel von Gumbo :
[ -> Beim Ausführen ist mir aufgefallen, dass für {nr} ein Kästchen gesetzt wird; es wird keine Id angezeigt. Nach einer kleinen Tüftelei, hab ich's rausgekriegt ;). Es steht schon geändert im Code ]
PHP:
$e = 0;
  while($e < $anz_runden) {
    $nr = $e+1;
    $inhalt_runde = $inhalt_runden;
    $inhalt_runde = ereg_replace("{nr}", "$nr", $inhalt_runde); // ($e+1 ging nicht -> gab ein Kästchen aus, "$e+1" ging auch nicht, gab z.b. 0+1, 1+1 aus; usw...
    $inhalt_runde = ereg_replace("{mapx}", $map_x[$e], $inhalt_runde);
    $inhalt_runde = ereg_replace("{resultx}", $result_x[$e], $inhalt_runde);
    $inhalt_runde = ereg_replace("{teamx}", $team_x[$e], $inhalt_runde);
    echo(stripslashes("<br>".$inhalt_runde));
    $e++;
  }
 
Zuletzt bearbeitet:
Ups, stimmt, hab vergessen die Zeile
Code:
echo(stripslashes($tmp_inhalt_runden));
in
Code:
echo(stripslashes($inhalt_runden));
zu ändern. Nach der Änderung sollte es aber dann eigentlich funktionieren, denke ich... vielleicht noch str_replace anstatt ereg_replace, aber sonst... hm... ach ich glaub das Wetter macht mir zu schaffen, da kann man gar nicht mehr anständig denken ;)
 
Zurück