Avatar billede cmau Nybegynder
24. juli 2006 - 10:47 Der er 15 kommentarer og
1 løsning

Tabel og udskrivning driller

Hejsa

Jeg er ved at lave 1 tabel med nyeste drinks og nyeste drukspil, men er løbet ind i problemer.
Hvis i ser på min kode i bunden af spørgsmålet, kan i se at jeg godt kan udskrive drinks, som står først, men koden bliver lige nu:

<tr>
<td width="14%" valign="top">2</td>
<td width="25%" valign="top"><a href="drinks.php?show=4">Tequila Sunrise</a></td>
<td width="10%" valign="top">Kommer</td>

<tr>
<td width="14%" valign="top">3</td>
<td width="25%" valign="top"><a href="drinks.php?show=3">Velkomstdrink/bowle</a></td>
<td width="10%" valign="top">Kommer</td>

... 10 gange også kommer </tr>

Hvordan skal jeg få det til at se således ud, altså den skal udskrive fra 2 tabeller i databasen for hver gang der kommer en <tr> og </tr>:

<tr>
<td width="14%" valign="top" class="left">DrinkNr.</td>
<td width="25%" valign="top" class="left">DrinkNavn</td>
<td width="10%" valign="top" class="left">DrinkEkstra</td>
<td width="2%"> </td>
<td width="14%" valign="top" class="left">DrukspilNr.</td>
<td width="25%" valign="top" class="left">DrukspilNavn</td>
<td width="10%" valign="top" class="left">DrukspilEkstra</td>
</tr>


Min kode lige nu:

$query = mysql_query("SELECT * FROM partysite_drinks ORDER BY id DESC LIMIT 10") or die(mysql_error());
$i = 1;
while ($row = mysql_fetch_assoc($query)) {
    $i++;
    echo '<tr>';
    echo '<td width="14%" valign="top">'.$i.'</td>';
    echo '<td width="25%" valign="top"><a href="drinks.php?show='.$row['id'].'">'.$row['name'].'</a></td>';
    echo '<td width="10%" valign="top">Kommer</td>';
}
echo '<td width="2%"> </td>';
echo '<td width="14%" valign="top">5</td>';
echo '<td width="25%" valign="top">6</td>';
echo '<td width="10%" valign="top">7</td>';
echo '</tr></table>';

Hvis I ikke forstår mig så undskyld, vil gerne prøve at skrive det forfra.
Avatar billede jakobdo Ekspert
24. juli 2006 - 11:34 #1
Du har: echo '<tr>';
Så skal du vel også have: echo '</tr>';
inde i while(...)

Men forstår dog ikke helt: Hvordan skal jeg få det til at se således ud, altså den skal udskrive fra 2 tabeller i databasen for hver gang der kommer en <tr> og </tr>:
Avatar billede cmau Nybegynder
24. juli 2006 - 11:43 #2
Ja det er jo problemet. Hvis jeg gør som neden stående vil det hele jo fucke:

$query = mysql_query("SELECT * FROM partysite_drinks ORDER BY id DESC LIMIT 10") or die(mysql_error());
$i = 1;
while ($row = mysql_fetch_assoc($query)) {
    $i++;
    echo '<tr>';
    echo '<td width="14%" valign="top">'.$i.'</td>';
    echo '<td width="25%" valign="top"><a href="drinks.php?show='.$row['id'].'">'.$row['name'].'</a></td>';
    echo '<td width="10%" valign="top">Kommer</td>';
}
$query = mysql_query("SELECT * FROM partysite_games ORDER BY id DESC LIMIT 10") or die(mysql_error());
$i = 1;
while ($row = mysql_fetch_assoc($query)) {
    $i++;
    echo '<td width="2%"> </td>';
    echo '<td width="14%" valign="top">'.$i.'</td>';
    echo '<td width="25%" valign="top"><a href="games.php?show='.$row['id'].'">'.$row['name'].'</a></td>';
    echo '<td width="10%" valign="top">Kommer</td>';
    echo '</tr>';
}
echo '</table>';

Men jeg kan jo også gøre som nendenstående, men så vil den altid udskrive den samme drukspil:

