Avatar billede the-exterminator Nybegynder
15. juli 2007 - 16:30 Der er 19 kommentarer og
1 løsning

link fra a-z fra database

jeg er ved at lave en side, hvor man kan se alle de cd'ere jeg har.
har osse fået det meste til at virke nu.
men nu er jeg så stødt på et lille problem, hvis du kigger her : http://fuckmyass.dyndns.biz/sikkersider/dvdtest/ skal jeg have en linje hvor man kan trykke på fx. a så lister alle de album der er med a, det skal lige siges at den henter alle oplysninger fra databasen, hvor databasen hedder dvd tabelen hedder albums og under den skal den sotere det fra name.
jeg vil have link på fra nul - å

håber der er en der kan hjælpe.

hilsen michael
Avatar billede the-exterminator Nybegynder
15. juli 2007 - 16:45 #1
Koden ser sådan her ud :
------------------------
<?php
  include('inc/Settings.inc');
  include('inc/Db.inc');
  include('inc/DrumRoll.inc');
  include('inc/DVD.inc');

  /* Slå databasen op */
  $db = new MysqlDB();
  $db->setupDb($database_setup);

  /* Opret forbindelse til databasen*/
  $db->Connect();

  /* Opret drumroll */
  $drumroll = new DrumRoll();

  /* Hent alle DVD'er */
  $dvds = $drumroll->rolldb(DVD,$db->PerformSQL("select * from dvd order by 1"));

  /* luk forbindelse til databasen*/
  $db->DisConnect();

?>

<?php
require("database.php");
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>DiskCollection By FuckMyAss.dyndns.biz</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="dvd.css" rel="stylesheet" type="text/css">
</head>

<body class="cdlogo">
<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="2">
  <tr>
    <td height="112" align="center">
    <table width="100%" height="100%" border="0" cellpadding="0" cellspacing="2">
    <tr>
      <td width="70%" align="right">
      </td>
      <td height="112" align="left">

    <form name ="searchform" action="search.php" metode="POST" class="content">
  <strong class="sogebox">Enter Keyword:</strong><br />
    <input name="searchtext" type="text" />
    <br />
    <input name="searchtype" type="radio" value = "album" checked/> <strong class="sogebox">Album Name</strong>
    <input name="searchtype" type="radio" value = "song"/> <strong class="sogebox">Track Name</strong>
    <br />
    <br />
    <input name="submit" type="submit" value = "submit"/>

    <br />
    <br />
    <br />
    <br />

    </form>


    </td>
    </tr>
  </table>

    </td>
  </tr>

  <tr>
  </tr>

DET ER HER JEG VIL HAVE LINJEN FRA 0 - Å

  <tr>

    <td align="left" valign="top" id="content">&nbsp;<br />
    <p class="lineshift">All DVD's</p>
    <table cellpadding="0" cellspacing="5" border="0">

<?php

  /* List alle DVD'er*/
  $max_rows = round(count($dvds) / $max_dvds_columns)+1;

  for ($i=0;$i<$max_rows;$i++){
    /* Hent en DVD */
    $dvd = $dvds[$i];
    print "<tr>\n";

    if ($i < count($dvds)) print "<td\n><strong class=\"menulink\"><a href=\"albums.php?dvd=" . $dvd->dvd_id . "\">" . $dvd->name . "</a></strong> </td>\n";
    else  print "    <td\n>&nbsp;</td>\n";

    for ($j=1;$j<$max_dvds_columns;$j++){
      $i= $i + $max_rows;
      $dvd = $dvds[$i];
      if ($i < count($dvds)) print "<td\n><strong class=\"menulink\"><a href=\"albums.php?dvd=" . $dvd->dvd_id . "\">" . $dvd->name . "</a></strong> </td>\n";
      else  print "<td\n>&nbsp;</td>\n";
    }

    $i = ($i - ($max_rows * ($max_dvds_columns-1)));
    print "</tr>\n";

  }

?>

    </td>
  </tr>
</table>

</body>
</html>
Avatar billede jakobdo Ekspert
15. juli 2007 - 17:44 #2
Du kunne lave links ala:

$numre = range(0,9);
$a_z = range(a,z);
$dk_tegn = array('æ','ø','å');

$total = array_merge($numre,$a_z,$dk_tegn);

foreach($total AS $tegn)
{
echo '<a href="vis_album.php?start='.urlencode($tegn).'">'.$tegn.'</a><br />';
}
Avatar billede the-exterminator Nybegynder
15. juli 2007 - 17:49 #3
jakobdo >> kan du være lidt mere specifik ??? kan se du vil have jeg laver en ny side vis_album.php

