Criteria toevoegen aan sort-functie?
mvdg - 03/11/2008 02:35
Nieuw lid
Onderstaande code gebruik ik om de 4 nieuwste mappen van een fotoalbum weer te kunnen geven:
<?php
if (($n_folder = count($mg2->all_folders)) < 1) { echo '<br />No folder'; break; }
$mg2->all_folders = $mg2->sort($mg2->all_folders,6,1);
for ($i=0;$i<4;$i++) {
echo '<div id="thumbwrapper" class="clearfix">';
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'});\">";
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">'; };
echo '<div class="';
if ((time() - $mg2->all_folders[$i][6]) < ($mg2->marknew * 84600)){ echo "infonew"; } else { echo "info"; };
echo '">';
echo '<div class="datum">'.substr($mg2->all_folders[$i][2],0,8).'</div>';
echo '<div class="titel">'.substr($mg2->all_folders[$i][2],11).'</div>';
echo '<div class="fotograaf">'.$mg2->all_folders[$i][10].'</div>';
echo '</div></a></div>';
}
?>
<?php
if ( ( $n_folder = count ( $mg2 -> all_folders ) ) < 1 ) { echo '<br />No folder' ; break ; } $mg2 -> all_folders = $mg2 -> sort ( $mg2 -> all_folders , 6 , 1 ) ;
for ( $i = 0 ; $i < 4 ; $i ++ ) {
echo '<div id="thumbwrapper" class="clearfix">' ; 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'});\" >" ; 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">' ; } ; if ( ( time ( ) - $mg2 -> all_folders [ $i ] [ 6 ] ) < ( $mg2 -> marknew * 84600 ) ) { echo "infonew" ; } else { echo "info" ; } ; echo '<div class="datum">' . substr ( $mg2 -> all_folders [ $i ] [ 2 ] , 0 , 8 ) . '</div>' ; echo '<div class="titel">' . substr ( $mg2 -> all_folders [ $i ] [ 2 ] , 11 ) . '</div>' ; echo '<div class="fotograaf">' . $mg2 -> all_folders [ $i ] [ 10 ] . '</div>' ; }
?>
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
Diko - 03/11/2008 08:59 (laatste wijziging 03/11/2008 09:01)
PHP interesse
Je kunt voordat je gaat sorteren (line 4) eerst de hele array doorlopen en unsetten wanneer == 1
for($c=0;$c<count($mg2->all_folders);$c++) {
if($mg2->all_folders[$c][1] <> 1) unset($mg2->all_folders[$c]);
}
for ( $c = 0 ; $c < count( $mg2 -> all_folders ) ; $c ++ ) {
if ( $mg2 -> all_folders [ $c ] [ 1 ] <> 1 ) unset ( $mg2 -> all_folders [ $c ] ) ; }
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.
mvdg - 03/11/2008 13:23
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.
<?php
if (($n_folder = count($mg2->all_folders)) < 1) { echo '<br />No folder'; break; }
rsort($mg2->all_folders);
for($i=0;$i<count($mg2->all_folders);$i++) { if($mg2->all_folders[$i][1] != 1) unset($mg2->all_folders[$i]); }
$mg2->all_folders = array_values($mg2->all_folders);
for ($i=0;$i<4;$i++) {
echo '<div id="thumbwrapper" class="clearfix">';
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'});\">";
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">'; };
echo '<div class="';
if ((time() - $mg2->all_folders[$i][6]) < ($mg2->marknew * 84600)){ echo "infonew"; } else { echo "info"; };
echo '">';
echo '<div class="datum">'.substr($mg2->all_folders[$i][2],0,8).'</div>';
echo '<div class="titel">'.substr($mg2->all_folders[$i][2],11).'</div>';
echo '<div class="fotograaf">'.$mg2->all_folders[$i][10].'</div>';
echo '</div></a></div>';
}
?>
<?php
if ( ( $n_folder = count ( $mg2 -> all_folders ) ) < 1 ) { echo '<br />No folder' ; break ; } rsort ( $mg2 -> all_folders ) ; for ( $i = 0 ; $i < count
( $mg2 -> all_folders ) ; $i ++ ) { if ( $mg2 -> all_folders [ $i ] [ 1 ] != 1 ) unset ( $mg2 -> all_folders [ $i ] ) ; } for ( $i = 0 ; $i < 4 ; $i ++ ) {
echo '<div id="thumbwrapper" class="clearfix">' ; 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'});\" >" ; 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">' ; } ; if ( ( time ( ) - $mg2 -> all_folders [ $i ] [ 6 ] ) < ( $mg2 -> marknew * 84600 ) ) { echo "infonew" ; } else { echo "info" ; } ; echo '<div class="datum">' . substr ( $mg2 -> all_folders [ $i ] [ 2 ] , 0 , 8 ) . '</div>' ; echo '<div class="titel">' . substr ( $mg2 -> all_folders [ $i ] [ 2 ] , 11 ) . '</div>' ; echo '<div class="fotograaf">' . $mg2 -> all_folders [ $i ] [ 10 ] . '</div>' ; }
?>
Am I right?
Kr4nKz1n - 03/11/2008 13:25
Onbekend
Iig is het een zooitje.
Maak gebruik van tabs, spaties en enters.
mvdg - 03/11/2008 14:07
Nieuw lid
Kr4nKz1n schreef:
Iig is het een zooitje.
Maak gebruik van tabs, spaties en enters.
Bedankt voor je nuttige toevoeging...
Kr4nKz1n - 03/11/2008 14:42 (laatste wijziging 03/11/2008 14:55)
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 .
<?php
If($n_folder = Count($mg2->all_folders) < 1)
{
echo '<br />No folder';
break;
}
$mg2->all_folders = $mg2->sort($mg2->all_folders, 6, 1);
For($i = 0; $i < 4; $i++)
{
echo '<div id="thumbwrapper" class="clearfix">';
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'});\">";
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">';
echo '<div class="'.(time() - $mg2->all_folders[$i][6] < ($mg2->marknew * 84600) ? 'infonew' : 'info').'">';
echo '<div class="datum">'.SubStr($mg2->all_folders[$i][2], 0, 8).'</div>';
echo '<div class="titel">'.SubStr($mg2->all_folders[$i][2], 11).'</div>';
echo '<div class="fotograaf">'.$mg2->all_folders[$i][10].'</div>';
echo '</div></a></div>';
}
?>
<?php
If ( $n_folder = Count ( $mg2 -> all_folders ) < 1 ) {
break ;
}
$mg2 -> all_folders = $mg2 -> sort ( $mg2 -> all_folders , 6 , 1 ) ;
For ( $i = 0 ; $i < 4 ; $i ++ )
{
echo '<div id="thumbwrapper" class="clearfix">' ; 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'});\" >" ; 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">' ; echo '<div class="' . ( time ( ) - $mg2 -> all_folders [ $i ] [ 6 ] < ( $mg2 -> marknew * 84600 ) ?
'infonew' : 'info' ) . '">' ; echo '<div class="datum">' . SubStr ( $mg2 -> all_folders [ $i ] [ 2 ] , 0 , 8 ) . '</div>' ; echo '<div class="titel">' . SubStr ( $mg2 -> all_folders [ $i ] [ 2 ] , 11 ) . '</div>' ; echo '<div class="fotograaf">' . $mg2 -> all_folders [ $i ] [ 10 ] . '</div>' ; }
?>
Alleen ik zou die $i een andere naam geven, want wat is $i?
bv. $iFolder , geen idee want ik snap niks van je script
Abbas - 03/11/2008 15:37
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?!
mvdg - 03/11/2008 16:57 (laatste wijziging 03/11/2008 16:59)
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:
<?php
If ($n_folder = count($mg2->all_folders) < 1)
{
echo '<br />Er zijn geen mappen aanwezig';
break;
}
Else {
rsort($mg2->all_folders);
For($i=0;$i<count($mg2->all_folders);$i++)
{
if($mg2->all_folders[$i][1] != 1) unset($mg2->all_folders[$i]);
}
$mg2->all_folders = array_values($mg2->all_folders);
for ($i=0;$i<4;$i++)
{
echo 'verschillende weergaven van diverse waarden';
}
}
?>
<?php
If ( $n_folder = count ( $mg2 -> all_folders ) < 1 ) {
echo '<br />Er zijn geen mappen aanwezig' ; break ;
}
Else {
rsort ( $mg2 -> all_folders ) ; For ( $i = 0 ; $i < count( $mg2 -> all_folders ) ; $i ++ )
{
if ( $mg2 -> all_folders [ $i ] [ 1 ] != 1 ) unset ( $mg2 -> all_folders [ $i ] ) ; }
for ( $i = 0 ; $i < 4 ; $i ++ )
{
echo 'verschillende weergaven van diverse waarden' ; }
}
?>
Maar om terug te komen op mijn vraag: is dit een juiste manier, of is het omslachtig?
Gesponsorde links
Dit onderwerp is gesloten .