kostenloser Webspace werbefrei: lima-city


Problem mit If-Abfrage

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    chatter

    Kostenloser Webspace von chatter

    chatter hat kostenlosen Webspace.

    Ich habe ein Problem mit einer If-Abfrage in einer for Schleife. Bei $i == 10 sollte er eigentlich den 1. If-Teil ausgeben, aber es kommt immer nur der 2. Teil. Ich kann leider keinen Fehler bei der Abfrage finden.

    function ersetzer($text) {
        for ($i=1; $i<11; $i++) {
          echo $i.\"<br />\";
         if ($i == 1) {
          $text = str_replace (\"[auswahl$i]\", \"\\\\n\\\"; if ({f$i}!= \\\"\\\") {echo \\\"\", $text);
         } else{
          $text = str_replace (\"[auswahl$i]\", \"if ({f$i}!= \\\"\\\") {echo \\\"\", $text);
         }
         if ($i == 10) {
          $text = str_replace (\"[auswahlende$i]\", \"\\\";}//$i echo \\\"\", $text);
         } else {
          $text = str_replace (\"[auswahlende$i]\", \"\\\";}//$i\", $text);
         }
         return $text;
     }
    }
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. ziemlich undurchsichtlich mit den ganzen backslashs aber müsste hier: str_replace (\\\"[auswahlende$i]\\\", \\\"\\\\\\\";} nicht die geschweifte klammer weg?

    wäre net wen du mal die php-datei als txt-datei hochladen könntest, zum besseren verständnis.

    mfg kalimor
  4. Autor dieses Themas

    chatter

    Kostenloser Webspace von chatter

    chatter hat kostenlosen Webspace.

    Wegen den ganzen \\ kann ich leider nichts machen, vielleicht wird das Problem bei Lima doch mal behoben. Die geschweifte sollte eigentlich kein Problem sein, da es ja richtig ersetzt wird, nur wird bei $i == 10 der falsche If-Teil aufgerufen(der 2., der nur bei $i == 1-9 sein sollte).
  5. es wäre ja eben schön wenn du mal die php-datei in einen editor kopieren könntest, es dann als text-datei abspeichern könntest, und diese text datei dan hochladen würdest, dürfte eigentlich kein problem sein^^
  6. Deine Logik ist völlig falsch. Wenn er bei $i von 1 bis 9 den 2. Teil aufrufen soll, muss du die Bedingung anders formulieren. So in der Art
    <?
    if($i>=1 && $i<=9)
    {
    //...
    }
    ?>

    Momentan ruft er den Tei halt nur auf, wenn $i genau (==) 10 ist.
  7. s******s

    Er will ja auch, dass der erste Teil genau dann aufgerufen wird, wenn $i = 10 ist.
    Ansonsten, also wenn $i = 1-9 ist, soll der zweite Teil aufgerufen werden.

    Oder verstehe ich etwas falsch? :P


    Nunja, jedenfalls scheint es bei mir zu funktionieren. Keine Ahnung was bei dir falsch läuft. :P
  8. Autor dieses Themas

    chatter

    Kostenloser Webspace von chatter

    chatter hat kostenlosen Webspace.

    @kalimor Es ist nicht mehr als die Funktion. Über $text wird ein Teil eines Scriptes eingefügt wo eben die entsprechenden Stellen ersetzt werden sollen.

    @tct Ich glaube du hast das falsch verstanden. Die If-Abfrage ist ja in einer Schleife wo irgendwann alle Zahlen von 1-10 durchlaufen werden. Das Problem ist nur dass das If irgendwie nicht richtig geht.

    @shandris Genau das meine ich.

    Es sollte ja auch funktionieren, die Echo-Ausgabe zeigt auch alle Zahlen aber das if reagiert nicht drauf. Die erste If-Abfrage ($i == 1) funktioniert aber richtig. Liegt es vielleicht an der 10 selbst? Hatte da mal ein Problem dass bei einer anderen Funktion die 1 normal bei 1 und auch bei 10 gefunden hat und beide ersetzt hat([auswahl1] und [auswahl1]0 kam dabei raus). Habe das gelöst indem ich die Zahlen eindeutig mit einem Zusatz gekennzeichnet hatte.
  9. s******s

    Kann es sein, dass dein $text einfach genauso angezeigt wird, wie wenn es nicht die Zahl 10 ist?

    Denn ich habe es jetzt mal mit deinem Code versucht, aber den $text mit eindeutigen Buchstaben ersetzt.

    <?
     for ($i=1; $i<11; $i++) {
          echo $i.\"<br />\";
         if ($i == 1) {
          echo \"x\";
         } else{
          echo \"y\";
         }
         if ($i == 10) {
          echo \"a\";
         } else {
          echo \"b\";
         }
     } 
    ?>


    Wenn dur dir das also mal auf http://shandris.lima-city.de/a.php anschaust, siehst du genau, dass bei Nummer 10 anstelle des b ein a angezeigt wird.

    Beitrag geändert: 11.9.2007 17:44:37 von shandris
  10. Autor dieses Themas

    chatter

    Kostenloser Webspace von chatter

    chatter hat kostenlosen Webspace.


    Kann es sein, dass dein $text einfach genauso angezeigt wird, wie wenn es nicht die Zahl 10 ist?


    Ja genau so ist es. $i zählt zwar bis 10(erreicht das wie bei deinem Script auch) aber If führt trotzdem bei 10 den falschen(2.) Teil aus.

    if ($i == \"10\" ) brachte auch keine Besserung.

    Beitrag geändert: 12.9.2007 0:05:28 von chatter
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!