Kom ihåg mig?
Home Menu

Menu


"pausa" en while-loop, och sen låta den fortsätta

 
Ämnesverktyg Visningsalternativ
Oläst 2012-03-21, 01:09 #1
jonssondesign jonssondesign är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2010
Inlägg: 709
jonssondesign jonssondesign är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2010
Inlägg: 709
Standard "pausa" en while-loop, och sen låta den fortsätta

Hejsan, jag sitter just nu och kodar min första sida i php och mysql, och har kommit en bit på vägen.

Jag har lärt mig allt på nätet, och kollat in en del tutorials, så mina kunskaper är inte de bästa..
Men jag ville göra en sida on my own, så jag lättare kan lära mig.

Jag tänkte jag skulle försöka mig på att skapa en webbshop (kanske lite överkurs, men det går bra hitils i alla fall.

Jag skulle dock vilja veta om det på något sätt går att lägga in en annons efter ett x antal rader.

exempel:


<ul>
<li>produkt 1</li>
<li>produkt 2</li>
<li>produkt 3</li>
<li>produkt 4</li>
<div>Annons</div>
<li>produkt 5</li>
<li>produkt 6</li>
<li>produkt 7</li>
<li>produkt 8</li>
</ul>

Förstår ni hur jag menar?

Jag använder mig av en vanlig while-loop för att lista produkterna.
Jag tänker mig att man på något sätt ska kunna stoppa loopen, utföra en kod (lägga in annonsen), och sen sätta igång loopen igen.

Eller om man kanske kan på något sätt kan räkna antalet <li>?

Kanske kan man använda sig av något annat?

Hoppas ni kan hjälpa mig, och om ni behöver veta mer så är det bara att säga till så fixar jag fram det begärda!

mvh,
Fredrik Jonsson
jonssondesign är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-03-21, 01:32 #2
Jines avatar
Jine Jine är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Feb 2005
Inlägg: 1 032
Jine Jine är inte uppkopplad
Har WN som tidsfördriv
Jines avatar
 
Reg.datum: Feb 2005
Inlägg: 1 032
Kod:
while($products as $product) {
   if($i == 5) {
       echo 'Annons!';
   } else {
       echo '<li>'.$product.'</li>';
   }
}
Alternativt kan du experimentera med modulus för att t.ex. visa en annons var N produkt.
Jine är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-03-21, 07:41 #3
jonny jonny är inte uppkopplad
Supermoderator
 
Reg.datum: Sep 2003
Inlägg: 6 941
jonny jonny är inte uppkopplad
Supermoderator
 
Reg.datum: Sep 2003
Inlägg: 6 941
Lämpligen så räknar du antalet rader och kontrollerar om du är på rad X varvid du infogar annonsen.
jonny är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-03-21, 09:29 #4
Monkboll Monkboll är inte uppkopplad
Medlem
 
Reg.datum: Apr 2010
Inlägg: 157
Monkboll Monkboll är inte uppkopplad
Medlem
 
Reg.datum: Apr 2010
Inlägg: 157
Skulle gjort precis som Jine föreslog.
Fast utan else satsen då så att den inte hoppar över 5an?
Monkboll är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-03-21, 09:42 #5
foks foks är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Apr 2003
Inlägg: 727
foks foks är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Apr 2003
Inlägg: 727
Citat:
Ursprungligen postat av Jine Visa inlägg
Kod:
while($products as $product) {
   if($i == 5) {
       echo 'Annons!';
   } else {
       echo '<li>'.$product.'</li>';
   }
}
Alternativt kan du experimentera med modulus för att t.ex. visa en annons var N produkt.
Glöm inte att lägga in $i++ någonstans.
foks är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-03-21, 10:08 #6
jonssondesign jonssondesign är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2010
Inlägg: 709
jonssondesign jonssondesign är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2010
Inlägg: 709
Skulle någon vänlig själ vilja berätta för mig hur Jines kod fungerar? Vad ska variabeln "i" innehålla?

Jag kan skicka en pastebin kopia på min kod när jag kommer hem sen, så kan ni enklare bedömma om
Jine's kod är det bästa sättet.
jonssondesign är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-03-21, 10:32 #7
Kekke Kekke är inte uppkopplad
Medlem
 
Reg.datum: Feb 2011
Inlägg: 198
Kekke Kekke är inte uppkopplad
Medlem
 
Reg.datum: Feb 2011
Inlägg: 198
Kod:
<?php
$i = 0;
while($row = mysql_fetch_array($result)) {
    if($i == 5) //Kolla om $i är 5 t.ex. i sådant fall skriv ut annons, $i är antal gånger loopen körts
        echo '<li>Annons</li>';
    //Skriv alltid ut varan
    echo '<li>' . $row['vara'] . '</li>';
    
    //Öka variabeln $i så att vi ser hur många gånger loopen har körts
    $i++;
}
?>
Kekke är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-03-21, 10:33 #8
Monkboll Monkboll är inte uppkopplad
Medlem
 
Reg.datum: Apr 2010
Inlägg: 157
Monkboll Monkboll är inte uppkopplad
Medlem
 
Reg.datum: Apr 2010
Inlägg: 157
Kör den så här borde den funka.
Eller hur ser din while loop ut?

$i = 0;
while($products as $product) {
if($i == 5) {
echo "<div>Annons</div>";
}
echo "<li>$product</li>";
$i++;
}
Monkboll är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-03-21, 11:50 #9
Fredrik-ss avatar
Fredrik-s Fredrik-s är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jun 2007
Inlägg: 1 010
Fredrik-s Fredrik-s är inte uppkopplad
Har WN som tidsfördriv
Fredrik-ss avatar
 
Reg.datum: Jun 2007
Inlägg: 1 010
Kan dra mitt strå till stacken i och förklara Monkboll's kod:

// Innan du påbörjar while-loopen definierar du en variabel till 0
$i = 0;
// Så länge det finns produkter att hämta ut så kör vi while satsen nedanför
while($products as $product) {
// Om variabel $i är lika med 5 så kör vi ut annonsen annars skippas denna if-sats eftersom uttrycket inte är sant
if($i == 5) {
echo "<div>Annons</div>";
}
// Vi skiver ut produkten
echo "<li>$product</li>";
// Nedan ökar vi $i variabeln med ett (++ betyder öka med ett) du skulle lika gärna kunna skriva $i = $i + 1; Men det blir mindre kod att skriva det som nedanför.
$i++;
}

Varje gång vi har kört ett varv i whilesatsen så kommer $i att öka med ett. Första varvet är $i 0, nästa varv är $i 1, därefter är $i 2 osv. När $i till slut kommer att bli 5 så blir det uttrycket vi har skrivit i if-satsen sant (eftersom $i == 5)och då kommer "<div>Annons</div>" skrivas ut.
Fredrik-s är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-03-21, 12:18 #10
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
Den överdrivna kommenteringen Fredrik-s använde ovan är då endast menad för din skull och inte lämpad till "riktig kod", bara så du vet

Variabeln $i kallas för iterator vilket är en variabel som används endast för att traversera genom någon form av behållare. Därav att du oftast ser bokstaven 'i' användas till detta. Du stoppar aldrig upp loopen utan gör bara olika saker inne i den beroende på olika villkor, i detta fall beroende på iteratorns värde.
__________________
Full-stack developer, free for smaller assignments

Senast redigerad av tartareandesire den 2012-03-21 klockan 12:26
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 06:54.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017