login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Criteria toevoegen aan sort-functie?

Offline mvdg - 03/11/2008 02:35
Avatar van mvdgNieuw lid Onderstaande code gebruik ik om de 4 nieuwste mappen van een fotoalbum weer te kunnen geven:

  1. <?php
  2.  
  3. if (($n_folder = count($mg2->all_folders)) < 1) { echo '<br />No folder'; break; }
  4. $mg2->all_folders = $mg2->sort($mg2->all_folders,6,1);
  5. for ($i=0;$i<4;$i++) {
  6. echo '<div id="thumbwrapper" class="clearfix">';
  7. echo "<a href=\"fotoalbum.php?list=".$mg2->all_folders[$i][0]."&page=all\" onmouseover=\"new Tip(this, 'Bekijk het album: ".substr($mg2->all_folders[$i][2],11)."', {delay: '0.0', effect: 'appear'});\">";
  8. if (empty ($mg2->all_folders[$i][7])) { echo '<img src="layout/images/comingsoon.jpg" alt="" title="" class="thumbfolder">'; } else { echo '<img src="gallery/pictures/'.$mg2->all_folders[$i][7].'" alt="" title="" class="thumbfolder">'; };
  9. echo '<div class="';
  10. if ((time() - $mg2->all_folders[$i][6]) < ($mg2->marknew * 84600)){ echo "infonew"; } else { echo "info"; };
  11. echo '">';
  12. echo '<div class="datum">'.substr($mg2->all_folders[$i][2],0,8).'</div>';
  13. echo '<div class="titel">'.substr($mg2->all_folders[$i][2],11).'</div>';
  14. echo '<div class="fotograaf">'.$mg2->all_folders[$i][10].'</div>';
  15. echo '</div></a></div>';
  16. }
  17.  
  18. ?>


Wat ik nu probeer is om deze weergave te filteren op een bepaald criteria, namelijk dat '$mg2->all_folders[$i][1]' gelijk is aan "1". En zoniet, dan dient hij niet te worden meegenomen in de weergave.

Ter verduidelijking: Huidig proces = Sorteren > Lijst > Laatste 4 weergeven. Gewenst nieuw proces = Sorteren > Lijst filteren op criteria > Gefilterde lijst > Laatse 4 weergeven.

Kan iemand mij in de goede richting helpen? Ik zit hier namelijk al een tijdje op te prutsen maar krijg het gevoel dat ik iets over het hoofd zie, want het klinkt zo simpel... Alvast bedankt!  

10 antwoorden

Gesponsorde links
Offline Diko - 03/11/2008 08:59 (laatste wijziging 03/11/2008 09:01)
Avatar van Diko PHP interesse Je kunt voordat je gaat sorteren (line 4) eerst de hele array doorlopen en unsetten wanneer == 1

  1. for($c=0;$c<count($mg2->all_folders);$c++) {
  2. if($mg2->all_folders[$c][1] <> 1) unset($mg2->all_folders[$c]);
  3. }


Nu bestaan er alleen nog items in je array waar [$i][1] gelijk is aan 1.

Volgorde kun je zelf natuurlijk aanpassen 

Edit:
Eventuele andere oplossing is het for loopje dat je al had vervangen door een while loop, als je hier een teller bijhoudt die je alleen ophoogt als je een item tegenkomt/weergeeft dat aan je criteria voldoet.
Offline mvdg - 03/11/2008 13:23
Avatar van mvdg Nieuw lid Bedankt, hiermee lukt het idd. Onderstaande code doet wat de bedoeling was. Ik heb alleen nog het gevoel dat het een beetje omslachtig is.

  1. <?php
  2. if (($n_folder = count($mg2->all_folders)) < 1) { echo '<br />No folder'; break; }
  3. rsort($mg2->all_folders);
  4. for($i=0;$i<count($mg2->all_folders);$i++) { if($mg2->all_folders[$i][1] != 1) unset($mg2->all_folders[$i]); }
  5. $mg2->all_folders = array_values($mg2->all_folders);
  6. for ($i=0;$i<4;$i++) {
  7. echo '<div id="thumbwrapper" class="clearfix">';
  8. echo "<a href=\"fotoalbum.php?list=".$mg2->all_folders[$i][0]."&page=all\" onmouseover=\"new Tip(this, 'Bekijk het album: ".substr($mg2->all_folders[$i][2],11)."', {delay: '0.0', effect: 'appear'});\">";
  9. if (empty ($mg2->all_folders[$i][7])) { echo '<img src="layout/images/comingsoon.jpg" alt="" title="" class="thumbfolder">'; } else { echo '<img src="gallery/pictures/'.$mg2->all_folders[$i][7].'" alt="" title="" class="thumbfolder">'; };
  10. echo '<div class="';
  11. if ((time() - $mg2->all_folders[$i][6]) < ($mg2->marknew * 84600)){ echo "infonew"; } else { echo "info"; };
  12. echo '">';
  13. echo '<div class="datum">'.substr($mg2->all_folders[$i][2],0,8).'</div>';
  14. echo '<div class="titel">'.substr($mg2->all_folders[$i][2],11).'</div>';
  15. echo '<div class="fotograaf">'.$mg2->all_folders[$i][10].'</div>';
  16. echo '</div></a></div>';
  17. }
  18. ?>


