webForumDet fria alternativet

loopa ut visst antal

PHP

12 svar · 412 visningar · startad av ironhead

Medlem sedan mars 20011 346 inlägg
Frågan#1

Hej!

i ASP kan man skriva:

while not rs.eof or cnt > 10

där cnt är en räknare som plussas på med 1 varje gång loopen körs. Sålänge det finns poster i databasen och posterna räknas upp till 10 så skrivs data ut.

Hur konverterar man detta till PHP?

Medlem sedan apr. 20012 427 inlägg
#2
while ($row = mysql_fetch_assoc($res) !== false && $cnt <= 10) {

}

Typ?

Medlem sedan mars 20011 346 inlägg
#3

Ser juh snajsigt ut!
Tackar för det....ska testa senare :)

Medlem sedan juni 20006 031 inlägg
#4

Jag skulle nog ha gjort det direkt i SQL satsen

"SELECT * FROM tabell ORDER BY kolumn DESC LIMIT 10"

Eller har jag missuppfattat helt då jag inte kan nån asp?

Medlem sedan mars 20011 346 inlägg
#5

Pedda: Nja, ville bara ha koden översatt "rakt av", då den ska användas då jag har tabeller med relationen användare -> film...om flera användare äger en och samma film så kommer selectsatsen att lista:
film1 person1, person2, person3
film2 person2
etc.
Vilket gör att det blir fel antal filmer som loopas ut...

Medlem sedan mars 20011 346 inlägg
#6

Var nog lite för snabb....får det inte att funka

får inte ut en enda post med denna kod:

$q = "... order by title";

$t = "";
$cnt = 0;
$knt = 0;

while($array = mysql_fetch_array($result) !== false && $knt <= 10)
{
  if  ($t != $array["title"] ) {
      if  ($cnt  > 0) echo "<br>";
      $t = $array["title"];
      $cnt = 0;
      $knt++;  	
      echo $t;
  }
   if  ($cnt > 0) echo ",";
   echo $array["username"];
   $cnt++;
}
if  ($cnt > 0) echo "<br>";

Funkar bra om jag bara använder:

while($array = mysql_fetch_array($result))

men loopar då ut fel antal

Medlem sedan apr. 20012 427 inlägg
#7

Jag glömde ett par parenteser. Testa det här:

while (($array = mysql_fetch_array($result)) !== false && $knt < 10)

Notera att jag tagit bort likhetstecknet också eftersom du börjar räkna på 0 och vill ha 10 poster.

Medlem sedan juni 20031 837 inlägg
#8

ska det verkligen vara

!==

och inte

!=

har aldrig testar med !==

Medlem sedan apr. 20012 427 inlägg
#9

Det fungerar säkert med != också, men det känns säkrare med !== eftersom det är "false" och inget annat som mysql_fetch_array() returnerar när raderna är slut.

http://se2.php.net/operators.comparison

Medlem sedan okt. 2001538 inlägg
#10

Hej :)

Är det inte så att !== kontrollerar att det verkligen är booleanskt falskt, medan != skulle kunna tolka 0 som falskt (alltså att den även kontrollerar vilken datatyp det handlar om)

Isåfall borde det ju vara !==

MVH Patrik

Medlem sedan apr. 20012 427 inlägg
#11

Patrik81 skrev:

Är det inte så att !== kontrollerar att det verkligen är booleanskt falskt [...]

Det är precis så jag förstått saken i alla fall.

Medlem sedan aug. 2000374 inlägg
#12

Patrik81 skrev:

Är det inte så att !== kontrollerar att det verkligen är booleanskt falskt, medan != skulle kunna tolka 0 som falskt (alltså att den även kontrollerar vilken datatyp det handlar om)

mundus:~ chansen$ php -r 'printf( "%s\n", ( 0 != FALSE ) ? "True" : "False" );'
False
mundus:~ chansen$ php -r 'printf( "%s\n", ( 0 !== FALSE ) ? "True" : "False" );'
True
Medlem sedan mars 20011 346 inlägg
#13

1000-tack alla!
Funkade perfekt :)

256 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)