WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   "pausa" en while-loop, och sen låta den fortsätta (https://www.wn.se/forum/showthread.php?t=1052732)

Kretius 2012-03-21 15:32

Själv brukar jag använda modulus istället när jag vill skriva ut något vid givna intervall.
Så jag bidrar med mitt exempel.
Eftersom modulus (% i PHP) svarar med resten från en division så blir det 0 (false) när det är jämnt delbart. (6/2=3 0 i rest, 7/2=3 och 1 i rest) En division med 0 ger alltid en rest på 0 så därför startar jag med $i=1 istället.
Mitt exempel blir då:
Kod:

  $i=1;
  while ($products as $product) {
    echo "<li>$product</li>";
    if (!($i%5)) echo "<li>annons</li>"; // om $i % 5 inte blir 0 (false) är det inte delbart med 5
    $i++;   
  }


allstars 2012-03-21 15:34

Bara du inte kör DIV istället för LI bara. Då blir markup-gudarna arga på dig.

nosnaj 2012-03-21 15:39

Citat:

Ursprungligen postat av tartareandesire (Inlägg 20435555)
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.

Det blir nog hemläxa för dig ;)
$products är snarare iteratorn, $i är ju bara en siffra och den kan du väl knappast iterera över.

Snyggare kod borde dessutom vara:

foreach($products as $counter => $product) {
//Do stuff
}

tartareandesire 2012-03-21 17:10

Citat:

Ursprungligen postat av nosnaj (Inlägg 20435573)
Det blir nog hemläxa för dig ;)
$products är snarare iteratorn, $i är ju bara en siffra och den kan du väl knappast iterera över.

Snyggare kod borde dessutom vara:

foreach($products as $counter => $product) {
//Do stuff
}

Naturligtvis har du rätt i det. Var lite snabb där, det enda jag egentligen ville kommentera var kommentarerna så att säga :) Iteration (= upprepning) bör det istället ha stått, alltså gällande vad i:et i variabelnamnet betyder.

Monkboll 2012-03-21 18:44

Kul att se så många olika lösningar på ett så pass relativt enkelt problem. =D

jonssondesign 2012-03-21 23:54

Jag tror jag förstår faktiskt! Tack så jätte mycket allihop!

För er som är intresserad av att se hur min while loop ser ut nu (utan att ha testat er teori), så ligger den här: http://pastebin.com/HFKVS9FS

Återkommer om jag får några problem!

Tack ännu en gång för er hjälp!

jonssondesign 2012-03-22 13:12

PHP-kod:

<?php //Listar produkterna
       
  
$query "SELECT * FROM products WHERE visible = 1 "// Välj alla kolumner från tabellen "products" där kolumnen visible "synbar" är lika med 1 "JA"
                       
  
if (isset($race_sort)) {
    if (
$race_sort == "kvinna") { $query .= "AND race = 'kvinna' "; } // visa bara produkter åt kvinnor
    
if ($race_sort == "man") { $query .= "AND race = 'man' "; } // visa bara produkter åt män
    
if ($race_sort == "barn") { $query .= "AND race = 'barn' "; } // visa bara produkter åt barn
  
}
                       
  if (isset(
$brand_sort)) {
    
$query .= "AND brand = '$brand_sort' "// visa bara produkter från ett specifikt märke (under produktens titel)
  
}
                       
  if (isset(
$post_brand)) {
    if (
$post_brand == "Alla") { }else {
      
$query .= "AND brand = '$post_brand' "// visa bara produkter från ett specifikt märke (tabellen)
    
}
  }

  
$query .= "AND price > 0 "// visa produkter med ett pris över 0 kr
  
$query .= "AND price < 5000 "// visa produkter med ett pris under 5000 kr
  
  
$query .= "ORDER BY price ASC"// sortera efter pris (billigast först)
  
  
if (isset($post_limit)) {
    
$query .= " LIMIT $post_limit"// sortera efter ett visst antal produkter
  
}
                       
  
$result mysql_query($query$connection) or die(mysql_error()); // Hämtar prdoukterna

Är detta ett bra sätt att lösa sorteringar på?

(Har inte inkluderat alla sorters sorteringar ännu dock...)

Monkboll 2012-03-22 13:21

Finns nog lita att ändra kanske.. Såg detta lite snabbt.
Kod:

if (isset($race_sort)) {
    if ($race_sort == "kvinna") { $query .= "AND race = 'kvinna' "; } // visa bara produkter åt kvinnor
    if ($race_sort == "man") { $query .= "AND race = 'man' "; } // visa bara produkter åt män
    if ($race_sort == "barn") { $query .= "AND race = 'barn' "; } // visa bara produkter åt barn
  }

Skulle jag göra så här.

Kod:

  if (isset($race_sort)) {
    $query .= "AND race = '$race_sort' "; }
  }

Lika på de andra

captaindoe 2012-03-22 13:48

Kod:

  if (isset($race_sort)) {
    $query .= "AND race = '$race_sort' "; }
  }

Detta är extremt farligt eftersom jonssondesign inte använder sig utav mysql_real_escape_string.

Monkboll 2012-03-22 15:04

Sant.
Kör mysql_real_escape_string($race_sort) istället då.
Ville mest pointera hans onödiga if satser..


Alla tider är GMT +2. Klockan är nu 21:59.

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