Avatar billede zac Nybegynder
19. oktober 2004 - 23:44 Der er 22 kommentarer og
1 løsning

Få kun een overskrift til flere underpunkter/ adskilt dem?

Jeg vil lave min egen tabel over bogmærker af forskellig slags, kalder dem portaler her...

Men nedenstående giver overskriften portalart for hver url/ portalnavn, og jeg vil kun have et portalnavn een gang som overskrift og derunder de pågældende portalnavne.

$result = mysql_query(" SELECT a.portalart, a.portalart_nr, p.portaladresse_art, p.portaladresse_navn, p. portaladresse_url
FROM portalart AS a, portaladresser AS p
WHERE p.portaladresse_art = a.portalart_nr
ORDER by a.portalart_nr ASC ");

while ( $row = mysql_fetch_array($result) )
{   
            echo "<tr>";           
            echo "<td align=\"center\">";
            echo "<b>Portalart: " . $row['0'] . "</b>";
            echo "</td>";           
            echo "</tr>";
                       
            echo "<tr>";
            echo "<td align=\"left\">";
            echo "URL og navn: <a href=\"" . $row['4'] . "\">" . $row['3'] . "</a>";
            echo "</td>";           
            echo "</tr>";     
}
Avatar billede michael_stim Ekspert
19. oktober 2004 - 23:51 #1
echo "<tr>";           
echo "<td align=\"center\">";
echo "<b>Portalart:</td></tr>";
echo "<tr>";
echo "<td align=\"left\">";
echo "URL og navn: </td></tr>";
while ( $row = mysql_fetch_array($result) )
{   
            echo "<tr>";           
            echo "<td align=\"center\">";
            echo $row['0'];
            echo "</td>";           
            echo "</tr>";
                       
            echo "<tr>";
            echo "<td align=\"left\">";
            echo "<a href=\"" . $row['4'] . "\">" . $row['3'] . "</a>";
            echo "</td>";           
            echo "</tr>";     
}
Avatar billede michael_stim Ekspert
19. oktober 2004 - 23:55 #2
echo "<tr>";           
echo "<td align=\"center\">";
echo "<b>Portalart:</td>";
echo "<td align=\"left\">";
echo "URL og navn: </td></tr>";
while ( $row = mysql_fetch_array($result) )
{   
            echo "<tr>";           
            echo "<td align=\"center\">";
            echo $row['0'];
            echo "</td>";           
            echo "<td align=\"left\">";
            echo "<a href=\"" . $row['4'] . "\">" . $row['3'] . "</a>";
            echo "</td>";           
            echo "</tr>";     
}
Sådan her skal det nok snarere väre ;o)
Avatar billede zac Nybegynder
19. oktober 2004 - 23:59 #3
Beklager, den giver samme resultat!:
portalart1
  portalA
portalart1
  portalB
portalart2
  portalC
portalart3
  portalD
portalart3
  portalE

Det skal være:
portalart1
  portalA
  portalB
portalart2
  portalC
portalart3
  portalD
  portalE
Avatar billede zac Nybegynder
20. oktober 2004 - 00:00 #4
min beklager...kom på tværs af din ændring, prøver den...
Avatar billede zac Nybegynder
20. oktober 2004 - 00:03 #5
men den giver også overskrift til hvert navn, ikke een overskrift og dertil navnene, og så næsten overskrift og dertil navnene...
Avatar billede michael_stim Ekspert
20. oktober 2004 - 00:08 #6
OK, nu er jeg med, så skal vi have fat i noget group by. 2 min, så skal jeg se om jeg kan regne den ud.
Avatar billede zac Nybegynder
20. oktober 2004 - 00:20 #7
eller snarere noget med ... while eller for $row['0'] er knyttet til $i for hver $row['0']...
Avatar billede michael_stim Ekspert
20. oktober 2004 - 00:46 #8
Ked af det, men mine små grå kan ikke fölge med. Men lover at kikke på det imorgen hvis du ikke har fået hjälp.
Godnat.
//Michael
Avatar billede zac Nybegynder
20. oktober 2004 - 00:48 #9
fino, ja nok på tide, god nat!
Avatar billede michael_stim Ekspert
20. oktober 2004 - 00:51 #10
<?
$result = mysql_query("SELECT a.portalart AS portalA, a.portalart_nr AS portalNr, p.portaladresse_art AS adresse, p.portaladresse_navn AS adresseNavn, p. portaladresse_url AS url
FROM portalart a, portaladresser p
WHERE p.portaladresse_art = a.portalart_nr
GROUP BY a.portalart");

while ( $row = mysql_fetch_array($result) )
{
$portalA=$row['portalA'];
$portalNr=$row['portalNr'];
$adresseNavn=$row['adresseNavn'];
$url=$row['url'];
?>
    <tr>           
    <td align="center"><b><? echo $portalA; ?></b></td>           
    </tr>
    <tr>
    <td align="left"><? echo $portalNr; ?></td>
    </tr>
    <tr>
    <td align="left"><a href="<? echo $url; ?>"><? echo $adresseNavn; ?></a></td>           
    </tr>   
}
?>
Komfrem til dette, men tror du får samme resultat.
Avatar billede zac Nybegynder
20. oktober 2004 - 01:14 #11
det tro jeg også :)
Avatar billede zac Nybegynder
20. oktober 2004 - 01:21 #12
mit problem her minder ret meget ? om noget, jeg tidligere har spurgt om, og fået løst: http://www.eksperten.dk/spm/533274
Avatar billede Slettet bruger
20. oktober 2004 - 01:47 #13
Hvad med:

