Avatar billede netpimp Nybegynder
14. november 2011 - 04:48 Der er 6 kommentarer og
1 løsning

Udskriv alternativ <div> hver 10. gang

På min hjemmeside, udskriver jeg 40 gallerier med thumbs på følgende måde:

<?php
$result = mysql_query("SELECT * FROM galleries ORDER BY RAND() LIMIT 40") or die(mysql_error()); 

while($row = mysql_fetch_array( $result )) {

echo '<div class="thumb"><a href="gallery.php?id='.$row['id'];.'"><img src="img/'.$row['id'];.'.jpg" alt="" /></a></div>';
}

?>

For hvert 10. divs der bliver udskrivet, ønsker jeg i én tilfældig af de 10 divs, at koden ser således ud:

echo '<img style="position: relative; border: none; margin: 20px 0px -100px 20px;" src="img/reklame.gif" alt="Reklame" /><div class="thumb"><a href="gallery.php?id='.$row['id'];.'"><img src="img/'.$row['id'];.'.jpg" alt="" /></a></div>';

Er der nogen der har et godt bud på, hvordan jeg kan gøre dette?
14. november 2011 - 06:25 #1
Du definerer $i = 1 før løkken og lægger 1 til $i efter hver gennemløb af løkken.  Hvis så $i modulus 10 (resten efter at man har divideret med 10) er 0 skrives din alternative div.  Såsom:

<?php
$result = mysql_query("SELECT * FROM galleries ORDER BY RAND() LIMIT 40") or die(mysql_error());

$i = 1;
while($row = mysql_fetch_array( $result ))
{
if($1%10 == 0)  echo '<img style="position: relative; border: none; margin: 20px 0px -100px 20px;" src="img/reklame.gif" alt="Reklame" /><div class="thumb"><a href="gallery.php?id='.$row['id'];.'"><img src="img/'.$row['id'];.'.jpg" alt="" /></a></div>';

else echo '<div class="thumb"><a href="gallery.php?id='.$row['id'];.'"><img src="img/'.$row['id'];.'.jpg" alt="" /></a></div>';

$i++
}
Avatar billede netpimp Nybegynder
15. november 2011 - 00:46 #2
Du er helt sikker inde på noget af det rigtige, men lige nu udskriver den altid den alternative div, som nummer 10.

Det skulle i stedet for være en tilfældig af de 10 divs.

Efter et par små rettelser ser koden nu sådan ud:

<?php
$result = mysql_query("SELECT * FROM galleries ORDER BY RAND() LIMIT 40") or die(mysql_error());

$i = 1;
while($row = mysql_fetch_array( $result ))
{
if($i%10 == 0)  echo '<img style="position: relative; border: none; margin: 20px 0px -100px 20px;" src="img/reklame.gif" alt="Reklame" /><div class="thumb"><a href="gallery.php?id='.$row['id'].'"><img src="img/'.$row['id'].'.jpg" alt="" /></a></div>';

else echo '<div class="thumb"><a href="gallery.php?id='.$row['id'].'"><img src="img/'.$row['id'].'.jpg" alt="" /></a></div>';

$i++;
}
?>
15. november 2011 - 06:24 #3
<?php
$result = mysql_query("SELECT * FROM galleries ORDER BY RAND() LIMIT 40") or die(mysql_error());
$a = rand(1, 10);
$array[] = $a;
$a = rand(11, 20);
$array[] = $a;
$a = rand(21, 30);
$array[] = $a;
$a = rand(31, 40);
$array[] = $a;

$i = 1;
while($row = mysql_fetch_array( $result ))
{
if(in_array($i, $array))  echo '<img style="position: relative; border: none; margin: 20px 0px -100px 20px;" src="img/reklame.gif" alt="Reklame" /><div class="thumb"><a href="gallery.php?id='.$row['id'].'"><img src="img/'.$row['id'].'.jpg" alt="" /></a></div>';

else echo '<div class="thumb"><a href="gallery.php?id='.$row['id'].'"><img src="img/'.$row['id'].'.jpg" alt="" /></a></div>';

$i++;
}
?>
15. november 2011 - 06:25 #4
Undskyld - jeg havde skrevet det i notepad men så kopieret for lidt deraf.  Hvad jeg ville have sagt er dette:

Ja, jeg gik ud fra, at du ville have hver tiende skrevet alternativt ud som titlen antydede.  Du vil altså i stedet have en tilfældig mellem 1 og 10 plus en tilfældig mellem 11 og 20 o.s.v. have skrevet alternativt ud?  Altså, ud af de 40 for eksempel nummer 7, 11, 23, og 38?

Jamen så kan du generere og placere de fire tilfældige tal i en array og så sammenligne hver linie af udtrækket dermed, så som:

<?php
$result = mysql_query("SELECT * FROM galleries ORDER BY RAND() LIMIT 40") or die(mysql_error());
$a = rand(1, 10);
$array[] = $a;
$a = rand(11, 20);
$array[] = $a;
$a = rand(21, 30);
$array[] = $a;
$a = rand(31, 40);
$array[] = $a;

$i = 1;
while($row = mysql_fetch_array( $result ))
{
if(in_array($i, $array))  echo '<img style="position: relative; border: none; margin: 20px 0px -100px 20px;" src="img/reklame.gif" alt="Reklame" /><div class="thumb"><a href="gallery.php?id='.$row['id'].'"><img src="img/'.$row['id'].'.jpg" alt="" /></a></div>';

else echo '<div class="thumb"><a href="gallery.php?id='.$row['id'].'"><img src="img/'.$row['id'].'.jpg" alt="" /></a></div>';

$i++;
}
?>
Avatar billede netpimp Nybegynder
16. november 2011 - 07:53 #5
Med det eksempel du har lavet der, udskriver den altid den alternative div i række 5 eller 10, 15 eller 20, 25 eller 30 osv..

Jeg skulle gerne frem til en løsning så den vælger en helt tilfældig række ud af de 40, med et tilfældigt tal mellem 1 og 10, 11 og 20 osv.. Ligesom du selv skriver, kunne det f.eks. være nummer 7, 11, 23, og 38.
16. november 2011 - 07:57 #6
Jeg står og skal afsted, jeg kikker i aften.  På den testomgivning jeg lavede virkede det præcist sådan som du beskriver, den valgte et tilfældigt tal mellem 1 og 10 og et andet mellem 11 og 20 o.s.v.  7,11,23,38 er en af mulighederne.
Avatar billede netpimp Nybegynder
16. november 2011 - 08:19 #7
Så fik jeg selv styr på det, det var bare en lille fejl i en enkelt linje der gjorde de.

if(in_array($i, $array))  echo '<img style="position: relative; border: none; margin: 20px 0px -100px 20px;" src="img/reklame.gif" alt="Reklame" /><div class="thumb"><a href="gallery.php?id='.$row['id'].'"><img src="img/'.$row['id'].'.jpg" alt="" /></a></div>';

Skulle ændres til:

if(in_array($i, $array))  echo '<div class="thumb"><img style="position: relative; border: none; margin: 20px 0px -100px 20px;" src="img/reklame.gif" alt="Reklame" /><a href="gallery.php?id='.$row['id'].'"><img src="img/'.$row['id'].'.jpg" alt="" /></a></div>';

Mange tak for din hjælp :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester