Avatar billede nyst Nybegynder
27. januar 2004 - 13:48 Der er 10 kommentarer og
1 løsning

Udtræk fra database med og uden løkke

Hej,

jeg har en tabel, hvor nogle felter kun skal skrives en gang og andre alle. Disse skal så stå i en html-tabel.

    <?php
    mysql_connect("bla bla");
    mysql_select_db("bla");
    $query = mysql_query("SELECT afdeling, overskrift, indhold, pris, dag FROM `priser`WHERE afd=060");
    while($data = mysql_fetch_array($query)) {
    echo "<TR><TD>";
    echo "<H3>$data[afdeling]</H3>";
    echo "<H1>$data[overskrift]</H1>";
    echo "<TABLE border=1 bordercolorlight=#a5b9d7 bordercolordark=#ffffff cellpadding=3 cellspacing=0 width=400>";
    echo "<TR><TD width=300>Ydelse</TD><TD width=100 align=center>Pris</TD></TR>";
    echo "<TR><TD width=300>$data[indhold]</TD><TD width=100 align=center>$data[pris]</TD></TR>";
    echo "</TABLE><BR>";
    echo "<DIV class=h3>Priser gældende fra $data[dag].</DIV>";
    echo "<BR><BR></TD></TR>";
    }
    mysql_close();
    ?>

Det er afdeling og overskrift som kun skal vises en gang,
så løkke med indhold og pris,
så igen kun en gang med dag.

Er der en tålmodig sjæl der kan hjælpe?
Avatar billede codebase Praktikant
27. januar 2004 - 14:00 #1
<?php
    mysql_connect("bla bla");
    mysql_select_db("bla");
    $query = mysql_query("SELECT afdeling, overskrift, indhold, pris, dag FROM `priser`WHERE afd=060");
    while($data = mysql_fetch_array($query)) {
    $i++;
    echo "<TR><TD>";
    if ( $i == 1 )
    {

    echo "<H3>$data[afdeling]</H3>";
    echo "<H1>$data[overskrift]</H1>";
    }
    echo "<TABLE border=1 bordercolorlight=#a5b9d7 bordercolordark=#ffffff cellpadding=3 cellspacing=0 width=400>";
    echo "<TR><TD width=300>Ydelse</TD><TD width=100 align=center>Pris</TD></TR>";
    echo "<TR><TD width=300>$data[indhold]</TD><TD width=100 align=center>$data[pris]</TD></TR>";
    echo "</TABLE><BR>";
    echo "<DIV class=h3>Priser gældende fra $data[dag].</DIV>";
    echo "<BR><BR></TD></TR>";
    }
    mysql_close();
    ?>
Avatar billede nyst Nybegynder
27. januar 2004 - 14:06 #2
Hej codebase,
desværre er den ikke helt på plads eller også har jeg ikke udtrykt mig klart nok.

Nu viser den 'afdeling' og overskrift' en gang - det er ok.

'indhold' og 'pris' vises i hver sin tabel, hvor den kun skal gentages under ydelse og pris i tabellen.

'dag' vises stadig flere gange.

Gider du se på det?
Avatar billede nyst Nybegynder
27. januar 2004 - 16:03 #3
Hej igen,
min kode ser nu sådanne ud:

            <?php
    mysql_connect("");
    mysql_select_db("");
    $query = mysql_query("SELECT afdeling, overskrift, indhold, pris, dag FROM `priser`WHERE afd=060");
    while($data = mysql_fetch_array($query)) {
    $i++;
        echo "<TABLE border=1 cellpadding=0 cellspacing=0><TR><TD>";
    if ( $i == 1 )
    {
    echo "<H3>$data[afdeling]</H3>";
    echo "<H1>$data[overskrift]</H1>";
    echo "<TABLE border=1 bordercolorlight=#a5b9d7 bordercolordark=#ffffff cellpadding=3 cellspacing=0 width=400>";
    echo "<TR><TD width=300>Ydelse</TD><TD width=100 align=center>Pris</TD></TR>";
    }   
           
    echo "<TR><TD width=300>$data[indhold]</TD><TD width=100 align=center>$data[pris]</TD></TR>";


        if ( $i == 1 )
        {
        echo "</TABLE><BR>";
        echo "<DIV class=h3>Priser gældende fra $data[dag] og til ny prisliste udkommer.<BR>Der tages forbehold for fejl.</DIV><BR><BR>";
        }
       
    echo "</TD></TR></TABLE>";

    }
    mysql_close();
    ?>

Det er nu er galt er at:

    echo "<TR><TD width=300>$data[indhold]</TD><TD width=100 align=center>$data[pris]</TD></TR>";

ikke vises i samme tabel, men den første visning altså ok og så desværre anden visning aller nederst, dvs helt efter datoen for priserne.

Hvad kan der være galt???
Avatar billede nyst Nybegynder
30. januar 2004 - 11:36 #4
hej codebase,
jeg gav nok forkert svar så du ikke så det.
Jeg har nu prøvet denne men 'dag' vises ikke til sidst men lige efter 'overskrift' og
og den skriver ikke 'indhold' og 'pris' men koden $data[indhold] og $data[pris]
dog laver den tabellen men med alt formange felter.
Kan du hjælpe med hvad der er forkert???
koden kommer her:

    <?php
    mysql_connect("bla bla");
    mysql_select_db("bla");
    $query = mysql_query("SELECT afdeling, overskrift, indhold, pris, dag FROM `priser`WHERE afd=060");
    while($data = mysql_fetch_array($query)) {
    $i++;
    if ( $i == 1 ) {
    echo "<H3>$data[afdeling]</H3>";
    echo "<H1>$data[overskrift]</H1>";
        }
        else {
        ?>
        <TABLE border=1 bordercolorlight=#a5b9d7 bordercolordark=#ffffff cellpadding=3 cellspacing=0 width=400>
    <TR><TD width=300>Ydelse</TD><TD width=100 align=center>Pris</TD></TR>
        <?PHP
        for ( $i = 0; $i < sizeof($data); $i++ ) {
        ?>   
    <TR><TD width=300>$data[indhold]</TD><TD width=100 align=center>$data[pris]</TD></TR>
        <?PHP
        }
        ?>
        </TABLE><BR>
        <?PHP
        }
        ?>
        <?PHP
        if ( $i == 1 ) {
        echo "<DIV class=hamlet3>Priser gældende fra $data[dag] og til ny prisliste udkommer.<BR>Der tages forbehold for fejl.<BR></DIV>";
        }
        }
    mysql_close();
    ?>
Avatar billede nyst Nybegynder
30. januar 2004 - 11:37 #5
hej codebase,
jeg gav nok forkert svar så du ikke så det.
Jeg har nu prøvet denne men 'dag' vises ikke til sidst men lige efter 'overskrift' og
og den skriver ikke 'indhold' og 'pris' men koden $data[indhold] og $data[pris]
dog laver den tabellen men med alt formange felter.
Kan du hjælpe med hvad der er forkert???
koden kommer her:

    <?php
    mysql_connect("bla bla");
    mysql_select_db("bla");
    $query = mysql_query("SELECT afdeling, overskrift, indhold, pris, dag FROM `priser`WHERE afd=060");
    while($data = mysql_fetch_array($query)) {
    $i++;
    if ( $i == 1 ) {
    echo "<H3>$data[afdeling]</H3>";
    echo "<H1>$data[overskrift]</H1>";
        }
        else {
        ?>
        <TABLE border=1 bordercolorlight=#a5b9d7 bordercolordark=#ffffff cellpadding=3 cellspacing=0 width=400>
    <TR><TD width=300>Ydelse</TD><TD width=100 align=center>Pris</TD></TR>
        <?PHP
        for ( $i = 0; $i < sizeof($data); $i++ ) {
        ?>   
    <TR><TD width=300>$data[indhold]</TD><TD width=100 align=center>$data[pris]</TD></TR>
        <?PHP
        }
        ?>
        </TABLE><BR>
        <?PHP
        }
        ?>
        <?PHP
        if ( $i == 1 ) {
        echo "<DIV class=hamlet3>Priser gældende fra $data[dag] og til ny prisliste udkommer.<BR>Der tages forbehold for fejl.<BR></DIV>";
        }
        }
    mysql_close();
    ?>
Avatar billede codebase Praktikant
30. januar 2004 - 12:37 #6
det er nok noget ala dette her du søger.
husk, <table> start og slut, enten skal de begge to ind i din while ellers skal de begge to være uden for lykken..!

<?php
mysql_connect("bla bla");
mysql_select_db("bla");
$query = mysql_query("SELECT afdeling, overskrift, indhold, pris, dag FROM `priser`WHERE afd=060");
while($data = mysql_fetch_array($query))
{
    echo'<TABLE border=1 bordercolorlight=#a5b9d7 bordercolordark=#ffffff cellpadding=3 cellspacing=0 width=400>';
    $i++;
    if ( $i == 1 )
    {
        echo "<H3>$data[afdeling]</H3>";
        echo "<H1>$data[overskrift]</H1>";
    }
    else
    {
        echo'<TR><TD width=300>Ydelse</TD><TD width=100 align=center>Pris</TD></TR>';
        for ( $i = 0; $i < sizeof($data); $i++ )
        {
       
            echo'<TR><TD width=300>$data[indhold]</TD><TD width=100 align=center>$data[pris]</TD></TR>';
        }
    }
    echo'</TABLE><BR>';

    if ( $i == 1 ) {
    echo "<DIV class=hamlet3>Priser gældende fra $data[dag] og til ny prisliste udkommer.<BR>Der tages forbehold for fejl.<BR></DIV>";
    }
}
mysql_close();
?>
Avatar billede nyst Nybegynder
02. februar 2004 - 12:25 #7
Hej igen,
nej det virker ikke:

$query = mysql_query("SELECT afdeling, overskrift, indhold, pris, dag FROM `priser`WHERE afd=060");
while($data = mysql_fetch_array($query))
{
    $i++;
    if ( $i == 1 )
    {
        echo "<H3>$data[afdeling]</H3>";
        echo "<H1>$data[overskrift]</H1>";
    }
    else
    {
            echo "<TABLE border=1 bordercolorlight=#a5b9d7 bordercolordark=#ffffff cellpadding=3 cellspacing=0 width=400>";       
        echo "<TR><TD width=300>Ydelse</TD><TD width=100 align=center>Pris</TD></TR>";
        for ( $i = 0; $i < sizeof($data); $i++ )
        {
            echo "<TR><TD width=300>$data[indhold]</TD><TD width=100 align=center>$data[pris]</TD></TR>";
        }
    }
    echo "</TABLE><BR>";
    if ( $i == 1 )
        {
        echo "<DIV class=h3>Priser gældende fra $data[dag] og til ny prisliste udkommer.<BR>Der tages forbehold for fejl.<BR>© Privathospitalet Hamlet</DIV>";
    }       
}
mysql_close();
?>   

som du kan se skal den sidste 'div' '/div' stå under table, men den vises før tabel.

Endvidere vises 'indhold' og 'pris' 10 gange for kun den ene kolonne, men glemmer de andre.

Jeg synes eller selv koden ser ok ud, men noget går der galt???

Og så tager den kun den ene
Avatar billede nyst Nybegynder
02. februar 2004 - 12:29 #8
undskyld, det er denne kode:

$query = mysql_query("SELECT afdeling, overskrift, indhold, pris, dag FROM `priser`WHERE afd=060");
while($data = mysql_fetch_array($query)) {
    echo "<TABLE border=1 bordercolorlight=#a5b9d7 bordercolordark=#ffffff cellpadding=3 cellspacing=0 width=400>";
    $i++;
    if ( $i == 1 )
    {
        echo "<H3>$data[afdeling]</H3>";
        echo "<H1>$data[overskrift]</H1>";
    }
    else
    {
        echo "<TR><TD width=300>Ydelse</TD><TD width=100 align=center>Pris</TD></TR>";
        for ( $i = 0; $i < sizeof($data); $i++ )
        {
            echo "<TR><TD width=300>$data[indhold]</TD><TD width=100 align=center>$data[pris]</TD></TR>";
        }
    }
    echo "</TABLE><BR>";
    if ( $i == 1 ) {
        echo "<DIV class=h3>Priser gældende fra $data[dag] og til ny prisliste udkommer.<BR>Der tages forbehold for fejl.<BR></DIV>";
    }
}
mysql_close();
?>
Avatar billede codebase Praktikant
02. februar 2004 - 12:38 #9
oki her mit sidste bud..!

$query = mysql_query("SELECT afdeling, overskrift, indhold, pris, dag FROM `priser`WHERE afd=060");
while($data = mysql_fetch_array($query)) {
    echo "<TABLE border=1 bordercolorlight=#a5b9d7 bordercolordark=#ffffff cellpadding=3 cellspacing=0 width=400>";
    $i++;
    if ( $i == 1 )
    {
        echo "<tr><td colspan=2>";
        echo "<H3>$data[afdeling]</H3>";
        echo "<H1>$data[overskrift]</H1>";
        echo "</td></tr>";
    }
    echo "<TR><TD width=300>Ydelse</TD><TD width=100 align=center>Pris</TD></TR>";
    for ( $i = 0; $i < sizeof($data); $i++ )
    {
        echo "<TR><TD width=300>$data[indhold]</TD><TD width=100 align=center>$data[pris]</TD></TR>";
    }

    echo "</TABLE><BR>";
    if ( $i == 1 ) {
        echo "<DIV class=h3>Priser gældende fra $data[dag] og til ny prisliste udkommer.<BR>Der tages forbehold for fejl.<BR></DIV>";
    }
}
mysql_close();
?>
Avatar billede nyst Nybegynder
02. februar 2004 - 13:11 #10
Den duer slet ikke, men jeg lukker her og starter forfra, men tak for forsøget
Avatar billede nyst Nybegynder
06. februar 2004 - 10:42 #11
har du fået dine points???
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