• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

while Schleife: nach x -> HTML einbinden

aJunkie

Mitglied
Hallo,

so würde es ja funktionieren:
PHP:
    $songcount++;     // Zähler
    
    if ($songcount == 5) {
    $songcount = 0;
    echo "5 erreicht";
    }
Allerdings gibt es bei Google Adsense einen Limit von maximal 5 Textlinks.
Das heißt, wenn $songcount 25 überschreitet, bindet das da oben mehr als 5 Textlinks ein.

Deswegen dachte ich an so etwas:

PHP:
$songcount++;
$ziel = $songcount / 5; // denn maximal 5 ist erlaubt.

if($songcount == $ziel) { // Wenn $songcount $ziel erreicht hat...
$songcount = 0;
/* 
soll hier was ausgegeben werden. Also nicht alle 5, sondern (insgesamt durch 5 = $ziel) 
Alle $ziel soll eben was ausgegeben werden und es würde nicht mehr als 5 mal eingeblendent werden.
Beispielrechnung:
$songcount hat 100
$songcount durch 5 sind 20.
Also soll alle 20 "Zeilen" was eingeblendet werden.
Ich hoffe, dass das verständlich ist.
So komme ich nicht auf über 5 Einblendungen. Die Werbung wäre schön verteilt.
*/
}
Nur funktioniert das da oben nicht. Jemand eine Idee, warum?
Sorry, habe heute schon so viele if Abfragen geschrieben. :-/

PS. Meine If Abfrage macht irgendwie auch keinen Sinn.
 
Zuletzt bearbeitet:
Nein, es ist ja dynamisch.
Manchmal ist $songcount ja 25, manchmal 50 oder 540. Ich weiß es eben vorher nicht.

$ziel wäre die Variable, die dann sagt, alle (int)$ziel wird HTML eingeblendet.

Edit: Im Prinzip muss ich dem sagen, dass er alle $ziel (unterschiedliche Zahl), HTML einblenden soll.
 
Ich versuch es noch mal zu erklären.

In der while Schleife zähle ich $songcount hoch, also: $songcount++
Heute erreicht $songcount 120.

Ich darf aber nur insgesamt 5 Codes einblenden.

Also rechne ich $songcount durch 5.
$maximal = $songcount / 5;

$maximal enthält nun den Wert, bei dem alle x dann der Code eingeblendet werden würde.
Hier wären es: 120 / 5 = 24.

Also muss alle 24 Datensätze der HTML Code angezeigt werden.
So komme ich nicht auf über 5 Einblendungen.

Bei $songcount = 500 wären $maximal = 100.
Also alle 100 Datensätze dann der Code.

Nach $maximal -> Werbung.
Es geht dann nochmal $maximal weiter, dann nochmal Werbung.
5 Mal. Es darf also kein break kommen.
 
Nicht maximal elegant und die Werbung ist nicht bestmöglich verteilt, aber so sollte es gehen:

PHP:
<?php

$songcount = 69;
$interval  = floor($songcount / 5);
$adCounter = 0;

for ($i = 0; $i < $songcount; $i++) {
    echo 'Song<br />';

    if (($i + 1) % $interval === 0 && $adCounter < 5) {
        $adCounter++;
        echo '---------- Werbung<br />';
    }
}
 
Die obere Version ist gut, aber ich denke es ist immer gut eine 2. zu sehen
PHP:
$songcount = 1000;
$zeilen = 5;
$zahler = 0;
while($zahler = $zeilen)
{
  if($zahler + 1 == $songcount)
  {
    break;
  }
  else
  {
    echo "Zeile <br>";
  }
  $zahler++;
}
return;
der vorteil ist
soltest du mahl wenger haben, wird automatisch auch weniger angezeigt und es entstehen keine Fehler oder Leerzeilen.
 
Es entsteht vor allem eine Endlosschleife. Ich meine es nicht böse, aber es wäre wirklich toll, wenn du deinen Code testen würdest. Das verwirrt sonst mehr, als dass es hilft. :)
 
Beide Versionen funktionieren leider nicht.
Bei mir existiert ja schon eine while Schleife, in dem Datensätze aus der Datenbank aufgelistet werden.

Mit mermshaus for Schleife passiert ungefähr das selbe wie in meinem Startthread. Und das um das 5 Fache. Also wenn ich 20 Datensätze habe, stellt die for Schleife 100 dar.

Ich probier dennnoch ein wenig rum wie die ganze Zeit. =)

Mein roher Script:
PHP:
<table>
<?php
$sql2 = mysql_query("SELECT * FROM `".$tabelle."` ORDER BY `datum` DESC ,`zeit` DESC");
while($row = mysql_fetch_assoc($sql2) ){
    $zahl++;                    // Zähler für <tr> und Werbung
        ?>
// Ausgabe:

<tr><?php echo $row['beispiel']; ?></tr>

<?php }  ?>
</table>
 
Zuletzt bearbeitet:
$songcount sollte mit mysql_num_rows() gefüllt werden. In etwa so:

PHP:
<?php

mysql_connect('localhost', 'user', 'password');
mysql_select_db('database');

$q = "
SELECT
        `title`
FROM
        `songs`
ORDER BY
        `title` ASC";

$res = mysql_query($q);

$songcount = mysql_num_rows($res);
$interval  = floor($songcount / 5);
$adCounter = 0;
$i         = 0;

while ($row = mysql_fetch_assoc($res)) {
    echo $row['title'] . '<br />';

    if (($i + 1) % $interval === 0 && $adCounter < 5) {
        $adCounter++;
        echo '---------- Werbung<br />';
    }

    $i++;
}
 
Zurück
Oben