Men jeg vil have en linje der hedder

a - b - c - d - osv osv osv
Avatar billede jakobdo Ekspert
15. juli 2007 - 18:03 #4
Nej, vis_album.php var bare noget jeg skrev.

<?php
//http://www.eksperten.dk/spm/787620

$numre = range(0,9);
$a_z = range(a,z);
$dk_tegn = array('æ','ø','å');

$total = array_merge($numre,$a_z,$dk_tegn);
$output = array();
foreach($total AS $tegn)
{
    $output[] = '<a href="vis_album.php?start='.urlencode($tegn).'">'.$tegn.'</a>';
}

echo implode('&nbsp;-&nbsp;',$output);

?>

Og så skal du jo have fat i en sql ala:

SELECT * FROM albums WHERE name LIKE '$_GET['start']%' ORDER BY name
Avatar billede the-exterminator Nybegynder
15. juli 2007 - 18:06 #5
jakobdo >> Jeg kan ikke rigtig få den under billedet, og når man trykker på en af linkne, kommer der en blank side, skal lige siges jeg har sat din kode ind i overnævnte kode hvor jeg har skrevet jeg ville havde den. Har rettet din kode til dette :
$numre = range(0,9);
$a_z = range(a,z);
$dk_tegn = array('æ','ø','å');

$total = array_merge($numre,$a_z,$dk_tegn);

foreach($total AS $tegn)
{
echo '<td\n><strong class=\"menulink\"><a href="albums.php?start='.urlencode($tegn).'">'.$tegn.'</a></strong> </td>';
}

Men den kalder ikke rigtig det den skal med ?start= og siden er blank.
Skal der sættes noget mere ind. ?? og hvad kræver det hvis jeg skal have en side mere der skal hedde vis_album.php som du har lavet den til ???
Håber du kan hjælpe mig
Avatar billede the-exterminator Nybegynder
15. juli 2007 - 18:08 #6
Jeg får en fejl på siden nu, efter jeg har sat SELECT * FROM albums WHERE name LIKE '$_GET['start']%' ORDER BY name
Avatar billede jakobdo Ekspert
15. juli 2007 - 18:10 #7
SELECT * skal du fjerne! :o)
Det tyder lidt på du slet ikke er inde i php og mysql?
Avatar billede the-exterminator Nybegynder
15. juli 2007 - 18:14 #8
Det er meget længe siden jeg har rodet med det, og kunne ikke det vilde dengang jeg begyndte med det. Derfor jeg er lidt på bar bund her, det er omkring 3år siden jeg lavet det andet til det her, og fatter - af det lige nu.

Jeg får stadig en blank side
Avatar billede jakobdo Ekspert
15. juli 2007 - 18:29 #9
Du skal kun tilføje:

$numre = range(0,9);
$a_z = range(a,z);
$dk_tegn = array('æ','ø','å');

$total = array_merge($numre,$a_z,$dk_tegn);

foreach($total AS $tegn)
{
echo '<td\n><strong class=\"menulink\"><a href="albums.php?start='.urlencode($tegn).'">'.$tegn.'</a></strong> </td>';
}

Du skal fjerne alt omkring: SELECT * FROM albums WHERE name LIKE '$_GET['start']%' ORDER BY name
Avatar billede the-exterminator Nybegynder
15. juli 2007 - 18:31 #10
Har jeg prøvet, men hvis du klikker på k for at få kim larsen frem, så kommer der en tom side.
Avatar billede jakobdo Ekspert
15. juli 2007 - 18:38 #11
Ja, men der skal jo meget mere kode til end det der.
Det er kun starten! :o)

Der skal jo laves noget kode som virker med den SQL jeg gav dig før.

Har du noget kode nu, som viser alle DVD i din samling?
Avatar billede the-exterminator Nybegynder
15. juli 2007 - 18:41 #12
Ja, det gør den kode jeg har smidt øverst
Avatar billede the-exterminator Nybegynder
15. juli 2007 - 18:43 #13
Denne kode lister albumne fra dvden, det er den der hedder albums.php
Koden ser sådan her ud :
------------------------
<?php

require("database.php");

if(is_array($HTTP_GET_VARS))
{
$letter = $HTTP_GET_VARS['letter'];
$dvd_id = $HTTP_GET_VARS['dvd'];
}
elseif(is_array($_GET))
{
$letter = $_GET['letter'];
$dvd_id = $_GET['dvd'];
}


if($letter == "" && $dvd_id == "")
{
// header("Location: test.php");
exit;
}


