Avatar billede 123maka Nybegynder
07. december 2004 - 20:40 Der er 7 kommentarer og
1 løsning

Tabel med databaser, hvordan?

Jeg har en mysql database med denne opbygning:
id,url,titel

Jeg vil gerne have dem puttet ind i en tabel som ser sådan her ud:

<table width=\"420\" border=\"0\">
  <tr>
    <td width=\"10\"></td>
    <td width=\"100\">Titel1</td>
    <td width=\"100\">Titel2</td>
    <td width=\"100\">Titel3</td>
    <td width=\"100\">Titel4</td>
    <td width=\"10\"></td>
  </tr>
  <tr>
    <td width=\"10\"></td>
    <td width=\"100\">Url1</td>
    <td width=\"100\">Url2</td>
    <td width=\"100\">Url3</td>
    <td width=\"100\">Url4</td>
    <td width=\"10\"></td>
  <tr>
</table>

Og titel1 og url1 er dem med id 1 osv. Men hvordan gøres dette i praksis? Og hvordan får jeg den til at starte en ny row hvis der er flere end 4 posts i databasen?
Avatar billede martor Nybegynder
09. december 2004 - 21:05 #1
Skal du bruge id'et til noget?

Ellers kan du løse det nogenlunde sådan her:

$titelString = "";
$urlString = "";

$result = mysql_query("SELECT id, titel, url FROM #dinTabel#");

foreach($myRow = mysql_fetch_assoc($result))
{
  $titelString .= "<TD>" . $myRow['titel'] . "</TD>";
  $urlString .= "<TD>" . $myRow['url'] . "</TD>";

}

echo "<table width=\"420\" border=\"0\"><TR>" .
  $titelString .
  "</TR>"<TR>" .
  $urlString .
  "</TR></TABLE>";

På den måde er det lige meget hvor mange sæt du har... eneste problem er hvordan du vil styre din width i dine TD's... plus du risikerer at hvis du har mange sæt, så kommer din side til at se underlig ud!
Er det ikke bedre at lave dem nedad?
Noget ala <TR><TD>titel</TD><TD>Url</TD></TR>

Hvis du vælger den måde, så kan du også lave foreach'en bedre og undlade de to strings.

Håber det er en hjælp...
Avatar billede 123maka Nybegynder
16. december 2004 - 13:55 #2
Aha..!
MANGE TAK!

Nu lærte jeg lidt om det.
Men nu er meningen jo at når den har hentet 4 urls ud, så skal den starte med nogle nye. Altså:
<table width=\"420\" border=\"0\">
  <tr>
    <td width=\"10\"></td>
    <td width=\"100\">Titel1</td>
    <td width=\"100\">Titel2</td>
    <td width=\"100\">Titel3</td>
    <td width=\"100\">Titel4</td>
    <td width=\"10\"></td>
  </tr>
  <tr>
    <td width=\"10\"></td>
    <td width=\"100\">Url1</td>
    <td width=\"100\">Url2</td>
    <td width=\"100\">Url3</td>
    <td width=\"100\">Url4</td>
    <td width=\"10\"></td>
  <tr>
  <tr>
    <td width=\"10\"></td>
    <td width=\"100\">Titel5</td>
    <td width=\"100\">Titel6</td>
    <td width=\"100\">Titel7</td>
    <td width=\"100\">Titel8</td>
    <td width=\"10\"></td>
  </tr>
  <tr>
    <td width=\"10\"></td>
    <td width=\"100\">Url5</td>
    <td width=\"100\">Url6</td>
    <td width=\"100\">Url7</td>
    <td width=\"100\">Url8</td>
    <td width=\"10\"></td>
  <tr>
</table>
Avatar billede 123maka Nybegynder
16. december 2004 - 13:55 #3
Hæver lige pointsatsen.
Avatar billede martor Nybegynder
16. december 2004 - 14:10 #4
Ok, så kan du gøre det at du laver det inde i din foreach.

// variable
$titelString = "";
$urlString = "";
$counter = 0;

// hent indhold
$result = mysql_query("SELECT id, titel, url FROM #dinTabel#");

foreach($myRow = mysql_fetch_assoc($result))
{
  if($counter == 0)
  {
    // start en row
    $titelString .= "<TR><TD>" . $myRow['titel'] . "</TD>";
    $urlString .= "<TR><TD>" . $myRow['url'] . "</TD>";
   
    $counter++;
  }
  else if($counter == 3)
  {
    // slut en row
    $titelString .= "<TD>" . $myRow['titel'] . "</TD></TR>";
    $urlString .= "<TD>" . $myRow['url'] . "</TD></TR>";
   
    $counter = 0;
  }
  else
  {
    // midter indhold
    $titelString .= "<TD>" . $myRow['titel'] . "</TD>";
    $urlString .= "<TD>" . $myRow['url'] . "</TD>";
   
    $counter++;
  }
}

// udskriv
echo "<table width=\"420\" border=\"0\">" .
  $titelString .
  $urlString .
  "</TABLE>";
Avatar billede 123maka Nybegynder
17. december 2004 - 09:48 #5
Får en:
Parse error: parse error, unexpected ')' in /var/www/***/links.php on line 475

linje 475 = foreach($myRow = mysql_fetch_assoc($result))
Avatar billede martor Nybegynder
17. december 2004 - 16:50 #6
det skal også være while, i stedet for foreach... my bad...
while ($myRow = mysql_fetch_assoc($result))

men jeg skal være ærlig og sige at jeg ikke har valideret den kode jeg har skrevet... den er mest ment som eksempel.
Avatar billede 123maka Nybegynder
19. december 2004 - 17:27 #7
Tak :)
Avatar billede 123maka Nybegynder
28. december 2004 - 21:18 #8
Den laver noget forkert.
Se fx. her:
http://80.166.140.165/exp.jpg
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