Avatar billede komodoen Nybegynder
08. oktober 2003 - 12:34 Der er 16 kommentarer og
1 løsning

Sortering i tabel

Beklager hvis spørgsmålet skulle have været stillet i MySQL - men siden mit script er php - stiller jeg spørgsmålet her!

Jeg har lavet en artikkel-database, hvor jeg oplister indholdet af mine kompendier fra uni. Det er data såsom forfatter, titel, fag, genre osv.
Som det er nu, bliver hele tabellen sorteret efter forfatter, hvilket er lidt uoverskueligt. Jeg kunne derfor godt tænke mig, hvis tabellen kunne sorteres efter hver kategori. Således at hver kategori (forfatter, titel, fag osv.)er et link, der er bestemmende for hvorledes tabellen bliver sorteret!

Yderligere kunne jeg godt tænke mig, at hver postering i tabellen har et link, der viser de noter, som findes til den pågældende artikkel (noterne findes allerede i databasen, men bliver ikke vist i tabellen).
Se evt. min artkkel-database: http://www.komodoen.dk/artikler/

Mvh Kasper
Avatar billede komodoen Nybegynder
08. oktober 2003 - 12:36 #1
Her er mit script:

<?PHP
$result = mysql_query ("SELECT * FROM artikler ORDER BY forfatter ASC",$dbh);
border=1>\n";
$id_antal = count($result);
    echo "<font size ='1'>";
    echo "<table width=\"800\" border-color = \"#669999\" >\n";
    echo "<tr><th width=\"175\" bgcolor = \"#669999\">Forfatter</td>
              <th width=\"175\" bgcolor = \"#669999\">Titel</td>
              <th width=\"125\" bgcolor = \"#669999\">Fag</td>
              <th width=\"125\" bgcolor = \"#669999\">Genre</td>
              <th width=\"150\" bgcolor = \"#669999\">Findes i</td>
              <th width=\"50\" bgcolor = \"#669999\">Noter</td>
        <tr>";
       
echo "<table width=\"800\">\n";
while ($blogentries = mysql_fetch_row ($result)){
    echo "<tr><th width=\"175\"></td>
              <th width=\"175\"></td>
              <th width=\"125\"></td>
              <th width=\"125\"></td>
              <th width=\"150\"></td>
              <th width=\"50\"></td>
        <tr>";
   
    for ($i=0; $i<$id_antal; $i++)
    {   
    echo "<tr><td align left>$blogentries[1]</td>
                <td align left>$blogentries[2]</td>
              <td align left>$blogentries[3]</td>
              <td align left>$blogentries[4]</td>
              <td align left>$blogentries[5]</td>
              <td align left>Noter!</td>
        </tr>";
    }
   
}
echo "</table></font>";
?>
Avatar billede swaxi Nybegynder
08. oktober 2003 - 12:47 #2
prøv at erstatte starten af dit script med dette :

<?PHP
if (isset($_GET['order'])) $order = $_GET['order'];
else $order = 'forfatter';
$result = mysql_query ("SELECT * FROM artikler ORDER BY ".addslashes($order)." ASC",$dbh);
border=1>\n";
$id_antal = count($result);
    echo "<font size ='1'>";
    echo "<table width=\"800\" border-color = \"#669999\" >\n";
    echo "<tr><th width=\"175\" bgcolor = \"#669999\"><a href="?order=forfatter">Forfatter</a></td>
              <th width=\"175\" bgcolor = \"#669999\"><a href="?order=titel">Titel</a></td>
              <th width=\"125\" bgcolor = \"#669999\"><a href="?order=fag">Fag</a></td>
              <th width=\"125\" bgcolor = \"#669999\"><a href="?order=genre">Genre</a></td>
              <th width=\"150\" bgcolor = \"#669999\"><a href="?order=findes">Findes i</a></td>
              <th width=\"50\" bgcolor = \"#669999\"><a href="?order=noter">Noter</a></td>
        <tr>";
(...)

(med forbehold for at kolonnernes navne i tabellen er korrekte)
Avatar billede komodoen Nybegynder
08. oktober 2003 - 13:00 #3
Først lavede den fejl i linien:
border=1>\n";
Hvis jeg fjernede linien, kom der fejl i linien:
echo "<tr><th width=\"175\" bgcolor = \"#669999\"><a href="?order=forfatter">Forfatter</a></td>
Er det en tastefejl, eller burde det ikke være:
....<a href="$order=forfatter">... i stedet?
Avatar billede komodoen Nybegynder
08. oktober 2003 - 13:21 #4
hmm - den er ligeglad med om det er ....<a href="$order=forfatter">... eller ....<a href="?order=forfatter">...
Ingen af dem tilfredsstiller computeren ;o)
Avatar billede swaxi Nybegynder
08. oktober 2003 - 14:35 #5
nåja ... undskyld - du skal self. escape'e quotes'ene.
eg. :
echo "<tr><th width=\"175\" bgcolor = \"#669999\"><a href=\"?order=forfatter\">Forfatter</a></td>";