$gammelportal='';
while ( $row = mysql_fetch_array($result) )

    if($gammelportal!=$row[0]){
            $gammelportal=$row[0];
            echo "<tr>";         
            echo "<td align=\"center\">";
            echo "<b>Portalart: " . $row['0'] . "</b>";
            echo "</td>";         
            echo "</tr>";
    }                     
            echo "<tr>";
            echo "<td align=\"left\">";
            echo "URL og navn: <a href=\"" . $row['4'] . "\">" . $row['3'] . "</a>";
            echo "</td>";         
            echo "</tr>";   
}
Avatar billede zac Nybegynder
20. oktober 2004 - 12:12 #14
->Sandbox: Den tager kun een URL og navn med (den første)...

->alle :) det kan da ikke passe, at det skal være så vanskeligt med
portalart1
  portalA
  portalB
portalart2
  portalC
portalart3
  portalD
  portalE
Avatar billede zac Nybegynder
20. oktober 2004 - 12:13 #15
->Sandbox: Altså, så det er
portalart1
  portalA
portalart2
  portalC
portalart3
  portalD
Avatar billede Slettet bruger
20. oktober 2004 - 17:55 #16
Du mener, at mit forslag udskriver

portalart1
  portalA
portalart2
  portalC
portalart3
  portalD

i steder for det rigtige, som er

portalart1
  portalA
  portalB
portalart2
  portalC
portalart3
  portalD
  portalE

Det burde den faktisk ikke. Hvilken query bruger du til? (Du skal bruge den fra dit oprindelige indlæg - ikke den med GROUP BY.)
Avatar billede zac Nybegynder
20. oktober 2004 - 22:30 #17
->sandbox: ja, men nu kan jeg ikke engang få det oprindelige til at virke, har heri skiftet mysql_fetch_array til mysql_fetch_row (giver samme fejl med _array som _row, men det må være _row, som er det rigtige):

$result = mysql_query(" SELECT
a.portalart, a.portalart_nr, p.portaladresse_art, p.portaladresse_navn, p.portaladresse_url
FROM portalart AS a, portaladresser AS p
WHERE p.portaladresse_art = a.portalart_nr
ORDER by a.portalart_nr ASC ");

while ( $row = mysql_fetch_row($result) )
{   
            echo "<tr>";           
            echo "<td align=\"center\">";
            echo "<b>Portalart: " . $row['0'] . "</b>";
            echo "</td>";           
            echo "</tr>";
                       
            echo "<tr>";
            echo "<td align=\"left\">";
            echo "URL og navn: <a href=\"" . $row['4'] . "\">" . $row['3'] . "</a>";
            echo "</td>";           
            echo "</tr>";     
}

//tb portalart: id, portalart, portalart_nr
//tb portaladresser: id, portaladresse_art, portaladresse_navn, portaladresse_url

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource - ud for while...
Avatar billede Slettet bruger
20. oktober 2004 - 22:54 #18
Prøv med dette i stedet. Så er det også lettere at se i koden, hvad der bliver udskrevet hvor.

$result = mysql_query(" SELECT
portalart, portaladresse_navn, portaladresse_url
FROM portalart AS a, portaladresser AS p
WHERE p.portaladresse_art = a.portalart_nr
ORDER by a.portalart_nr ASC ") or die(mysql_error());

while ( $row = mysql_fetch_assoc($result) )

            echo "<tr>";         
            echo "<td align=\"center\">";
            echo "<b>Portalart: " . $row['portalart'] . "</b>";
            echo "</td>";         
            echo "</tr>";
                     
            echo "<tr>";
            echo "<td align=\"left\">";
            echo "URL og navn: <a href=\"" . $row['portaladresse_url'] . "\">" . $row['portaladresse_navn'] . "</a>";
            echo "</td>";         
            echo "</tr>";   
}

Derudover har jeg rettet, så den kun henter de data, der rent faktisk er brug for.
Avatar billede zac Nybegynder
20. oktober 2004 - 22:56 #19
det skal vist være $row[0], ikke $row['0'], men giver stadig fejl...
Avatar billede Slettet bruger
20. oktober 2004 - 22:57 #20
Forresten. Mon ikke det skulle have været:

WHERE p.portaladresse_art = a.id
Avatar billede zac Nybegynder
20. oktober 2004 - 23:07 #21
->sandbox: Du er ganske fantastisk, genialt, tak! Det virker, hvad du skrev igår med $gammelportal - i kombination med din sidste kommentar nu.
Det er et fint trick med den tomme var. til at begynde med, selv om jeg ikke heeelt kan forstå, at det kan gøre det.
Point!?
Avatar billede Slettet bruger
20. oktober 2004 - 23:16 #22
Fidusen er den simple at man bare hele tiden ser efter om der ligger noget nyt det felt i rækken fra databasen. Den eneste grund til at jeg sætter variablen til '' først er sådan set, at det ellers ville give en anmærkning, hvis man satte PHP til at være striks med advarsler og fejl - og så er det god skik at initialisere sin variable.
Avatar billede zac Nybegynder
20. oktober 2004 - 23:23 #23
jeg skriver mig den bag øret...og endnu engang tak.
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
Computerworld tilbyder specialiserede kurser i database-management

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