17. oktober 2005 - 11:27
Der er
28 kommentarer og 1 løsning
udskrive tabel i gruppering og med farveskift
Hi there, har en idé om at lave en linkssamling i database der så udskrives i en tabel som gruperes efter alfabetet og som viser hvert bogstav f.eks A som overskrift med link til 'top' og indefor hvert bogsatvsgrupering skriver alle links sorteret efter navn. Når den så skifter til næste bogstav så ændres samtidig beggrundsfarven. Har indtil nu fået denne til at virker men den er ikke grupperet: Database: CREATE TABLE links ( id int(11) NOT NULL auto_increment, grp tinytext NOT NULL, www tinytext NOT NULL, navn tinytext NOT NULL, tekst text NOT NULL, PRIMARY KEY (id) ) TYPE=MyISAM COMMENT='links'; kode: <?php mysql_connect("localhost","",""); mysql_select_db("_db"); $x = 0; $query = mysql_query("SELECT * FROM `links` ORDER BY grp"); $data = mysql_fetch_array($query); $out .= "<table border=0 cellpadding=0 cellspacing=0>"; $out .= "<tr><td>"; $out .= "<table border='0' cellpadding='3' cellspacing='0'>"; while($data = mysql_fetch_array($query)) { $color = ( $x++ % 2 ? "#DADADA" : "#E6E6E6"); $out .= "<tr><td bgcolor=\"".$color."\">$data[grp]<br><a href='$data[www]' target='_blank' class=''>$data[navn]</a><br>$data[tekst]</td></tr>"; } $out .= "</table><br>"; $out .= "</td></tr>"; $out .= "</table>"; echo $out; mysql_close(); ?>
Annonceindlæg fra Deloitte
Slettet bruger
17. oktober 2005 - 11:44
#1
Lav en variabel med forbogstavet på det sidste post. Hvis så ikke det er det samme som på det nuværende post, skriver du overskriften ud: <?php mysql_connect("localhost","",""); mysql_select_db("_db"); $x = 0; $query = mysql_query("SELECT * FROM `links` ORDER BY grp"); $data = mysql_fetch_array($query); $out .= "<table border=0 cellpadding=0 cellspacing=0>"; $out .= "<tr><td>"; $out .= "<table border='0' cellpadding='3' cellspacing='0'>"; while($data = mysql_fetch_array($query)) { $color = ( $x++ % 2 ? "#DADADA" : "#E6E6E6"); if ($forbogstav != $data[navn]{0}) $out .= "<tr><td bgcolor=\"".$color."\" colspan=\"5\">".$data[navn]{0}."</td></tr>"; $forbogstav = $data[navn]{0}; $out .= "<tr><td bgcolor=\"".$color."\">$data[grp]<br><a href='$data[www]' target='_blank' class=''>$data[navn]</a><br>$data[tekst]</td></tr>"; } $out .= "</table><br>"; $out .= "</td></tr>"; $out .= "</table>"; echo $out; mysql_close(); ?>
17. oktober 2005 - 11:51
#2
hej philip, desværre så duer den ikke... den skriver 'grp' som er alfabetet flere gange også kun ved en post under bogstavet, endvidere samler den ikke alle poster under f.eks. grp B - din skriver alle B'er ud i hver sit felt - hvor den skulle samle dem med samme farve og så gå videre til C og skifte farve her. :-)
17. oktober 2005 - 12:11
#3
suppl. oplysninger: har et alfabet hvor man kan springe til 'grp med <a href="#b">B </a> og <a name="b">B</a> hvor der så skrives B som overskrift skal der samtidgig være link 'til top' håber alle oplysninger nu er der ... :-)
17. oktober 2005 - 14:07
#4
Kan du smide et link til din side?
17. oktober 2005 - 14:18
#5
hej jaw, nej det er en andens side jeg hjælper med så det kan jeg ikke og det tager tid hvis jeg skal lægge den ud på min egen da der er en del links SS :-)
17. oktober 2005 - 15:11
#6
Noget i denne stil? <?php mysql_connect("localhost","",""); mysql_select_db("_db"); $x = 0; $query = mysql_query("SELECT * FROM `links` ORDER BY grp"); $data = mysql_fetch_array($query); $out .= "<table border=0 cellpadding=0 cellspacing=0>"; $out .= "<tr><td>"; $out .= "<table border='0' cellpadding='3' cellspacing='0'>"; $old = ''; while($data = mysql_fetch_array($query)) { $color = ( $x++ % 2 ? "#DADADA" : "#E6E6E6"); $out .= "<tr><td bgcolor=\"".$color."\">"; if ( $data['grp'] != $old ) { $out .= "$data[grp]<br>"; $old = $data['grp']; } $out .= "<a href='$data[www]' target='_blank' class=''>$data[navn]</a><br>$data[tekst]</td></tr>"; } $out .= "</table><br>"; $out .= "</td></tr>"; $out .= "</table>"; echo $out; mysql_close(); ?>
17. oktober 2005 - 15:35
#7
Heij coderdk, håber alt vel *S* Se det ser bedre ud dog: - ved flere i samme 'grp' skifter den farve for hvert link, det skal den ikke kun skifte for hvert bogstav altså A,B,C osv. Kunne man give grp'en egen farve??? Endvidere skal jeg have koblet link til grp'erne på og til top men lad det vente. :-) :-)
17. oktober 2005 - 15:36
#8
Alt er vel ;) Du kan bare flytte farveskiftet ind i if'en: <?php mysql_connect("localhost","",""); mysql_select_db("_db"); $x = 0; $query = mysql_query("SELECT * FROM `links` ORDER BY grp"); $data = mysql_fetch_array($query); $out .= "<table border=0 cellpadding=0 cellspacing=0>"; $out .= "<tr><td>"; $out .= "<table border='0' cellpadding='3' cellspacing='0'>"; $old = ''; while($data = mysql_fetch_array($query)) { $out .= "<tr><td bgcolor=\"".$color."\">"; if ( $data['grp'] != $old ) { $color = ( $x++ % 2 ? "#DADADA" : "#E6E6E6"); $out .= "$data[grp]<br>"; $old = $data['grp']; } $out .= "<a href='$data[www]' target='_blank' class=''>$data[navn]</a><br>$data[tekst]</td></tr>"; } $out .= "</table><br>"; $out .= "</td></tr>"; $out .= "</table>"; echo $out; mysql_close(); ?>
17. oktober 2005 - 15:39
#9
Er det noget i denne stil du er ude efter: <?php mysql_connect("localhost","",""); mysql_select_db("_db"); $x = 0; $query = mysql_query("SELECT * FROM `links` ORDER BY grp"); $data = mysql_fetch_array($query); $out .= "<table border=0 cellpadding=0 cellspacing=0>"; $out .= "<tr><td>"; $out .= "<table border='0' cellpadding='3' cellspacing='0'>"; $old = ''; $grps = array(); while($data = mysql_fetch_array($query)) { $out .= "<tr><td bgcolor=\"".$color."\">"; if ( $data['grp'] != $old ) { $color = ( $x++ % 2 ? "#DADADA" : "#E6E6E6"); $out .= "<a name='$data[grp]'></a>$data[grp]<br>"; $old = $data['grp']; $grps[] = $data['grp']; } $out .= "<a href='$data[www]' target='_blank' class=''>$data[navn]</a><br>$data[tekst]</td></tr>"; } $out .= "</table><br>"; $out .= "</td></tr>"; $out .= "</table>"; $tmp = ''; foreach ( $grps as $grp ) { $tmp .= '<a href="#' . $grp . '">' . $grp . '</a><br>'; } $tmp .= '<br>'; echo $tmp . $out; mysql_close(); ?> ?
17. oktober 2005 - 15:44
#10
der er noget galt med begge to: de har ikke farve ved første grp A og når der er flere links i samme grp starter den med en farve på grp-bogstav + første link, skifter så farve på de andre og fortsætter med samme farve på næste grp-bogstav så noget er galt?
17. oktober 2005 - 15:48
#11
Prøv lige med: <?php mysql_connect("localhost","",""); mysql_select_db("_db"); $x = 0; $query = mysql_query("SELECT * FROM `links` ORDER BY grp"); $data = mysql_fetch_array($query); $out .= "<table border=0 cellpadding=0 cellspacing=0>"; $out .= "<tr><td>"; $out .= "<table border='0' cellpadding='3' cellspacing='0'>"; $old = ''; $grps = array(); $color = ( $x++ % 2 ? "#DADADA" : "#E6E6E6"); while($data = mysql_fetch_array($query)) { $out .= "<tr><td bgcolor=\"".$color."\">"; if ( $data['grp'] != $old ) { $color = ( $x++ % 2 ? "#DADADA" : "#E6E6E6"); $out .= "<a name='$data[grp]'></a>$data[grp]<br>"; $old = $data['grp']; $grps[] = $data['grp']; } $out .= "<a href='$data[www]' target='_blank'>$data[navn]</a><br>$data[tekst]</td></tr>"; } $out .= "</table><br>"; $out .= "</td></tr>"; $out .= "</table>"; $tmp = ''; foreach ( $grps as $grp ) { $tmp .= '<a href="#' . $grp . '">' . $grp . '</a><br>'; } $tmp .= '<br>'; echo $tmp . $out; mysql_close(); ?>
17. oktober 2005 - 15:53
#12
nu er der farve på første grp men der er stadig problem når der er mere end et link i grp så sker følgende første link ok men skifter så farve på resten af link i denne grp + farven fortsætter på næste grp
17. oktober 2005 - 15:55
#13
+ den starter med ca 5 cm blank inden tabellen med links fremkommer !!!
17. oktober 2005 - 15:57
#14
hehhe ok, prøv lige med: <?php mysql_connect("localhost","",""); mysql_select_db("_db"); $x = 0; $query = mysql_query("SELECT * FROM `links` ORDER BY grp"); $data = mysql_fetch_array($query); $out .= "<table border=0 cellpadding=0 cellspacing=0>"; $out .= "<tr><td>"; $out .= "<table border='0' cellpadding='3' cellspacing='0'>"; $old = ''; $grps = array(); $color = ( $x++ % 2 ? "#DADADA" : "#E6E6E6"); while($data = mysql_fetch_array($query)) { if ( $data['grp'] != $old ) { $color = ( $x++ % 2 ? "#DADADA" : "#E6E6E6"); $out .= "<tr><td bgcolor=\"".$color."\">"; $out .= "<a name='$data[grp]'></a>$data[grp]<br>"; $old = $data['grp']; $grps[] = $data['grp']; } else { $out .= "<tr><td bgcolor=\"".$color."\">"; } $out .= "<a href='$data[www]' target='_blank' class=''>$data[navn]</a><br>$data[tekst]</td></tr>"; } $out .= "</table><br>"; $out .= "</td></tr>"; $out .= "</table>"; $tmp = ''; foreach ( $grps as $grp ) { $tmp .= '<a href="#' . $grp . '">' . $grp . '</a><br>'; } $tmp .= '<br>'; echo $tmp . $out; mysql_close(); ?>
17. oktober 2005 - 16:01
#15
nu er farverne ok meeeen der er stadig 5 cm øverst før tabel med links fremkommer :-)
17. oktober 2005 - 16:02
#16
Hvordan ser HTML'en ud der bliver genereret?
17. oktober 2005 - 16:07
#17
ok det er alle bogstvslinkene der mangler en class, men de står efter hinanden hvordan får jeg dem til at stå vandret og ikek lodret efter hinanden og hvis bogstav skal være bold hvor gør jeg det?
17. oktober 2005 - 16:08
#18
bogstaver står nu vandret
17. oktober 2005 - 16:10
#19
skal have en class ind i denne $tmp .= '<a href="#' . $grp . '">' . $grp . '</a>'; :-)
17. oktober 2005 - 16:20
#20
html begynder med: <a href="#A">A</a> <a href="#D">D</a> <a href="#H">H</a> osv. udskriver tabel men skriver <a name='A'></a>A forker som du kan se samt min kodechecker giver maaer af fejl for ' i stedet for " - men det betyder nok ikek noget jo
17. oktober 2005 - 16:35
#21
Det skal den såmænd gøre... Virker det ikke da? Du smider bare en class i a href: $tmp .= '<a class="enklasse" href="#' . $grp . '">' . $grp . '</a><br>';
17. oktober 2005 - 16:43
#22
jo det virker bare ski''' godt jeg finpudser lidt men har svært ved at få feltet øverst med bogstavslinkene i et farvet felt, farven skal ikke være som de to andre farver har fået den bold osv :-)
17. oktober 2005 - 16:44
#23
echo '<div class="en-andan-klasse">' . $tmp . '</div>' . $out; :)
17. oktober 2005 - 16:46
#24
sig mig denne if ( $data['grp'] != $old ) { $color = ( $x++ % 2 ? "#DADADA" : "#E6E6E6"); $out .= "<tr><td bgcolor=\"".$color."\">"; $out .= "<a name='$data[grp]'></a><b>$data[grp]</b><br><br>"; $old = $data['grp']; $grps[] = $data['grp']; } er det linien $out .= "<tr><td bgcolor=\"".$color."\">"; som skifter farven - for den går igen under else { $out .= "<tr><td bgcolor=\"".$color."\">"; } altså $color :-)
17. oktober 2005 - 16:48
#25
Ja, de er ens ;P Den ene bruges hver gang der skiftes gruppe, den anden ved alt andet ;)
17. oktober 2005 - 16:48
#26
det må vel være denne som jeg skal have sat baggrundsfarve på ik' foreach ( $grps as $grp ) { $tmp .= ' <a href="#' . $grp . '" class="h">' . $grp . '</a> '; } $tmp .= '<br><br>'; echo $tmp . $out; ?? :-)
17. oktober 2005 - 16:49
#27
Se mit svar fra 17/10-2005 16:44:20 - Så kan du bare lave en ny klasse der med en baggrundsfarve :)
17. oktober 2005 - 17:08
#28
Hej coderdk, undskyld den der kl 16:44 så jeg inte *GG* Nu virker det lige som jeg havde tænkt mig - det er bare kanon... Takker igen for din hjælp og sender points til dig. God aften og sikkert på gensyn en anden dag :-)
17. oktober 2005 - 17:08
#29
:) Tak for pts :)
Vi tilbyder markedets bedste kurser inden for webudvikling