1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | if(!@mysql_num_rows($posts)>0){ home(); return; } $titel = mysql_fetch_assoc($titel); ?> <h4><?php echo $titel['titel']; ?></h4> <?php while($data = mysql_fetch_assoc($posts)){?> <?php $smilies = array(':)', ':(', ':+', '_O_', '(Y)', ';)', ':{', ':P', ':p','(A)'); $images = array('<img src="smilies/smile.gif">', '<img src="smilies/frown.gif">', '<img src="smilies/clown.gif">', '<img src="smilies/worshippy.gif">', '<img src="smilies/thumbsup.gif">', '<img src="smilies/wink.gif">', '<img src="smilies/nosmile.gif">', '<img src="smilies/puh2.gif">', '<img src="smilies/puh2.gif">', '<img src="smilies/hypocrite.gif">'); $content = str_replace($smilies, $images, $data['content']); echo $content; ?><br><br> <?php } ?> |
Dit is een leuke. Bij een topic met 10.000 posts haal je ze dus allemaal op om het totaal te berekenen terwijl je er maar 10 wilt laten zien? Niet erg efficient.quote:Op woensdag 14 december 2005 20:03 schreef SkaterSam het volgende:
1. bereken het totaal aantal resultaten (bijv. mysql_num_rows() )
2. definieer het maximum aantal resultaten per pagina (bijv. $pp = 10 )
3. bereken het aantal pagina's dat je krijgt door het aantal resultaten te delen door het maximum en het op hele naar boven af te ronden
4. creëer een offset (van welk nummer moeten de resultaten verder gaan op de volgende pagina (bijv. door de link show.php?page=3 en dan de offset berekenen door ($page - 1) * 10 te doen.)
5. Deze offset in de query zetten bij LIMIT $offset, 10
En die linkjes er onder kan je dan met allerlei if/else statements maken, bijvoorbeeld als er maar een pagina is zijn vorige en volgende geen links... Dit doe ik altijd in ieder geval![]()
Doe je SELECT count(*) as TOTAL FROM table LIMIT $offset,10 of zoiets? Zo bedoel je? Maar berekent die dan niet alleen maar degene die hij ophaalt (TOTAL zou dan 10 zijn) ? Enlighten mequote:Op woensdag 14 december 2005 20:16 schreef DionysuZ het volgende:
Dit is een leuke. Bij een topic met 10.000 posts haal je ze dus allemaal op om het totaal te berekenen terwijl je er maar 10 wilt laten zien? Niet erg efficient.
Nee, je doet een aparte COUNT(*)-query zodat MySQL snel het aantal rows kan teruggeven en je het totaal aantal posts weet. Dit is snel omdat de MyISAM-tables een rowcounter bijhouden, bij InnoDB gaat dit niet zo gemakkelijk. Vervolgens kun je door een nieuwe query te LIMIT'en bepalen welke posts je precies zietquote:Op woensdag 14 december 2005 20:25 schreef SkaterSam het volgende:
[..]
Doe je SELECT count(*) as TOTAL FROM table LIMIT $offset,10 of zoiets? Zo bedoel je? Maar berekent die dan niet alleen maar degene die hij ophaalt (TOTAL zou dan 10 zijn) ? Enlighten me
Gewoon een SELECT count(*) as TOTAL FROM table.quote:Op woensdag 14 december 2005 20:25 schreef SkaterSam het volgende:
[..]
Doe je SELECT count(*) as TOTAL FROM table LIMIT $offset,10 of zoiets? Zo bedoel je? Maar berekent die dan niet alleen maar degene die hij ophaalt (TOTAL zou dan 10 zijn) ? Enlighten me
quote:Op woensdag 14 december 2005 20:26 schreef JeRa het volgende:
[..]
Nee, je doet een aparte COUNT(*)-query zodat MySQL snel het aantal rows kan teruggeven en je het totaal aantal posts weet. Dit is snel omdat de MyISAM-tables een rowcounter bijhouden, bij InnoDB gaat dit niet zo gemakkelijk. Vervolgens kun je door een nieuwe query te LIMIT'en bepalen welke posts je precies ziet
Voor zover ik zie welquote:Op woensdag 14 december 2005 20:31 schreef SkaterSam het volgende:
COUNT(*) telt dus alle rijen in een DB, terwijl mysql_num_rows() alleen de rijen die uit een query komen telt. Ik snap het denk ik. De rest van de 5 stappen was echter wel 'logisch'?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | function resize_photo($new_name,$new_width,$new_height,$filename){ // Content type header('Content-type: image/jpeg'); // nieuwe resolutie bepalen list($width_orig, $height_orig) = getimagesize($filename); if(empty($new_height)){ $new_height = round(($new_width / $width_orig) * $height_orig); }elseif(empty($new_width)){ $new_width = round(($new_height / $height_orig) * $width_orig); }elseif ($new_width && ($width_orig < $height_orig)) { $new_width = ($new_height / $height_orig) * $width_orig; }else{ $new_height = ($new_width / $width_orig) * $height_orig; } // Resample $image_p = imagecreatetruecolor($new_width, $new_height); $image = imagecreatefromjpeg($filename); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width_orig, $height_orig); // Output imagejpeg($image_p, $new_name, 80); Imagedestroy($image); } ?> |
1 2 3 4 5 6 7 8 | $filename = $_FILES['photo']['tmp_name']; list($width_orig, $height_orig) = getimagesize($filename); $new_name="../pathnaarfotomap/".$watdanook; $new_width=300; //mag ook leeg izjn $new_height=200; //mag ook leeg zijn resize_photo($new_name,$new_width,$new_height,$filename); ?> |
tx allenquote:Op donderdag 15 december 2005 10:35 schreef Swetsenegger het volgende:
[ code verwijderd ]
Aanroepen met:
[ code verwijderd ]
Alleen voor jpg, maar dat is redelijk eenvoudig aan te passen in de functie.
Je moet wel GD2 op de server hebben staan.
1 2 | header('Content-type: image/jpeg'); |
Komt rechtstreeks van php.net: http://nl3.php.net/manual/en/function.imagecopyresampled.php. Ik heb gewoon die functie gepakt en wat aangepast toen ik 'm nodig hadquote:Op donderdag 15 december 2005 14:22 schreef DionysuZ het volgende:
[ code verwijderd ]
dit is dan toch niet nodig Swetsenegger?
Het is nodig als je rechtstreeks een jpeg als output wil hebben, niet als je een jpg file maakt.quote:Op donderdag 15 december 2005 15:13 schreef Swetsenegger het volgende:
[..]
Komt rechtstreeks van php.net: http://nl3.php.net/manual/en/function.imagecopyresampled.php. Ik heb gewoon die functie gepakt en wat aangepast toen ik 'm nodig had
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |