Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Element x mal in einer While Schleife anzeigen lassen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Element x mal in einer While Schleife anzeigen lassen

    Hey Leute,

    folgendes Problem: ich habe eine MYSQL Abfrage in einer While Schleife mit Limit 5.

    Folgendes wird mir logischerweise ausgegeben:

    ////////////////////////////////////////
    ITEM1
    ITEM2
    ITEM3
    ITEM4
    ITEM5
    /////////////////////////////////////////

    Jetzt möchte ich jedoch eine Werbeanzeige in dieser While-Schleife einsetzten.

    Logischerweise wird mir das ausgegeben:
    ////////////////////////////////////////
    ITEM1
    Werbeanzeige
    ITEM2
    Werbeanzeige
    ITEM3
    Werbeanzeige
    ITEM4
    Werbeanzeige
    ITEM5
    Werbeanzeige
    /////////////////////////////////////////

    Jedoch möchte ich, dass die Werbeanzeige nicht unter jedem ITEM angezeigt wird, sondern nur unter den ersten beiden ITEMS.

    ////////////////////////////////////////
    ITEM1
    Werbeanzeige
    ITEM2
    Werbeanzeige
    ITEM3
    ITEM4
    ITEM5
    /////////////////////////////////////////

    Mein Code:

    PHP-Code:
    $abfrage "SELECT * FROM tab WHERE ORDER BY datum DESC LIMIT 5";
    $ergebnis mysql_query($abfrage);
    while(
    $row mysql_fetch_object($ergebnis))
        {
    echo 
    'ITEM'.$row->id.'';
       } 
    Denke ich habe es gut geschildert
    Gruß

  • #2
    Setz ne Variable die die Schleifendurchläufe zählt.

    Die mysql_* Erweiterung ist veraltet und wird in der nächsten PHP-Version entfernt.
    Durch einen Wechsel auf mysqli_* oder PDO greifst du auf die modernere API zu und hast die Möglichkeiten Prepared Statements zu benutzen die gegen Injections schützen.
    Ich persönlich bevorzuge PDO, schönes Tutorial: http://www.peterkropff.de/site/php/pdo.htm
    [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
    [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

    Kommentar


    • #3
      Hey,
      vielen Dank!

      irgendwie fehlt mir da der Anschluss, die Anzahl der Werbeanzeigen(2) muss ich ja vor der While-Schleife Deklarieren also:
      PHP-Code:
      $ad_code 2
      In der While Schleife dann quasi "+1 rechnen, bis 2 erreicht wurde, sonst nichts"

      Gedankengang richtig so?

      Gruß

      Kommentar


      • #4
        Hallo,

        du definierst dir eine Zählervariable mit dem Wert 0. Beispielsweise $a
        Dann beginnt deine Schleife und du zählst deine Variable hoch ($a++).
        Dann eine if Abfrage ob dein Zähler 1 oder 2 ist. Wenn ja. dann führst du die Anweisung fürs Werbebanner aus und ansonsten nicht.

        Kommentar


        • #5
          Also sowas in der Art..

          PHP-Code:
          $I 0;
          while(
          $row = ...) {
          ... 
          //Das ITEM
          if($I 2) {
          ... 
          //Die Werbung
          $I++;
          }
          //IF End
          }//WHILE End 
          Im ersten Durchlauf der Schleife wird I = 1, danach wird I = 2, also ab dem 3. Durchlauf die IF-Abfrage nicht mehr ausgeführt. Die Werbung kommt also 2x jeweils hinter dem ITEM.

          Kommentar


          • #6
            Hey,

            vielen Dank!

            Komischerweise gibt er mir jetzt das aus:

            ///////////////////////////////////
            ITEM1
            Werbeanzeige Werbeanzeige
            ITEM2
            ITEM3
            ITEM4
            ITEM5
            //////////////////////////////////

            Also anstatt unter den ersten beiden Items, setzt es einfach 2 mal unter das erste Item.

            Mein Code:
            PHP-Code:
            $I 0;
            $abfrage "SELECT * FROM tab WHERE ORDER BY datum DESC LIMIT 5";
            $ergebnis mysql_query($abfrage);
            while(
            $row mysql_fetch_object($ergebnis))
                {
            echo 
            'ITEM'.$row->id.'';

            if(
            $I 2) {
            echo 
            'Werbeanzeige';
            $I++;
            }
               } 
            Mögliche Ursachen?

            Gruß

            Kommentar


            • #7
              Werden wirklich Zeilenumbrüche eingefügt?
              PHP-Code:
              echo 'ITEM'.$row->id.''
              3 unnötige Zeichen

              Die mysql_* Erweiterung ist veraltet und wird in der nächsten PHP-Version entfernt.
              Durch einen Wechsel auf mysqli_* oder PDO greifst du auf die modernere API zu und hast die Möglichkeiten Prepared Statements zu benutzen die gegen Injections schützen.
              Ich persönlich bevorzuge PDO, schönes Tutorial: http://www.peterkropff.de/site/php/pdo.htm
              [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
              [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

              Kommentar


              • #8
                tatsächlich, ein <br> hat es geregelt

                Vielen Dank!!!

                Kommentar

                Lädt...
                X