Beste SD'er,
Op mijn porfolio staan onderdaan 8 plaatjes + links naar andere ontwerpen. Deze 8 zou ik graag random willen hebben. Ik heb nu namelijk meer dan 8 recente werken en ik wil de rest ook nog kunnen laten zien.
Het scriptje zal dus 8 keer een link tevoorschijn moeten halen, deze links gebruik ik nu:
In het script moet ook een controle zitten dat hij niet een link 2 keer plaatst. Graag hoor ik wat dit mij gaat kosten.Code:<ul> <li><a href="http://www.movas.nl/portfolio.php?p=pnuts"><img src="images/small/pnuts_small.png" alt="Ontwerp van P-nutsfestival" /></a></li> <li><a href="http://www.movas.nl/portfolio.php?p=discount"><img src="images/small/DM_small.png" alt="Ontwerp van Discount Manager" /></a></li> <li><a href="http://www.movas.nl/portfolio.php?p=floberry"><img src="images/small/floberry_small.png" alt="Ontwerp van floberry" /></a></li> <li><a href="http://www.movas.nl/portfolio.php?p=jk"><img src="images/small/jk_small.png" alt="Ontwerp van JK Coatching" /></a></li> <li><a href="http://www.movas.nl/portfolio.php?p=blastogo"><img src="images/small/blastogo_small.png" alt="Ontwerp van Blastogo" /></a></li> <li><a href="http://www.movas.nl/portfolio.php?p=poker"><img src="images/small/poker_small.png" alt="Ontwerp van PokerBonussen" /></a></li> <li><a href="http://www.movas.nl/portfolio.php?p=veldhuizen"><img src="images/small/veldhuizen_small.png" alt="Ontwerp van Veldhuizen" /></a></li> <li><a href="http://www.movas.nl/portfolio.php?p=jewels"><img src="images/small/jewels_small.png" alt="Ontwerp van Online Jewelry Auction" /></a></li> </ul>
mvg,
Michiel Montauban van Swijndregt
- PHP voor gemakkelijk klusje
-
1002 × bekeken sinds 02-08-2009, 13:22 #1
PHP voor gemakkelijk klusje
-
-
02-08-2009, 13:35 #2
- Berichten
- 395
- Lid sinds
- 17 Jaar
Zo even getypt. Niet getest. Kan een stuk netter/beter. Maar dit zal de trick doen
Code:<ul> <?php // Voor elke link maak je een niewe regel. $links[] = '<li><a href="http://www.movas.nl/portfolio.php?p=pnuts"><img src="images/small/pnuts_small.png" alt="Ontwerp van P-nutsfestival" /></a></li>'; $links[]= '<li><a href="http://www.movas.nl/portfolio.php?p=discount"><img src="images/small/DM_small.png" alt="Ontwerp van Discount Manager" /></a></li>'; $count = count($links); $random = rand(0, $count); echo $links[$random]; ?> </ul>
Edit:
Hmm, je wilt 8 links laten zien. Dat doet dit nog niet... Niet echt helder vandaag...
-
02-08-2009, 13:35 #3
- Berichten
- 1.331
- Lid sinds
- 19 Jaar
Hallo Michiel,
Voeg me even toe op MSN, dan kijken we samen even wat ik voor je kan betekenen. Mijn adres is ikben apenstaartje martijndwars punt nl.
Groeten,
Martijn
Edit
Akif, houd er rekening mee dat de size van die array 2 is, maar dat de key 2 nooit bestaat omdat de array met key '0' begint. Je moet de variabele count dus met 1 in vermindering brengen. Daarnaast is dit inderdaad niet de juiste methode om een random variabele uit een array te halen, daar hebben we array_rand voor.
-
02-08-2009, 13:51 #4
- Berichten
- 162
- Lid sinds
- 17 Jaar
Zelf had ik deze code ergens gevonden maar dat wilde het niet voor me doen:
Code:<ul> <?php $link[0]="<li><a href="http://www.movas.nl/portfolio.php?p=pnuts"><img src="images/small/pnuts_small.png" alt="Ontwerp van P-nutsfestival" /></a></li>"; $link[1]="<li><a href="http://www.movas.nl/portfolio.php?p=discount"><img src="images/small/DM_small.png" alt="Ontwerp van Discount Manager" /></a></li>"; $link[2]="<li><a href="http://www.movas.nl/portfolio.php?p=floberry"><img src="images/small/floberry_small.png" alt="Ontwerp van floberry" /></a></li> $link[3]="<li><a href="http://www.movas.nl/portfolio.php?p=jk"><img src="images/small/jk_small.png" alt="Ontwerp van JK Coatching" /></a></li>"; $link[4]="<li><a href="http://www.movas.nl/portfolio.php?p=blastogo"><img src="images/small/blastogo_small.png" alt="Ontwerp van Blastogo" /></a></li>"; $link[5]="<li><a href="http://www.movas.nl/portfolio.php?p=poker"><img src="images/small/poker_small.png" alt="Ontwerp van PokerBonussen" /></a></li>"; $link[6]="<li><a href="http://www.movas.nl/portfolio.php?p=veldhuizen"><img src="images/small/veldhuizen_small.png" alt="Ontwerp van Veldhuizen" /></a></li>"; $link[7]="<li><a href="http://www.movas.nl/portfolio.php?p=jewels"><img src="images/small/jewels_small.png" alt="Ontwerp van Online Jewelry Auction" /></a></li>"; $random = rand(0, count($link)-1); echo $link[$random]; ?> </ul>
Martijn Dwars ik heb je toegevoed.
groet
-
02-08-2009, 13:57 #5
- Berichten
- 395
- Lid sinds
- 17 Jaar
Retry, dit keer getest....
Wederom, het kan vast beter/slimmer... Met PHP kan je het waarschijnlijk wel op 50 manieren doen. Dit is er één van ;)
PHP Code:<ul>
<?php
// Geef het aantal links op wat weergegeven moet worden
$aantalLinks = 8;
// Voor elke link maak je een niewe regel.
$links[] = '<li><a href="#">Link 1</li>';
$links[] = '<li><a href="#">Link 2</li>';
$links[] = '<li><a href="#">Link 3</li>';
$links[] = '<li><a href="#">Link 4</li>';
$links[] = '<li><a href="#">Link 5</li>';
$links[] = '<li><a href="#">Link 6</li>';
$links[] = '<li><a href="#">Link 7</li>';
$links[] = '<li><a href="#">Link 8</li>';
$links[] = '<li><a href="#">Link 9</li>';
$links[] = '<li><a href="#">Link 10</li>';
$links[] = '<li><a href="#">Link 11</li>';
$links[] = '<li><a href="#">Link 12</li>';
$links[] = '<li><a href="#">Link 13</li>';
$links[] = '<li><a href="#">Link 14</li>';
$links[] = '<li><a href="#">Link 15</li>';
# Hieronder niets wijzigen #
// Links tellen
$count = count($links);
$count--;
// array init
$random = array();
// Random getallen generen en in een array stoppen
while (count($random) < $aantalLinks) {
$rand = rand(0, $count);
// Checken of het getal al in de array staat
if(!in_array($rand, $random)) {
$random[] = $rand;
}
}
// Links printen
for ($i=0; $i < $aantalLinks; $i++) {
echo $links[$random[$i]];
}
?>
</ul>Laatst aangepast door Akif G. : 02-08-2009 om 14:05
-
02-08-2009, 14:00 #6
- Berichten
- 3.430
- Lid sinds
- 16 Jaar
Of je gebruikt gewoon PHP's ingebouwde functies hiervoor:
PHP Code:$links[0]="link";
$links[1]="link";
$links[2]="link";
shuffle($links);
foreach ($links as $links_i => $link)
{
echo $link;
}
-
02-08-2009, 14:03 #7
- Berichten
- 395
- Lid sinds
- 17 Jaar
-
02-08-2009, 14:04 #8
- Berichten
- 162
- Lid sinds
- 17 Jaar
groet
-
02-08-2009, 14:06 #9
- Berichten
- 1.331
- Lid sinds
- 19 Jaar
Code:$links[] = "link"; $links[] = "link"; $links[] = "link"; shuffle( $links ); foreach( $links as $key => $link ) { echo $link; if ( $key == 7 ) break; }
-
02-08-2009, 14:08 #10
- Berichten
- 3.430
- Lid sinds
- 16 Jaar
Okee, dan voeg je nog een van PHP's ingebouwde functies toe:
PHP Code:$links[0]="link";
$links[1]="link";
$links[2]="link";
shuffle($links);
array_slice($links,0,8);
foreach ($links as $links_i => $link)
{
echo $link;
}
-
02-08-2009, 14:11 #11
- Berichten
- 395
- Lid sinds
- 17 Jaar
Kijken of we de 50 verschillende manieren kunnen halen? :P
-
02-08-2009, 14:12 #12
- Berichten
- 3.430
- Lid sinds
- 16 Jaar
Dat gaat makkelijk lukken, maar niet zonder het steeds maar weer moeilijker te maken. Gewoon PHP functies gebruiken wanneer het kan, geldt over het algemeen.
-
02-08-2009, 14:17 #13
- Berichten
- 395
- Lid sinds
- 17 Jaar
Je code klopt niet helemaal trouwens. array_slice moet je toewijzen aan een nieuwe array en die moet je loopen. Nu loop je gewoon door dezelfde array.
-
02-08-2009, 14:20 #14
- Berichten
- 1.331
- Lid sinds
- 19 Jaar
Akif, 50 oplossingen lukt vast wel, maar het gaat om de enige oplossing die juist is hè.. naar mijn mening is dat nog steeds array_rand, omdat die hetzelfde doet als shuffle en array_slice -maar dan in één keer-. En zoals Jesper zegt: gewoon PHP functies gebruken wanneer het kan.
Daarom hierbij nogmaals wat in my opinion de enige methode is en waar ik in mijn eerste post al over begon:
Code:<?php $arrLink = array( ); // Define as array, otherwise we might get an error.. $arrLink[] = 'link 1'; // Add item. Don't define the key number, 'cuz we don't need to $arrLink[] = 'link 2'; $arrLink[] = 'link 3'; $arrLink[] = 'link 4'; $arrLink[] = 'link 5'; $arrLink[] = 'link 6'; $arrLink[] = 'link 7'; $arrLink[] = 'link 8'; $arrLink[] = 'link 9'; $arrLink[] = 'link 10'; $arrRand = array_rand( $arrLink, 8 ); // Retreive 8 random items from the arrLink array. foreach( $arrRand as $i_Key => $i_Item ) { echo $arrLink[ $i_Item ] . '<br />'; } ?>*
-
02-08-2009, 14:23 #15
- Berichten
- 3.430
- Lid sinds
- 16 Jaar
@ Martijn
Dat is nog beter inderdaad. Het zou me niet eens verbazen als PHP daarin hetzelfde doet als array_slice en shuffle samen, maar het is wel handiger wanneer je het met 1 functie kan doen.
@ Akif
Oh ja klopt, ik had niet echt gekeken naar de return values van de functie, het is eigenlijk ook wel logisch, anders zou je je array kwijt zijn na de slice.
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic