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 !!!
Annonceindlæg fra Infor
Glemte lige at sige at 'firma' kan være tom og så skal 'navn' bruges.
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.
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*
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']; }
Hmmm: if ($data['firma'] != $old ) { $out .= "<b>$data[firma]</b><br>"; } $old = $data['firma'];
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
din sidste virker ikke ss
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(); ?>
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(); ?>
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 :-)
> 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?
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. :-)
hej nielle, bruger den som den er så sender du svar til dine points tak for hjælpen :-)
Vi tilbyder markedets bedste kurser inden for webudvikling