Avatar billede netpimp Nybegynder
09. februar 2009 - 17:25 Der er 9 kommentarer og
1 løsning

Udskriv i 3 tilfældige celler

Jeg har forsøgt og bygge mig et lille simpelt script der skal udskrive et billede 3 gange ud af 30, lige nu ser mit script sådan ud:

<?php

$Udskriv = array("<img src='test.gif' border='0'>",
                    "");
$random = rand(0,1);
print("$Udskriv[$random]");

?>

Meningen er at scriptet i en tabel med 30 celler, skal udskrive et billede 3 gange i 3 tilfældige celler, er der nogen der kan svare mig på hvordan?
Avatar billede nicklasb Nybegynder
09. februar 2009 - 19:02 #1
Skal der stå noget i de øvrige celler, eller? Og skal der altid være præcis tre billeder, eller er det bare i gennemsnit, at det skal gå op i tre?

Du kan lave noget lignende

<?php
$cell = array();
$number = 3;
while(count($cell) < $number) {
    $rand = rand(0, 29);
    if (!in_array($rand, $cell))
        $cell[] = $rand;
}
?>

Den vil returnere et array (cell) med tre unikke tilfældige tal mellem 0 og 29. Så kan du blot generere tabellen med en whileløkke og markere de celler der stemmer overens med tallene i arrayet, med det billede du vil have deri.

Er det det du mener?
Avatar billede psychopixi Nybegynder
09. februar 2009 - 19:15 #2
Dette burde løse dit problem:
Scriptet tager så mange billedfiler som du ønsker, ved blot at fylde flere billeder i $Udskriv. Der bliver både valgt tilfældige billeder og tilfældige positioner..

<?php
$Udskriv = array("test.gif");
$number_of_cells = 30;

echo "<table><tr>";
while(count($random_cell) != 3)
    $random_cell[rand(0,$number_of_cells)] = true;

for($x=0;$x<$number_of_cells;$x++){
    $random_pic = rand(0,count($Udskriv)-1);
    echo "<td>";
    if($random_cell[$x])
        echo "<img src='".$Udskriv[$random_pic]."' border='0'>";
    else
        echo $x;
    echo "</td>";
}
echo "</tr></table>";
>?
Avatar billede nicklasb Nybegynder
09. februar 2009 - 19:33 #3
#2, Er det ikke næsten nøjagtigt den samme løsning, som den jeg har postet? (kan ikke lige se om du har lavet andet, end at opbevare de enkelte tal som nøgler i stedet for data? Det burde ikke betyde det store hvordan det er gemt, når ikke det er flere tal der skal udtages og udfaldsrummet er så stort.)
Avatar billede psychopixi Nybegynder
09. februar 2009 - 19:39 #4
#3
Jeg så ikke din løsning inden jeg postede - havde ikke genopfrisket siden.
Desuden synes jeg at min kode gør det netpimp beder om, mens din blot finder 3 felter.
Avatar billede netpimp Nybegynder
09. februar 2009 - 19:48 #5
Tak til jer begge for svar, det var dog løsningen i #2 jeg forstod bedst :)

Hvordan vil jeg kunne lave samme løsning hvis f.eks. tabellen skal være 5 celler bred og 6 celler høj, det kan jeg ikke helt gennemskue?
Avatar billede psychopixi Nybegynder
09. februar 2009 - 19:53 #6
Således:
<?php
$Udskriv = array("test.png");
echo "<table><tr>";
$number_of_cells = 30;
while(count($random_cell) != 3)
    $random_cell[rand(0,$number_of_cells)] = true;

for($x=1;$x<=$number_of_cells;$x++){
    $random_pic = rand(0,count($Udskriv)-1);
    echo "<td>";
    if($random_cell[$x])
        echo "<img src='".$Udskriv[$random_pic]."' border='0'>";
    else
        echo $x;
    echo "</td>";
    if(!($x%5))
        echo "</tr><tr>";
}
echo "</tr></table>";
?>
Avatar billede netpimp Nybegynder
09. februar 2009 - 20:23 #7
Mange tak for hjælpen :)
Avatar billede psychopixi Nybegynder
09. februar 2009 - 20:26 #8
Velbekomme:)
Avatar billede olebole Juniormester
09. februar 2009 - 20:51 #9
<ole>

$a = range(1, 30);
shuffle($a);
print $a[0] ." :: ". $a[1] ." :: ". $a[2];

/mvh
</bole>
Avatar billede olebole Juniormester
09. februar 2009 - 20:52 #10
Hmmm ... fik vist ikke lige læst spm'et ordentligt  =)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester