Avatar billede blach Nybegynder
24. august 2005 - 21:06 Der er 15 kommentarer og
2 løsninger

Vise kategori 1 gang pr. links

Jeg har en bunke links, som er sorteret efter cat og sub_cat i en mySQL DB. Følgende kode virker fint, bortset fra, at hvis der er flere links indenfor hver sub_cat, så lister den cub_cat (category) overskriften flere gange...

Håber I kan hjælpe, så den kun hiver den overskrift ud 1 gang for hver sub_cat (altså udtrækket ved $query2

--code--

$output = "";
$query = mysql_query("SELECT * FROM link ORDER BY cat ASC, sub_cat") or die(mysql_error());
$oldCat = "";

while ($row = mysql_fetch_assoc($query))
{
$link_cat = $row[cat];
$link = $row[sub_cat];

  $query2 = mysql_query("SELECT name FROM link_subcat WHERE link_cat = '$link_cat' AND link = '$link'") or die(mysql_error());
  while ($row2 = mysql_fetch_assoc($query2))
  {
  $sub_category_name = $row2[name];

  $output .= '</tr></table><br><table border="1" cellpadding="4" cellspacing="0" width="788" bordercolor="#FFFFFF"><tr><td><div class=menu2><b> '.$sub_category_name.' </b></div></td></tr><tr><td>
<table border="0" cellpadding="0" cellspacing="0" width="788"><tr>
<td width="288"><div class=menu><b>Navn</b></div></td>
<td width="275"><div class=menu><b>Adresse</b></div></td>
<td width="160"><div class=menu><b>Tlf.</b></div></td>
<td width="65"><div class=menu><b>Afstand</b></div></td>
</tr></table>
</td>
      ';
    }


$output .= '</tr><tr bgcolor=#'.($i++ % 2 == 0 ? "D1E0F7" : "EDF2FA").' valign=top>
<td>
<table border="0" cellpadding="0" cellspacing="0" width="788"><tr>
<td width="288"><div class=menu><a href="'. $row[website] .'" target="_blanc">'. $row[name] .'</div></td>
<td width="275"><div class=menu>'. $row[adress] .'</div></td>
<td width="160" align="right"><div class=menu>'. $row[phone] .'</div></td>
<td width="65" align="right"><div class=menu>'. $row[distance] .' km.</div></td>
</tr></table>
</td>';
}

echo $output;

--code--
Avatar billede jaw Nybegynder
24. august 2005 - 21:09 #1
Prøv:
  $query2 = mysql_query("SELECT name FROM link_subcat WHERE link_cat = '$link_cat' AND link = '$link' GROUP BY name") or die(mysql_error());
Avatar billede jaw Nybegynder
24. august 2005 - 21:12 #2
Eller er det fordi, at den skriver:

sub_cat
link1
sub_cat
link2

og du vil kun have:
sub_cat
link1
link2

?
Avatar billede blach Nybegynder
24. august 2005 - 21:13 #3
Ja nemlig :)
Så det GROUP BY virker ikke :-(

Men kan man ikke flytte rundt på det eller noget?
Avatar billede jaw Nybegynder
24. august 2005 - 21:18 #4
Jeg ved ikke helt om jeg opnår hvad jeg tror du mener, men prøv:

  $query2 = mysql_query("SELECT name FROM link_subcat WHERE link_cat = '$link_cat' AND link = '$link'") or die(mysql_error());
    $sub_cat_temp = "";
  while ($row2 = mysql_fetch_assoc($query2))
  {
  $sub_category_name = $row2[name];

if($sub_cat_temp != $sub_cat_name) {
  $output .= '</tr></table><br><table border="1" cellpadding="4" cellspacing="0" width="788" bordercolor="#FFFFFF"><tr><td><div class=menu2><b> '.$sub_category_name.' </b></div></td></tr><tr><td>
<table border="0" cellpadding="0" cellspacing="0" width="788"><tr>
<td width="288"><div class=menu><b>Navn</b></div></td>
<td width="275"><div class=menu><b>Adresse</b></div></td>
<td width="160"><div class=menu><b>Tlf.</b></div></td>
<td width="65"><div class=menu><b>Afstand</b></div></td>
</tr></table>
</td>
      ';
      }
      $sub_cat_temp = $sub_category_name;
    }

:)
Avatar billede blach Nybegynder
24. august 2005 - 21:29 #5
Hmm, virker ikke helt..