$query = mysql_query("SELECT * FROM partysite_drinks ORDER BY id DESC LIMIT 10") or die(mysql_error());
$i = 0;
while ($row = mysql_fetch_assoc($query)) {
    $i++;
    echo '<tr>';
    echo '<td width="14%" valign="top">'.$i.'</td>';
    echo '<td width="25%" valign="top"><a href="?page=drinks.php&amp;show='.$row['id'].'">'.$row['name'].'</a></td>';
    echo '<td width="10%" valign="top">Kommer</td>';

        $query2 = mysql_query("SELECT * FROM partysite_games ORDER BY id DESC LIMIT 1") or die(mysql_error());
        $row2 = mysql_fetch_assoc($query2);
    echo '<td width="2%"> </td>';
    echo '<td width="14%" valign="top">'.$i.'</td>';
    echo '<td width="25%" valign="top"><a href="?page=games.php&amp;show='.$row2['id'].'">'.$row2['name'].'</a></td>';
    echo '<td width="10%" valign="top">Kommer</td>';
    echo '</tr>';
}
echo '</table>';
Avatar billede jakobdo Ekspert
24. juli 2006 - 11:47 #3
Jeg tror ikke helt jeg forstår hvad du har i dine tabeller og hvad du rent faktisk ønsker.
Kan du prøve at lave en side i ren html, hvor du evt. kort viser hvad du ønsker?
Og så også kort beskrive hvad du har gemt i dine tabeller?
Avatar billede cmau Nybegynder
24. juli 2006 - 11:58 #4
echo '<tr>'; // Starter række
    echo '<td width="14%" valign="top">'.$i.'</td>'; //Til drinksudskrivningen
    echo '<td width="25%" valign="top"><a href="?page=drinks.php&amp;show='.$row['id'].'">'.$row['name'].'</a></td>'; //Til drinksudskrivningen
    echo '<td width="10%" valign="top">Kommer</td>'; //Til drinksudskrivningen

    echo '<td width="2%"> </td>'; //Skille linje

    echo '<td width="14%" valign="top">'.$i.'</td>'; //Til spiludskrivningen
    echo '<td width="25%" valign="top"><a href="?page=games.php&amp;show='.$row2['id'].'">'.$row2['name'].'</a></td>'; //Til spiludskrivningen
    echo '<td width="10%" valign="top">Kommer</td>'; //Til spiludskrivningen
    echo '</tr>'; //Afslutter række

Men hvordan får jeg 2 query og 2 while flettet ind i dette, så den udskriver rigtigt. Hvis jeg bare satte dem om de 3 celler hver ting har vil den først udskrive 10x3 celler til drinks og nedenunder 10x3 felter til spil. Så vil de se sådan her ud:

    echo '<tr>'; // Starter række
    echo '<td width="14%" valign="top"></td>'; //Til drinksudskrivningen
    echo '<td width="25%" valign="top"></td>'; //Til drinksudskrivningen
    echo '<td width="10%" valign="top"></td>'; //Til drinksudskrivningen
    echo '<td width="2%"> </td>'; //Skille linje

    echo '<tr>'; // Starter række
    echo '<td width="14%" valign="top"></td>'; //Til drinksudskrivningen
    echo '<td width="25%" valign="top"></td>'; //Til drinksudskrivningen
    echo '<td width="10%" valign="top"></td>'; //Til drinksudskrivningen
    echo '<td width="2%"> </td>'; //Skille linje

    echo '<tr>'; // Starter række
    echo '<td width="14%" valign="top"></td>'; //Til drinksudskrivningen
    echo '<td width="25%" valign="top"></td>'; //Til drinksudskrivningen
    echo '<td width="10%" valign="top"></td>'; //Til drinksudskrivningen
    echo '<td width="2%"> </td>'; //Skille linje

10 gange. Og derefter:

    echo '<td width="14%" valign="top"></td>'; //Til spiludskrivningen
    echo '<td width="25%" valign="top"></td>'; //Til spiludskrivningen
    echo '<td width="10%" valign="top"></td>'; //Til spiludskrivningen
    echo '</tr>'; //Afslutter række


    echo '<td width="14%" valign="top"></td>'; //Til spiludskrivningen
    echo '<td width="25%" valign="top"></td>'; //Til spiludskrivningen
    echo '<td width="10%" valign="top"></td>'; //Til spiludskrivningen
    echo '</tr>'; //Afslutter række