if ($letter != "")
{
    $sql = "
            select albums.name,count(albums.name) as CDS
            from albums
            where lower(albums.name) like lower('$letter%')
            group by albums.name
            order by 1
          ";
$info="Albums that starts with <font color=\"#0000ff\">" . strtoupper($letter) . "</font>";

}
elseif ($dvd_id != "")
{
    $sql = "
            select albums.name,count(albums.name) as CDS
            from albums
            where dvd_id = '$dvd_id'
            group by albums.name
            order by 1
          ";
$resultat = preform_sql("select name from dvd where dvd_id ='$dvd_id'");
while ($row=mysql_fetch_array($resultat))
{
  $dvdname = $row[0];
}
$info="Albums on <font color=\"#0000ff\">$dvdname</font>";

}


$resultat = preform_sql($sql);


?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>DiskCollection By FuckMyAss.dyndns.biz</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="dvd.css" rel="stylesheet" type="text/css">
</head>

<body class="cdlogo">
<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="2">
  <tr>
    <td height="112" align="center">
    <table width="100%" height="100%" border="0" cellpadding="0" cellspacing="2">
    <tr>
      <td width="70%" align="right">
      </td>
      <td height="112" align="left">

    <form name ="searchform" action="search.php" metode="POST" class="content">
    <strong class="sogebox">Enter Keyword:</strong><br />
    <input name="searchtext" type="text" />
    <br />
    <input name="searchtype" type="radio" value = "album" checked/> <strong class="sogebox">Album Name</strong>
    <input name="searchtype" type="radio" value = "song"/> <strong class="sogebox">Track Name</strong>
    <br />
    <br />
    <input name="submit" type="submit" value = "submit"/>

    <br />
    <br />
    <br />
    <br />

    </form>


    </td>
    </tr>
  </table>

    </td>
  </tr>

  <tr>
  </tr>

  <tr>
  </tr>
  <tr>
  </tr>

  <tr>

    <td align="left" valign="top" id="content">&nbsp;<br />

<?php

  echo "<p class=\"lineshift\">$info<div align=\"right\"><a href=\"index.php\">DVDs</a></div></p>\n";

while ($row = mysql_fetch_array($resultat))
{
  $album_name = $row['name'];
  $cd_count = $row['CDS'];

  if ($cd_count > 1 )
  {
    echo "\t<strong class=\"menulink2\"><a href=\"tracks.php?id="
        . find_album_id($album_name,1)
        . "\">$album_name</a>";

    for ($i = 2;$i<$cd_count+1;$i++)
    {
        echo "<a href=\"tracks.php?id="
        . find_album_id($album_name,$i)
        . "\"><font color=\"#000000\"> CD $i </font></a>";
    }
    echo "</strong><br />\n";
  }
  else
  {
    echo "<strong class=\"menulink2\"><a href=\"tracks.php?id="
        . find_album_id($album_name,1)
        . "\">$album_name</a></strong><br />\n";
  }


}


?>

    </td>
  </tr>
</table>

</body>
</html>
Avatar billede the-exterminator Nybegynder
15. juli 2007 - 18:47 #14
men hvis du kan lave en ny fil der hedder vis_albums.php må du gerne det, så koden bliver soteret fra i dens egen fil
Avatar billede jakobdo Ekspert
15. juli 2007 - 18:48 #15
Haha, din kode er jo allerede forberedt på det.
Prøv at ret mine links, så de kommer til at hedde:
albums.php?letter='.urlencode($tegn).'

PS: Har været til polterabend hele dagen i går (dog ikke min egen), så den kører ikke i højeste gear! :o)
Avatar billede the-exterminator Nybegynder
15. juli 2007 - 19:02 #16
Cool det virker, men vil det osse virke, hvis der kommer 100 dvdere på. ??? vil den så tage alle 100 dvdere og smide alle med A ud fx. ???
Avatar billede the-exterminator Nybegynder
15. juli 2007 - 19:04 #17
Det eneste der ikke ser så fedt ud nu, er at det står helt øverst, skulle meget gerne have det under CD-Logoet, men kan ikke få det derned.
Avatar billede jakobdo Ekspert
15. juli 2007 - 19:55 #18
Det er et spørgsmål om at sætte din html kode korrekt op.
Det har ikke noget med php at gøre! :o)
Og ja, det virker også hvis der er 100 DVD'er eller mere.

Du får et svar!
Avatar billede the-exterminator Nybegynder
15. juli 2007 - 19:58 #19
Du får hermed de 100
Takker for hjælpen og din tålmodighed mange gange :)
Avatar billede jakobdo Ekspert
15. juli 2007 - 21:43 #20
Jeg takker for point. :o)
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