Avatar billede janorakel Nybegynder
12. oktober 2003 - 11:20 Der er 7 kommentarer og
1 løsning

Forfatterindeks med indekserende bogstaver?

Jeg har dette script, som smider alle forfatterne i tabellen ind i dette indeks i alfabetisk orden.
Jeg kunne godt tænke mig at scriptet også smed et indekserende bogstav ind før hvert nyt bogstav som her:
http://gallica.bnf.fr/classique/au_general.htm

Og mit script ser sådan ud:
<?php require("tjeklogin.php"); ?>
<html>
<head>
<title>Forfatter oversigt</title>
<link rel="stylesheet" href="css/greenstyle1.css" type="text/css">
</head>
<body>
<div id="Layer1" style="position:absolute; left:646px; top:13px; width:25px; height:20px; z-index:1"><a href="#" onClick="Print();"><img src="/img/print.gif" width="16" height="15" border="0"></a></div>
<div id="Layer2" style="position:absolute; left:678px; top:12px; width:42px; height:28px; z-index:2"><a href="sog.php"><img src="/img/kikkert.gif" border="0"></a></div>
<div id="Layer3" style="position:absolute; left:618px; top:14px; width:15px; height:15px; z-index:3"><a href='java script:history.go(-1)'><img src='/img/back1.gif' border="0"></a></div>
<center>
<table>
<?php
echo "<font face='Verdana' size='1'>Denne side er genereret kl. ";
echo date("H:i:s");
echo "<tr><td><strong><em>Nom</em></strong></td><td><strong><em>Prènom</em></strong></td><td><strong><em>Le nombre total</em></strong></td></tr>";
echo "<tr><hr colspan=3><td>";

$db = mysql_connect("localhost", "xxx", "xxx") or die ("Desværre ingen forbindelse til databasen"); mysql_select_db("book", $db) or die ("Kunne ikke vælge databasetabel");

$q = mysql_query("SELECT forfatternavn_efternavn, forfatternavn_fornavn, COUNT(*) AS antal FROM second GROUP BY forfatternavn_efternavn, forfatternavn_fornavn ORDER BY forfatternavn_efternavn ASC");
while($row=mysql_fetch_array($q))
{
echo "<tr><td><a href=\"info.php?efternavn=" .$row['forfatternavn_efternavn']. "&fornavn=".$row['forfatternavn_fornavn']. "\">"
.$row['forfatternavn_efternavn']. "</a></td><td><a href=\"info.php?efternavn=" .$row['forfatternavn_efternavn'].
"&fornavn=".$row['forfatternavn_fornavn']. "\">" .$row['forfatternavn_fornavn']. "</a></td><td align='center'>" .$row['antal']. "</align></td></tr>";
}
?>
</table>
</center>
</body>
</html>

Er det mon noget som kan lade sig gøre?
Avatar billede schaefner Juniormester
12. oktober 2003 - 11:21 #1
Altså de store bogstaver før hver liste?
Avatar billede janorakel Nybegynder
12. oktober 2003 - 11:23 #2
Ja, lige præsis. Et stort B før de forfattere hvis efternavn starter med B
Avatar billede schaefner Juniormester
12. oktober 2003 - 11:49 #3
Utestet:

<?php require("tjeklogin.php"); ?>
<html>
<head>
<title>Forfatter oversigt</title>
<link rel="stylesheet" href="css/greenstyle1.css" type="text/css">
</head>
<body>

<div id="Layer1" style="position:absolute; left:646px; top:13px; width:25px; height:20px; z-index:1"><a href="#" onClick="Print();"><img src="/img/print.gif" width="16" height="15" border="0"></a></div>
<div id="Layer2" style="position:absolute; left:678px; top:12px; width:42px; height:28px; z-index:2"><a href="sog.php"><img src="/img/kikkert.gif" border="0"></a></div>
<div id="Layer3" style="position:absolute; left:618px; top:14px; width:15px; height:15px; z-index:3"><a href='java script:history.go(-1)'><img src='/img/back1.gif' border="0"></a></div>

<center>
<table>
<?php
echo '<font face="verdana" size="1">Denne side er genereret kl. ¨'.date("H:i:s");
echo '<tr><td><b><em>Nom</em></b></td><td><b><em>Prènom</em></b></td><td><b><em>Le nombre total</em></b></td></tr>';
echo '<tr><td><hr></td></tr>';

$db = mysql_connect('localhost','xxx','xxx') or die ('Desværre ingen forbindelse til databasen');
mysql_select_db('book',$db) or die ('Kunne ikke vælge database');

$q = mysql_query("SELECT forfatternavn_efternavn, forfatternavn_fornavn, COUNT(*) AS antal FROM second GROUP BY forfatternavn_efternavn, forfatternavn_fornavn ORDER BY forfatternavn_efternavn ASC");
while ($row=mysql_fetch_array($q)){
    $letter = substr($row['forfatternavn_efternavn'],0,1);
    if ($remember != $letter) {
        echo '<tr><td><span style="color: red; font: bold 14px verdana">'.$letter.'</span></td></tr>';
    }
    echo '<tr><td><a href="info.php?efternavn='.$row['forfatternavn_efternavn'].'&fornavn='.$row['forfatternavn_fornavn'].'">'.$row['forfatternavn_efternavn']. '</a></td><td><a href="info.php?efternavn='.$row['forfatternavn_efternavn'].'&fornavn='.$row['forfatternavn_fornavn'].'">'.$row['forfatternavn_fornavn'].'</a></td><td align="center">'.$row['antal'].'</td></tr>';
    $remember = $letter;
}
?>
</table>
</center>

</body>
</html>

Din html-kode burde også lige tjekkes igennem en gang, men det har jeg dog ikke gjort.
Avatar billede janorakel Nybegynder
12. oktober 2003 - 12:05 #4
Det virker!! Men du har ændret i min echo, og jeg skal lige have html.koden rettet til.
Det virker fint!
Det der er tilføjet er:
    $letter = substr($row['forfatternavn_efternavn'],0,1);
    if ($remember != $letter) {
        echo '<tr><td><span style="color: red; font: bold 14px verdana">'.$letter.'</span></td></tr>';

og
$remember = $letter;

Ikke? Hvorfor ændring i echoen?
Avatar billede schaefner Juniormester
12. oktober 2003 - 12:10 #5
ændrignen i din egen echo er kun for at gøre den kortere.
Avatar billede schaefner Juniormester
12. oktober 2003 - 12:11 #6
og det hedder ændring :)
Avatar billede janorakel Nybegynder
12. oktober 2003 - 12:12 #7
Super! Mange tak..
Avatar billede schaefner Juniormester
12. oktober 2003 - 12:14 #8
Var så lidt :)
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