10 gange.

Det skal jo være først den ene og så den anden:

    echo '<tr>'; // Starter række
    echo '<td width="14%" valign="top"></td>'; //Til drinksudskrivningen
    echo '<td width="25%" valign="top"></td>'; //Til drinksudskrivningen
    echo '<td width="10%" valign="top"></td>'; //Til drinksudskrivningen
    echo '<td width="2%"> </td>'; //Skille linje
    echo '<td width="14%" valign="top"></td>'; //Til spiludskrivningen
    echo '<td width="25%" valign="top"></td>'; //Til spiludskrivningen
    echo '<td width="10%" valign="top"></td>'; //Til spiludskrivningen
    echo '</tr>'; //Afslutter række
Avatar billede jakobdo Ekspert
24. juli 2006 - 12:02 #5
Har du noget som "forbinder" de 2 tabeller?
For man kan jo godt lave et udtræk, som henter data fra 2 tabeller samtidig.
Avatar billede cmau Nybegynder
24. juli 2006 - 12:24 #6
Hvad mener du med forbinder?
Avatar billede jakobdo Ekspert
24. juli 2006 - 12:31 #7
Et ID.
F.eks. bruger man jo oftest tabeller til at gemme flere info og kunne sammenkæde dem.
Avatar billede cmau Nybegynder
24. juli 2006 - 12:39 #8
Det jeg skal hente ud er id og navn på 10 nyeste drinks og id og navn på 10 nyeste drukspil.

De 2 tabeller hedder partysite_drinks og partysite_games
Avatar billede jakobdo Ekspert
24. juli 2006 - 12:55 #9
Du kunne jo lave 2 udtræk og gemme udtræk i et array, og så løbe det igennem og lave din tabel.
Avatar billede cmau Nybegynder
24. juli 2006 - 13:12 #10
Ja okay :) Men array har jeg faktisk aldrig arbejdet med, kun ganske lidt, så ved ikke hvordan jeg skulle kunne bruge det.
Avatar billede cmau Nybegynder
24. juli 2006 - 13:30 #11
Kunne du evt hjælpe med dette?
Avatar billede cmau Nybegynder
24. juli 2006 - 13:50 #12
Eller hvordan henter jeg ud fra 2 tabeller?
Avatar billede jakobdo Ekspert
24. juli 2006 - 18:18 #13
Fang mig lige på msn: jakobdo \at/ hotmail \dot/ com
Avatar billede cmau Nybegynder
25. juli 2006 - 21:47 #14
Så virkede det du fik lavet:

$query1 = mysql_query("SELECT * FROM partysite_drinks ORDER BY id DESC LIMIT 10") or die(mysql_error());
$query2 = mysql_query("SELECT * FROM partysite_games ORDER BY id DESC LIMIT 10") or die(mysql_error());
$i = 0;
while(($row1 = mysql_fetch_assoc($query1)) && ($row2 = mysql_fetch_assoc($query2)))
{
    $i++;
    echo '<tr>';
    echo '<td width="14%" valign="top">'.$i.'</td>';
    echo '<td width="25%" valign="top"><a href="?page=drinks.php&amp;show='.$row1['id'].'">'.$row1['name'].'</a></td>';
    echo '<td width="10%" valign="top">Kommer</td>';

    echo '<td width="2%"> </td>';
    echo '<td width="14%" valign="top">'.$i.'</td>';
    echo '<td width="25%" valign="top"><a href="?page=games.php&amp;show='.$row2['id'].'">'.$row2['name'].'</a></td>';
    echo '<td width="10%" valign="top">Kommer</td>';
    echo '</tr>';
}
Avatar billede jakobdo Ekspert
25. juli 2006 - 21:51 #15
Svar!
Avatar billede jakobdo Ekspert
25. juli 2006 - 22:01 #16
Takker for point.
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