Den viser dette:

link1

sub_cat2
link1

sub_cat3
link1

sub_cat3
link2

sub_cat3
link3
Avatar billede blach Nybegynder
24. august 2005 - 21:35 #6
Sådan her :)

          $newCat = $row["cat"];
          if ($newCat != $oldCat)
          {
          $query2 = mysql_query("SELECT name FROM link_subcat WHERE link_cat = '$link_cat' AND link = '$link'") or die(mysql_error());
          while ($row2 = mysql_fetch_assoc($query2))
            {
            $sub_category_name = $row2[name];

            $output .= '</tr></table><br><table border="1" cellpadding="4" cellspacing="0" width="788" bordercolor="#FFFFFF"><tr><td><div class=menu2><b> '.$sub_category_name.' </b></div></td></tr><tr><td>
              <table border="0" cellpadding="0" cellspacing="0" width="788"><tr>
              <td width="288"><div class=menu><b>Navn</b></div></td>
              <td width="275"><div class=menu><b>Adresse</b></div></td>
              <td width="160"><div class=menu><b>Tlf.</b></div></td>
              <td width="65"><div class=menu><b>Afstand</b></div></td>
              </tr></table>
              </td>
            ';
            }
            $oldCat = $newCat;
          }
Avatar billede jaw Nybegynder
24. august 2005 - 21:44 #7
Ah okey, den skulle sådan set måske bare rykkes lidt? :) Det kan være lidt svært at se, når man ikke selv har det :) Men ideen var der da...
Avatar billede blach Nybegynder
24. august 2005 - 21:52 #8
Hmm, det virker heller ikke.. nu bliver alle dem under cat = A smidt ind under den samme..
Avatar billede blach Nybegynder
24. august 2005 - 21:53 #9
Også lidt svært at forstå.. Det skal faktisk se sådan her ud:

*cat
-sub_cat1
  link1
-sub_cat2
  link1
  link2

*cat2
-sub_cat1
  link1
  link2
  link3


f.eks.
Avatar billede blach Nybegynder
24. august 2005 - 21:55 #10
Kan du redigere den anden kode til så det passer? kan ikke være så svært igen ;)

Den sorterer således:

* cat+subcat1 = A1 = overskrift for A1
link1
osv

* cat2+subcat2 = A2 = overskrift for A2
link1
link2
osv
Avatar billede blach Nybegynder
24. august 2005 - 21:57 #11
Lad mig lige omformulere:

Den SKAL sortere således:

* cat1+sub_cat1 = A1 = overskrift for A1
link1
osv

* cat2+sub_cat2 = A2 = overskrift for A2
link1
link2
osv


Lige nu sorterer den således: (altså forkert)
* cat1+sub_cat1 = A1 = overskrift for A1
link1
link1 (burde ligge under A2)
link2 (burde ligge under A2)
Avatar billede blach Nybegynder
24. august 2005 - 22:05 #12
Skulle ændres:
$newCat = $row["sub_cat"];
Avatar billede jaw Nybegynder
24. august 2005 - 22:24 #13
Det vil sige at det funker for dig nu?
Avatar billede blach Nybegynder
24. august 2005 - 22:45 #14
Yup... :)

vil du have lidt point?
Avatar billede jaw Nybegynder
24. august 2005 - 22:47 #15
Det er jo op til dig :) Om du mener jeg hjalp eller ej...

Men her har du da et svar, så kan du jo overveje hvad du vil gøre med det :)
Avatar billede blach Nybegynder
24. august 2005 - 22:47 #16
Du hjalp da lidt ;-)
Avatar billede jaw Nybegynder
24. august 2005 - 22:49 #17
Helt fair, tak for 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