Am I right?
Offline Kr4nKz1n - 03/11/2008 13:25
Avatar van Kr4nKz1n Onbekend Iig is het een zooitje.

Maak gebruik van tabs, spaties en enters.
Offline mvdg - 03/11/2008 14:07
Avatar van mvdg Nieuw lid
Kr4nKz1n schreef:
Iig is het een zooitje.

Maak gebruik van tabs, spaties en enters.


Bedankt voor je nuttige toevoeging... 
Offline Wijnand - 03/11/2008 14:11
Avatar van Wijnand Moderator Nuttig kan het wel wezen. Het is goed en zelfs belangrijk om duidelijk te programmeren/scripten. Het had wel iets positiever gebracht kunnen worden, maarja...

't blijft altijd gevaarlijk om je eigen code hier neer te zetten, want de kans bestaat dat mensen 't een zooitje vinden en dat op een sappige manier brengen 
Offline Kr4nKz1n - 03/11/2008 14:42 (laatste wijziging 03/11/2008 14:55)
Avatar van Kr4nKz1n Onbekend Ik zei het nog op een normale manier.

Want eigenlijk vind ik het niet om aan te zien 
Krijg spontaan kramp in me buik 

:P

Edit
Ik ben de ergste niet, niet?, nee niet.
  1. <?php
  2. If($n_folder = Count($mg2->all_folders) < 1)
  3. {
  4. echo '<br />No folder';
  5. break;
  6. }
  7. $mg2->all_folders = $mg2->sort($mg2->all_folders, 6, 1);
  8. For($i = 0; $i < 4; $i++)
  9. {
  10. echo '<div id="thumbwrapper" class="clearfix">';
  11. echo "<a href=\"fotoalbum.php?list=".$mg2->all_folders[$i][0]."&page=all\" onmouseover=\"new Tip(this, 'Bekijk het album: ".substr($mg2->all_folders[$i][2],11)."', {delay: '0.0', effect: 'appear'});\">";
  12. echo empty($mg2->all_folders[$i][7]) ? '<img src="layout/images/comingsoon.jpg" alt="" title="" class="thumbfolder">' : '<img src="gallery/pictures/'.$mg2->all_folders[$i][7].'" alt="" title="" class="thumbfolder">';
  13. echo '<div class="'.(time() - $mg2->all_folders[$i][6] < ($mg2->marknew * 84600) ? 'infonew' : 'info').'">';
  14. echo '<div class="datum">'.SubStr($mg2->all_folders[$i][2], 0, 8).'</div>';
  15. echo '<div class="titel">'.SubStr($mg2->all_folders[$i][2], 11).'</div>';
  16. echo '<div class="fotograaf">'.$mg2->all_folders[$i][10].'</div>';
  17. echo '</div></a></div>';
  18. }
  19. ?>

Alleen ik zou die $i een andere naam geven, want wat is $i?

bv. $iFolder, geen idee want ik snap niks van je script 
Offline Abbas - 03/11/2008 15:03
Avatar van Abbas Gouden medaille

Crew .NET
Moet heel die for-loop niet in een else van de if daarboven? Je controleert op mappen, zelfs al bestaan er geen gaat die for-loop toch uitgevoerd worden... Of vergis ik me?
Offline Kr4nKz1n - 03/11/2008 15:20 (laatste wijziging 03/11/2008 15:21)
Avatar van Kr4nKz1n Onbekend Lache toch 

Gebruikers foutmelding en een script foutmelding 

Extra duudelijk.

Even een tekstje eronder met bv
Citaat:
Controleer of uw foutmelding erbij staat
 
Offline Abbas - 03/11/2008 15:37
Avatar van Abbas Gouden medaille

Crew .NET
Kr4nKz1n schreef:
Lache toch 
Gebruikers foutmelding en een script foutmelding 
Extra duudelijk.
Even een tekstje eronder met bv
[..quote..] 
En wààr slaat dat op?!
Offline mvdg - 03/11/2008 16:57 (laatste wijziging 03/11/2008 16:59)
Avatar van mvdg Nieuw lid
titjes schreef:
Moet heel die for-loop niet in een else van de if daarboven? Je controleert op mappen, zelfs al bestaan er geen gaat die for-loop toch uitgevoerd worden... Of vergis ik me?


Dit is idd netter, bovenstaande opmerkingen resulteren in de volgende code:

  1. <?php
  2. If ($n_folder = count($mg2->all_folders) < 1)
  3. {
  4. echo '<br />Er zijn geen mappen aanwezig';
  5. break;
  6. }
  7. Else {
  8. rsort($mg2->all_folders);
  9. For($i=0;$i<count($mg2->all_folders);$i++)
  10. {
  11. if($mg2->all_folders[$i][1] != 1) unset($mg2->all_folders[$i]);
  12. }
  13. $mg2->all_folders = array_values($mg2->all_folders);
  14. for ($i=0;$i<4;$i++)
  15. {
  16. echo 'verschillende weergaven van diverse waarden';
  17. }
  18. }
  19. ?>


Maar om terug te komen op mijn vraag: is dit een juiste manier, of is het omslachtig?
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.222s