Goedemorgen allen,


Nieuw hier op het forum dus excuus als dit bericht verkeerd is geplaatst.
Ben redelijk nieuw met PHP, volg een aantal opleidingen tegelijk om zo veel mogelijk kennis te vergaren. Voor 1 van de opleiders heb ik een opdracht waar ik mee worstel. In onderstaand script probeer ik een array te vullen met 60 willekeurige cijfers tussen 10 en 70. Vervolgens wil ik deze in een tabel van 6 bij 6 printen, waarbij elke regel 6 getallen heeft. De eerste 6 tussen 10 en 20, tweede rij tussen 20 en 30 enz.

Ik ben ervan op de hoogte dat ik slecht een regel heb en dat mijn <TR> en </TR> niet juist zijn geplaatst maar ik heb ze daar even "weggemoffeld". Deze code geeft een lege browserpagina. Elke keer als ik een aanpassingen maak waarvan ik denk dat dat het moet zijn, kreeg ik een foutmelding.

Wellicht is er iemand die mij een duwtje in de goede richting kan/wil geven. Ik hoef niet per se een oplossing op een presenteerblaadje ( ik ben immers aan het leren ) maar ik loop nu redelijk vast. Alvast bedankt voor eventuele antwoorden en mocht mijn code niet compleet genoeg zijn of als ik meer info moet verschaffen hoor ik dat graag!


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>
<title>Inzendopdracht 051R3</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</head>
<body bgcolor="#FFFFFF">
<TABLE>
<?php
        $random_array = array();

        function fill_table($array) {
                 for($j=10; $j<=70; $j++) {
                 $array[] = [mt_rand(10,70)];
                 }
                 return $array;
        }

        fill_table($random_array);

        function print_table($arrayPrint) {
        for ($j=0; $j < 6; $j++) {
            if ($arrayPrint < 20 ) {
                    echo ("<TR><TD>" . $arrayPrint . "</TD></TR>");
                    }
            }
        }
        print_table($random_array);


?>
</TABLE>
</body>

</html>



Bij voorbaat dank,

Elian
Elian Kloppenburg op 05/12/2014 13:20:33

Als ik nu de eerste rij van de tabel zou willen vullen met een array die de getallen 10 t/m 19 bevat. En de volgende rij 20 t/m 29 etc. Hoe ga ik dit dan het beste aanpakken ( denk ook een beetje hardop hier.)


Hou de dingen uit elkaar. En dan doel ik met name op het volgende:
Een array-key is heel iets anders dan de waarde die je daar in opslaat:

<?php

$tabel[0] = '10';
$tabel[1] = '11';
// etc

?>
de array met key 0 heeft nu 10 als waarde
de array met key 1 heeft nu 11 als waarde

Je moet dus zorgen dat de key telkens met 1 verhoogd wordt, beginnend bij 0
en dat de waarde ook telkens met 1 verhoogd wordt, maar beginnend bij 10

Er zijn misschien 50 manieren om dit te bewerkstelligen maar de meeste programmeurs zullen zo veel mogelijk met een rekensommetje werken en zo min mogelijk vaste waardes.

dus:
<?php
for $i = 0 ; $i < 10 ; $i++) // 0 t/m 9
$tabel[$i] = $i + 10; // 0+10=10, 1+10=11, 2+10=12 etc
?>

Nu iets moeilijker met twee dimensionale array:
<?php
for $j = 0 ; $j < 10 $j++) // 0 t/m 9
{
for $i = 0 ; $i < 10 ; $i++) // 0 t/m 9
$tabel[$j][$i] = $i + (10 * ($j +1));
// eerste loop ($j = 0): 0+(10*(0+1))=10, 1+(10*(0+1))=11, 2+(10*(0+1))=12 etc
// tweede loop ($j = 1): 0+(10*(1+1))=20, 1+(10*(1+1))=21, 2+(10*(1+1))=22 etc
}
?>
(Als eerste wordt uitgerekend wat tussen haakjes staat)
Allebei zeer helpvol!

@Frank: ik had hetzelfde effect bereikt door middel van verschillende if/elseif statements binnen mijn for lop maar jouw oplossing is uiteraard veel minder omslachtig! Top! ik leer hier veel van. Meer dan de "feedback" van de leraar. :S

[size=xsmall]Toevoeging op 05/12/2014 15:48:37:[/size]

Mag ik jullie allen onwijs bedanken voor jullie hulp!
Ik heb hier een eeuwigheid op vastgezeten maar ik heb de tabel eindelijk voor elkaar! De shuffle functie zit er ook in verwerkt. Alles is ook een stuk duidelijker. Mijn code zal misschien nog niet 100% optimaal zijn maar ik ben iig heel erg blij met dit resultaat! Volgende stap is om er een werkende bingokaart van gemaakt maar dit moet vast ook gaan lukken. Voor de geïnteresseerden, dit is mijn code so far:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>
<title>Inzendopdracht 051R3</title>
<meta charset=UTF-8" />
</head>
<body bgcolor="#FFFFFF">
<Table width="400">
<style type="text/css">
table, th, td {
   border: 1px solid black;
   text-align: center;
   padding: 20px;
   font-family: verdana, open-sans;
   font-weight: bold;
   font-size: 18px;
}
</style>

<?php
    $random_array = array();

    function fill_array($array) {
             for ($j = 0; $j < 6; $j++) {
                 for ($i = 0; $i < 10; $i++) {
                 $array[$j][$i] = $i + (10 * ($j +1));
                 }
                 
            }
            for ($k=0; $k<6; $k++) {
            shuffle($array[$k]);
            }
             return $array;
    }

    $array_fill = fill_array($random_array);

    function print_array($array2) {
             for ($y=0; $y < 6; $y++){
             echo("<TR>");
                 for ($x=1; $x < 7; $x++) {
                     echo ("<TD>" . $array2[$y][$x] . "</TD>");
                 }
             echo "</TR>";
             }
    }


    print_array($array_fill);
?>
</table>
</body>

</html>


Nogmaals dank. Als ik het spel werkend heb ( of als ik jullie hulp weer nodig heb :P ) zal ik zeker even opnieuw posten.

Reageren