(og så fremdeles)
Avatar billede komodoen Nybegynder
08. oktober 2003 - 14:47 #6
Perfekt :o)

- Ved du hvordan jeg laver "Noter" om til et link, som viser en ny side - hvor noterne vises (og hvor jeg evt. kan uploade dokumenter)?
Avatar billede swaxi Nybegynder
08. oktober 2003 - 14:59 #7
det kommer lidt an på hvordan din tabel ser ud. har du noterne liggende som seperate dokumenter (filer), eller har du dem liggende direkte i databasen ?
Avatar billede komodoen Nybegynder
08. oktober 2003 - 15:13 #8
Noterne ligger som en string, ligesom f.eks. en titel. Noterne fylder bare for meget, således tabellen ville se rodet ud, hvis noterne blev vist. Men det er min plan, at folk skal kunne tilføje noter, således det ikke kun er mig der skal skrive et referat at artiklerne.
Avatar billede swaxi Nybegynder
08. oktober 2003 - 15:26 #9
så skal du gøre noget a la :

(...)
  for ($i=0; $i<$id_antal; $i++)
    {   
    echo "<tr><td align left>$blogentries[1]</td>
                <td align left>$blogentries[2]</td>
              <td align left>$blogentries[3]</td>
              <td align left>$blogentries[4]</td>
              <td align left>$blogentries[5]</td>
              <td align left><a href=\"?shownote=".rawurlencode($blogentries[2])."\">Noter!</a></td>
        </tr>";
    }
(...)

og indsæt dette i toppen af dit script (helt i toppen - før noget andet)
if (isset($_GET['shownote'])) {
    $result = mysql_query ("SELECT noter FROM artikler WHERE title='".addslashes($_GET['shownote'])."'",$dbh);
    $row = mysql_fetch_row($result) or die(mysql_error());
    echo $row['noter'];
}
Avatar billede komodoen Nybegynder
08. oktober 2003 - 16:11 #10
Det er tæt på at virke, men der kommer desvære en fejlmeddelse, når man trykker på "Noter":

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource
Avatar billede swaxi Nybegynder
08. oktober 2003 - 16:21 #11
prøv :

$result = mysql_query ("SELECT noter FROM artikler WHERE title='".addslashes($_GET['shownote'])."'",$dbh) or die(mysql_error());
Avatar billede komodoen Nybegynder
08. oktober 2003 - 17:34 #12
Lidt bedre, men fungerer stadig ikke helt!!! Den er ikke glad for: ...WHERE title=.... - kommer med denne fejlmeddelelse:
Unknown column 'title' in 'where clause'

Jeg har prøvet med "titel" i stedet, samt "noter", men det eneste der sker, at den loop'er når man trykker på linket! (dog uden fejlmeddelelser).
Avatar billede swaxi Nybegynder
08. oktober 2003 - 18:12 #13
der skal stå titel - ikke title.
og prøv at erstatte denne linie :
    echo $row['noter'];
med :
    die($row['noter']);
Avatar billede komodoen Nybegynder
08. oktober 2003 - 18:26 #14
Virker stadig ikke helt. Der kommer ingen fejl, men noterne bliver ikke vist!

if (isset($_GET['shownote'])) {
    $result = mysql_query ("SELECT noter FROM artikler WHERE titel='".addslashes($_GET['shownote'])."'",$dbh) or die(mysql_error());
    $row = mysql_fetch_row($result) or die(mysql_error());
    die($row['noter']);
}

Du må sige til, hvis du ikke orker længere (du skal nok få dine point)
Avatar billede swaxi Nybegynder
08. oktober 2003 - 18:35 #15
prøv at erstatte mysql_fetch_row med mysql_fetch_array
Avatar billede komodoen Nybegynder
08. oktober 2003 - 19:21 #16
Det er det samme!!!
Avatar billede swaxi Nybegynder
08. oktober 2003 - 19:25 #17
humm ... indeholder feltet "noter" overhovedet noget ?
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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



IT-JOB

Udlændinge- og Integrationsministeriet

Forretningsudvikler med fokus på digitalisering og AI

Magasin

IT-projektleder

Netcompany A/S

Network Engineer

MAN Energy Solutions

Cloud FinOps Practitioner

Udviklings- og Forenklingsstyrelsen

Erfarne IT-udviklere til fremtidens skattevæsen