Avatar billede brian0905 Nybegynder
24. maj 2004 - 12:42 Der er 6 kommentarer og
1 løsning

Hvordan laver jeg dette layout ?

Hej,

Jeg er ved at lave en produkt oversigt til en hjemmeside. Selve dataene hentes fra en MySQL database hvor jeg har en tabel der ser således ud:

produkter
----------
prod_id
prod_name
prod_desc

når jeg vil vise dem på min .php side skal det være i en 3 x 4 tabel. det vil sige at tabellen skal indeholde max 3 felter i bredden og max 4 felter i højden. I hvert felt skal jeg have en overskrift (prod_name) samt beskrivelsen (prod_desc) til at stå. Hvis jeg har mindre end 12 produkter skal produkterne stadig vises i en 3 x 4 tabel, dog med tomme felter i de sidste felter, har jeg mere end 12 produktet så skal der være flere sider (men den del laver jeg selv). Mit problem er imidlertidig at jeg sagtens kan få alt data hevet ud fra databasen, men jeg kan ikke finde ud af at arrangere det i dette grid, det problem jeg løber ind i er at tilpasse rækkerne og kolonnerne dynamisk, samt at få skrevet både navn og beskrivelse under hinanden inden jeg går videre til næste produkt. Det jeg vil opnå ser således ud:

--------------------------------------
| produkt 1  | produkt 2 | produkt 3 |
|beskrivelse |beskrivelse|beskrivelse|
--------------------------------------
| produkt 4  | produkt 5 | produkt 6 |
|beskrivelse |beskrivelse|beskrivelse|
--------------------------------------
| produkt 7  | produkt 8 | produkt 9 |
|beskrivelse |beskrivelse|beskrivelse|
--------------------------------------
| produkt 7  | produkt 8 | produkt 9 |
|beskrivelse |beskrivelse|beskrivelse|
--------------------------------------

Inden for hver beskrivelse står overskriften og beskrivelsen naturligvis i hver sin celle i tabellen, men dette er det overordnede design. Jeg har været ved at kigge lidt på mysql_result kommandoen i håb om at kunne hive cellerne ud direkte, men kunne ikke rigtigt finde ud af at benytte den korrekt. Håber der er nogle der kan hjælpe
Avatar billede avlund Nybegynder
24. maj 2004 - 12:50 #1
To muligheder:

1) Hav hvert produkt + beskrivelse i hver sin celle og brug <br /> til at seperere dem med.

2) Brug mysql_data_seek til at skøjte frem og tilbage i databasen med for at sætte de rigtige ting ind de rigtige steder.

Hvis du ikke allerede ved det, så opnår du skiftet til ny produktlinie nemmest ved at bruge % (modulos)-funktionen.
Avatar billede 3xm Nybegynder
24. maj 2004 - 13:09 #2
sikkert hverken kønt, god kode eller særligt optimeret, men det virker:

----------------------------

$raekke = 1;
$kolonne = 1;
echo "<table border=\"1\">";
$sql = mysql_query("select * from prodtest");
while (($row = mysql_fetch_array($sql)) && $raekke <= 4) {
  echo "<tr>";
  while ($kolonne <= 3) {
      echo "<td>".$row["id"]."|".$row["indhold"]."</td>";
      if ($kolonne < 3)
        $row = mysql_fetch_array($sql);
    $kolonne++;
  }
  $kolonne = 1;
  echo "</tr>";
  $raekke++;
}
echo "</table>";

----------------------------

=)
Avatar billede 3xm Nybegynder
24. maj 2004 - 13:09 #3
- og den burde være let nok at modificere til dit behov.

=)
Avatar billede sostack Nybegynder
24. maj 2004 - 13:29 #4
Eller måske:
<?php

//forbind til MySQL og vælg databasen
$tabel = "din tabel"; //ret den til den rigtige
$start = 0;
$max_pr_side = 12;
$qry_varer = "SELECT `prod_name`, `prod_desc` FROM $tabel LIMIT $start, $max_pr_side";
$raekker = mysql_query($qry_varer) OR DIE(mysql_error());
$modul = 3; //hvor mange kolonner skal der være
$counter = 0; //tæller til at holde styr på rækker og kolonner
$start_tabel = "<table>\n";
$raekke["overskrift"] = "<tr>\n";
$raekke["beskrivelse"] = "<tr>\n";
$slut_tabel = "</table>\n";
WHILE(false !== ($result = mysql_fetch_assoc($raekker)))
{
    $counter++;
    if(($counter%$modul) == 0)
    {
        $raekke["overskrift"] .= "<td>" . $result["prod_name"] . "</td>\n</tr>";
        $raekke["beskrivelse"] .= "<td>" . $result["prod_desc"] . "</td>\n</tr>";
        $tabel .= $raekke["overskrift"] . $raekke["beskrivelse"];
        $raekke["overskrift"] = "<tr>\n";
        $raekke["beskrivelse"] = "<tr>\n";
    } else {
        $raekke["overskrift"] .= "<td>" . $result["prod_name"] . "</td>\n";
        $raekke["beskrivelse"] .= "<td>" . $result["prod_desc"] . "</td>\n";
    }
}
$tabel .= $slut_tabel;
echo $tabel;
?>

//sostack
Avatar billede brian0905 Nybegynder
24. maj 2004 - 21:44 #5
SÅDAN... så er jeg kørende
TAkker for hjælpen
Avatar billede sostack Nybegynder
25. maj 2004 - 06:26 #6
Det var så lidt ;-)!

kan nøjes med 50 pts..........
//sostack
Avatar billede sostack Nybegynder
25. maj 2004 - 06:27 #7
;-)

/sostack
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