Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Taulukko ongelma

tanja [28.09.2006 00:14:23]

#

Tällä kertaa koulu php-kurssin kanssa ongelmia. :)

- Tee skripti, jossa kahden sisäkkäisen silmukan avulla muodostat tyhjän HTML-taulukon.

Sain sen toimimaan seuraavalla koodilla:

<?php

$i = 1;
$j = 1;

{
print "<table border=1; width=700>";
while ($i <= 1)

{
print "<tr>";
while ($j <= 1)

{
print "<td></td>";
$j++;
}
print "</tr>";
$i++;
}
print "</table>";
}
?>

Mutta sitten tämä seuraava tehtävä:
- Muokkaa edellistä skriptiä niin, että annat selaimen autta parametrina taulukon rivien ja sarakkeiden lukumäärä. Tee myös niin, että parittomat rivit muodostuvat niin, että rivi on yhtä kokonaista solua colspan="annettu sarake".

Ensinnäkin kun muutan noiden 1:sten tilalle isommat luvut, kuitenkin niin että ylemmässä on pienempi (5) ja alemmassa isompi (8). En saa edes rivejä aikaiseksi. Eli se tuottaa vain yhden rivin, mutta ei enempää.

HTML koodi näyttäisi tältä:

<table border=1 width=700>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr></tr>
<tr></tr>
<tr></tr>
<tr></tr>
</table>

Eli solu ei tule noihin seuraaviin ollenkaan.

Kun nyt saisi koodin toimimaan ensin niin, että saisin solut joka riville niin olisi hyvä. Sitten voin itse miettiä tuota colspannia (ennen kuin tulen nöyränä apua pyytämään).

Kiitos etukäteen. :)

kayttaja-2791 [28.09.2006 00:40:49]

#

Ensinnäkin, sisennä koodisi. Se tekee koodiin eri tasoja, jotka helpottavat lukemista. Silloin se näyttää paljon selkeämmältä:

<?php

$i = 1;
$j = 1;

{
  print "<table border=1; width=700>";
  while ($i <= 1)

  {
    print "<tr>";
    while ($j <= 1)
    {
      print "<td></td>";
      $j++;
    }
    print "</tr>";
    $i++;
  }
  print "</table>";
}
?>

Ensimmäinen ja viimeinen kaarisulkumerkki ovat täysin turhia.

Suosittelen jättämään while-silmukan tässä tapauksessa, ja siirtymään for-silmukan käyttöön. Nykyisellään vertailet muuttujia lukuun yksi, joten oikeita rivejä voi tulla vain se yksi kappale.

Eli tulostat forilla tähän tyyliin:

<?php
$rivejä = 5;
for ($i = 0; $i < $rivejä; $i++) {
  echo "<tr>";
  //Tähän sarakkeet samanlaisella for-silmukalla
  echo "</tr>";
}
?>

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta