Avatar billede nyst Nybegynder
14. maj 2008 - 12:44 Der er 13 kommentarer og
1 løsning

tabel udskrives forkert

Hej, jeg har en tabel der skifter farve for hvert felt og det funker fint, men noget går galt i uskrivning, idet nogle felter ikke udskrives hvis det findes flere gange - kan nogen se fejlen?

<?php
  mysql_connect();
  mysql_select_db();
    $x = 0;
    $query = mysql_query("SELECT * FROM `kunder` ORDER BY firma, navn");
    $data = mysql_fetch_array($query);
    $out .= "<table border=0 cellpadding=0 cellspacing=0>";
    $out .= "<tr><td>";
    $out .= "<table border='0' cellpadding='9' cellspacing='0'>";
    $old = '';
    while($data = mysql_fetch_array($query))
    {
        $color = ( $x++ % 2 ? "#E0E0E0" : "#EBEBEB");
        $out .= "<tr><td bgcolor=\"".$color."\">";
        if ( $data['firma'] != $old )
        {
            $out .= "<b>$data[firma]</b><br>";
            $old = $data['firma'];
        }
        $out .= "$data[navn]</a><br><br>$data[adresse]<br>$data[postnr] $data[byen]<br><br>Telefon: $data[telefon] Fax: $data[fax]<br>E-mail: <a href='mailto:$data[email]' class='link2'>$data[email]</a></td></tr>";
    }
    $out .= "</table><br>";
    $out .= "</td></tr>";
    $out .= "</table>";
    echo $out;
    mysql_close();
?>

Det er 'firma' der ikke bliver vist når der er flere !!!
Avatar billede nyst Nybegynder
14. maj 2008 - 12:46 #1
Glemte lige at sige at 'firma' kan være tom og så skal 'navn' bruges.
Avatar billede nielle Nybegynder
14. maj 2008 - 12:52 #2
Start i hvert fald med at slette den første linje med:

$data = mysql_fetch_array($query);

Den har nemlig den effekt at du springer første række fra tabellen over.
Avatar billede nyst Nybegynder
14. maj 2008 - 13:03 #3
hej, så ser den sådan ud:

<?php
  mysql_connect("");
  mysql_select_db("");
    $x = 0;
    $query = mysql_query("SELECT * FROM `kunder` ORDER BY firma, navn");

    $out .= "<table border='0' cellpadding='9' cellspacing='0'>";
    $old = '';
    while($data = mysql_fetch_array($query))
    {
        $color = ( $x++ % 2 ? "#E0E0E0" : "#EBEBEB");
        $out .= "<tr><td bgcolor=\"".$color."\">";
        if ( $data['firma'] != $old )
        {
            $out .= "<b>$data[firma]</b><br>";
            $old = $data['firma'];
        }
        $out .= "$data[navn]</a><br><br>$data[adresse]<br>$data[postnr] $data[byen]<br><br>Telefon: $data[telefon] Fax: $data[fax]<br>E-mail: <a href='mailto:$data[email]' class='link2'>$data[email]</a></td></tr>";
    }
    $out .= "</table>";
    echo $out;
    mysql_close();
?>

men har stadig samme problem *S*
Avatar billede nielle Nybegynder
14. maj 2008 - 13:32 #4
Ret:

        if ( $data['firma'] != $old )
        {
            $out .= "<b>$data[firma]</b><br>";
            $old = $data['firma'];
        }

- til:

        if ( $data['firma'] != $old )
        {
            $out .= "<b>$data[firma]</b><br>";
            $old .= $data['firma'];
        }
Avatar billede nielle Nybegynder
14. maj 2008 - 13:40 #5
Hmmm:

    if ($data['firma'] != $old ) {
        $out .= "<b>$data[firma]</b><br>";       
    }
    $old = $data['firma'];
Avatar billede nyst Nybegynder
14. maj 2008 - 13:45 #6
det funker nu - bare det lille . SS

ved du hvordan man gør hvis 'firma' er tom og den så skal bruge 'navn' men sætte det ind i rækkefølgen som om det var 'firma' ?

nu står de tomme 'firma' først
Avatar billede nyst Nybegynder
14. maj 2008 - 13:52 #7
din sidste virker ikke ss
Avatar billede nyst Nybegynder
14. maj 2008 - 13:53 #8
denne er ok dog ikke hvis 'firma' er tom

<?php
  mysql_connect("");
  mysql_select_db("");
    $x = 0;
    $query = mysql_query("SELECT * FROM `kunder` ORDER BY firma, navn");

    $out .= "<table border='0' cellpadding='9' cellspacing='0'>";
    $old = '';
    while($data = mysql_fetch_array($query))
    {
        $color = ( $x++ % 2 ? "#E0E0E0" : "#EBEBEB");
        $out .= "<tr><td bgcolor=\"".$color."\">";
        if ( $data['firma'] != $old )
        {
            $out .= "<b>$data[firma]</b><br>";
            $old .= $data['firma'];
        }
        $out .= "$data[navn]</a><br><br>$data[adresse]<br>$data[postnr] $data[byen]<br><br>Telefon: $data[telefon] Fax: $data[fax]<br>E-mail: <a href='mailto:$data[email]' class='link2'>$data[email]</a></td></tr>";
    }
    $out .= "</table>";
    echo $out;
    mysql_close();
?>
Avatar billede nielle Nybegynder
14. maj 2008 - 18:26 #9
Prøv dette her:

<?php
mysql_connect();
mysql_select_db();

$query = mysql_query("SELECT * FROM kunder ORDER BY firma, navn");
$out .= "<table border='0' cellpadding='0' cellspacing='0'>";
$out .= "<tr><td>";
$out .= "<table border='0' cellpadding='9' cellspacing='0'>";

$oldFirma = 'Findes ikke i forvejen';

while ($data = mysql_fetch_array($query)) {
    $color = ($color == "#EBEBEB") ? "#E0E0E0" : "#EBEBEB";
    $out .= "<tr><td bgcolor='$color'>";

    $firma = $data['firma'];
    if ($firma != $oldFirma) {
        $out .= "<b>$firma</b><br>";
        $oldFirma = $firma;
    }

    $out .=
"<a href='????'>$data[navn]</a><br><br>
$data[adresse]<br>
$data[postnr] $data[byen]<br><br>
Telefon: $data[telefon] Fax: $data[fax]<br>
E-mail: <a href='mailto:$data[email]' class='link2'>$data[email]</a>
</td>
</tr>";
}

$out .= "</table><br>";
$out .= "</td></tr>";
$out .= "</table>";
echo $out;

mysql_close();
?>
Avatar billede nyst Nybegynder
15. maj 2008 - 09:43 #10
Hej nielle,
den funker slet ikke:

laver 'navn' om som et link

og har stadig de tomme 'firma' øverst og ikke puttet ind i alfabetrækkefølgen

:-)
Avatar billede nielle Nybegynder
15. maj 2008 - 10:33 #11
> laver 'navn' om som et link

I din oprindelige kode var der en </a> uden nogen indledende <a> - der var derfor at lev tilrettede koden til at have et link. Den del af koden kan da bare fjernes helt.

> og har stadig de tomme 'firma' øverst og ikke puttet ind i alfabetrækkefølgen

Jeg er ikke sikker på at jeg er med på hvad du mener. Har du et link til siden, eller kan du poste her hvordan det kommer til at se ud?
Avatar billede nyst Nybegynder
15. maj 2008 - 11:08 #12
Hej nielle,

som koden ser ud nu:

<?php
  mysql_connect("");
  mysql_select_db("");
    $x = 0;
    $query = mysql_query("SELECT * FROM `kunder` ORDER BY firma, navn");
    $out .= "<table border='0' cellpadding='9' cellspacing='0'>";
    $old = '';
    while($data = mysql_fetch_array($query))
    {
        $color = ( $x++ % 2 ? "#E0E0E0" : "#EBEBEB");
        $out .= "<tr><td bgcolor=\"".$color."\">";
        if ( $data['firma'] != $old )
        {
            $out .= "<b>$data[firma]</b><br>";
            $old .= $data['firma'];
        }
        $out .= "$data[navn]</a><br><br>$data[adresse]<br>$data[postnr] $data[byen]<br><br>Telefon: $data[telefon]<br>Fax: $data[fax]<br>E-mail: <a href='mailto:$data[email]' class='link2'>$data[email]</a><br><br>Kontonr.: $data[kontonr]</td></tr>";
    }
    $out .= "</table>";
    echo $out;
    mysql_close();
?>

og den viker godt - dog den lille krølle, at hvis det nu ikke er et firma men en person, så er 'firma' jo tom og for alle disse bliver de vist først i listen, hvor den bruger feltet 'navn' og så derefter korrekt alle 'firma'.

Det jeg gerne ville er at disse, altså 'navn' bliver flettet alfabetisk ind i rækken og ikke står først på listen.

Kunne vel være noget med if 'firma' emty så 'navn' men skal jo så flettes ind i 'firma' og det kan jeg ikek helt overskue hvordan man gør.

Altså så hvis listen altid var udfyldt med 'firma' virker den korrekt, det er kun de der tomme altså private felter der driller.

:-)
Avatar billede nyst Nybegynder
22. maj 2008 - 12:36 #13
hej nielle,

bruger den som den er
så sender du svar til dine points

tak for hjælpen

:-)
Avatar billede nielle Nybegynder
22. maj 2008 - 17:09 #14
Svar :^)
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