1 2 3 4 5 6 7 8 | <?php SELECT products.ProductName, products.ProductID FROM `products` WHERE products.ProductName LIKE '%la%' ORDER BY products.ProductID ASC LIMIT 5650,5700; /* 0 rows affected, 5.700 rows found. Duration for 1 query: 42,125 sec. (+ 0,562 sec. network) */ SELECT products.ProductName, products.ProductID FROM `products` WHERE products.ProductName LIKE '%la%' ORDER BY products.ProductID ASC LIMIT 5601,5650; /* 0 rows affected, 5.650 rows found. Duration for 1 query: 0,156 sec. (+ 0,125 sec. network) */ ?> |
1 2 3 4 5 6 7 | <?php SET @a:=1; SELECT @a,products.ProductName, products.ProductID FROM `products` WHERE (@a:=@a+1) AND products.ProductName LIKE '%la%' ORDER BY products.ProductID ASC LIMIT 5650,5700; /* 0 rows affected, 5.700 rows found. Duration for 2 queries: 3,203 sec. (+ 0,016 sec. network) */ ?> |
Kun je een stukje output laten zien van print_r($jouw_array)?quote:Op dinsdag 6 september 2011 10:44 schreef -Datdus- het volgende:
Kan iemand mij makkelijk uitleggen hoe ik een array laat loopen met foreach? Het wil niet lukken met gegevens uit de database.
1 2 3 4 5 6 7 8 9 | Array ( [posts] => Array ( [title] => Dit is een test [body] => Body ) ) |
1 2 3 4 5 6 7 8 9 10 | $sql = mysql_query("SELECT * FROM posts"); $row = mysql_fetch_assoc($sql); $posts = array('posts' => array('title' => $row['title'], 'body' => $row['body'])); foreach($posts as $post){ echo $post['title']."<br>"; echo $post['body']; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php $sql = mysql_query("SELECT title, body FROM posts"); $posts = array(); while ($row = mysql_fetch_assoc($sql)){ $posts[] = $row; } foreach($posts as $post){ echo $post['title']."<br>"; echo $post['body']; } ?> |
Het werkt. Ik snap alleen niet wat die while loop doet.quote:
Ah, oke ik denk dat ik het snap dankjewel.quote:Op dinsdag 6 september 2011 11:19 schreef Sitethief het volgende:
Zolang mysql_fetch_assoc($sql) rows terug geeft, blijft de loop die in $posts stoppen. Zo stop je row voor row in $posts.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php $sql = "SELECT title, body FROM posts"; $query = mysql_query($sql); $items = mysql_num_rows($query); for ($x = 0; $x < $items; $x++) { $post = mysql_fetch_assoc($query); echo $post['title']."<br>"; echo $post['body']; } ?> |
Dankje.quote:Op dinsdag 6 september 2011 11:23 schreef Chandler het volgende:
Waarom gebruik je niet de uitleg van php.net?
http://nl.php.net/array
http://nl.php.net/while
http://nl.php.net/foreach
het zou mooier zijn om het zo te doen!
[ code verwijderd ]
http://nl.php.net/for
http://nl.php.net/mysql_num_rows
ps... als je een query opbouwt plaats je die in $sql
als je een query uitvoert noem je die in het algemeen $query (is logischer)
Het kan wel nuttig zijn in situaties, die ook leesbaarheid van code bevorderd. Maar das niet in deze situatie zo iig.quote:
Wel beter. Het is compleet nutteloos om eerst alles in een array te stoppen in een loop, en daarna in een andere loop dit weer te geven. Verspilling van geheugen.quote:
Als je het OO programmeert kun je er bijna niet omheen. Je voert eerst een query uit en deze geeft een datatable op en met deze datatable ga je de output opbouwen. Dan ram je dus eerst alle query informatie in een class (mogelijk de class nog in een collectie) en dan ga je er pas mee werken.quote:Op dinsdag 6 september 2011 14:35 schreef Catbert het volgende:
[..]
Wel beter. Het is compleet nutteloos om eerst alles in een array te stoppen in een loop, en daarna in een andere loop dit weer te geven. Verspilling van geheugen.
Als je je code een beetje overzichtelijk opbouwt dan verspil je inderdaad geheugen.quote:Op dinsdag 6 september 2011 14:35 schreef Catbert het volgende:
[..]
Wel beter. Het is compleet nutteloos om eerst alles in een array te stoppen in een loop, en daarna in een andere loop dit weer te geven. Verspilling van geheugen.
Dan nog hoef je helemaal niet perse eerst alle classes op te bouwen en ze daarna te gebruiken, dat kun je prima per row doen. Als het kleine sets data zijn is het zeker geen issue, maar bij grote recordsets wel, dan wil je die echt niet eerst allemaal in 't geheugen opbouwen.quote:Op dinsdag 6 september 2011 14:40 schreef Pakspul het volgende:
Als je het OO programmeert kun je er bijna niet omheen. Je voert eerst een query uit en deze geeft een datatable op en met deze datatable ga je de output opbouwen. Dan ram je dus eerst alle query informatie in een class (mogelijk de class nog in een collectie) en dan ga je er pas mee werken.
Wat bedoel je? Stel elke row is een kb aan data, en je hebt 1000 rows. Het maakt nogal uit of je script 1MB aan geheugen moet alloceren of max 1kb. Vergeet niet dat je zo 100 requests tegelijkertijd af te handelen kunt hebben.quote:Op dinsdag 6 september 2011 14:43 schreef GlowMouse het volgende:
Als je je code een beetje overzichtelijk opbouwt dan verspil je inderdaad geheugen.
Daar ben ik het dus niet geheel mee eens! juist door overzichtelijk te scripten (programmeren wil ik het niet noemen...) kun je juist geheugen besparen doordat je sneller je 'foutjes' ziet.quote:Op dinsdag 6 september 2011 14:43 schreef GlowMouse het volgende:
[..]
Als je je code een beetje overzichtelijk opbouwt dan verspil je inderdaad geheugen.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |