Gå til innhold

PHP sortering for hver kolonne i en tabell


Anbefalte innlegg

Jeg får ikke sortering til å fungere. Når jeg klikker på overskriftene (artist, song, size og date) i tabellen ønsker jeg at kolonnen jeg klikker på skal sorteres i stigende rekkefølge.

Kan noen hjelpe meg med dette. Koden jeg har er nedenfor.

På forhånd takk.

 

<?

echo "<h3>MP3 Liste</h3>";

$myFiles=array();
$homedir = ".";
$dir = opendir("$homedir");
while(FALSE !== ($file = readdir($dir))) {
if($file=="." || $file==".."||$file=="index.php"||ereg("txt|html|doc",$file)) {
} else {
 $myFiles[] = "$file";
}
} closedir($dir);

sort($myFiles);
reset($myFiles);

echo "<table>";
echo "  <tr>
       <td class=s>&nbspNumber&nbsp</td>
       <td class=s>&nbsp<a class=cd href=music.php?sort=artist>Artist</a>&nbsp</td>
       <td class=s>&nbsp<a class=cd href=music.php?sort=song>Song</a>&nbsp</td>
       <td class=s>&nbsp<a class=cd href=music.php?sort=size>Size</a>&nbsp</td>
       <td class=s>&nbsp<a class=cd href=music.php?sort=date>Date (Uploaded)</a>&nbsp</td>
       </tr>";
foreach($myFiles as $value) {

$sjekk_size = stat("$value");
$size = $sjekk_size['size'];

$sjekk_date = stat("$value");
$date = $sjekk_date['ctime'];
$counter++;

$del = split("-",$value);

echo " <tr>
       <td class=p>&nbsp$counter&nbsp</td>
       <td class=p>&nbsp$del[0]&nbsp</td>
       <td class=p>&nbsp<a class=cd href=music/$value>" . substr("$del[1]",0,-4) . "</a>&nbsp</td>
       <td class=p>&nbsp" . substr("$size",0,-6) . "," .  substr("$size",1,-5) . " MB&nbsp</td>
       <td class=p>&nbsp" . date("d.m.Y",$date) . "&nbsp</td>
       </tr>";
}
echo "</table>";

?>

Endret av christdi
Lenke til kommentar
Videoannonse
Annonse
  • 3 uker senere...

hei, til dette kan man bruke usort

 

jeg ville laget en funksjon som henter ut hhv artist, sang og album, slik:

 

function getData($filename){

 # fyll i passende kode her.
 # denne koden må finne songname, artist og album utfra filnavn
 # og lage de i variablene $songname, $artist og $album

 return array(songname => $songname, artist => $artist, album => $album);

}

 

denne funksjonen kan du siden bruke i usort for ønsket sortering. men mer om det siden.

Lenke til kommentar

funksjonsdefinisjonen kan du legge hvor som helst. den kaller du siden opp slik:

 

$filedata = getData("britney spears - crazy.mp3");

 

# etter det vil $filedata inneholde:

# $filedata['artist'] vil være "britney spears"

# $filedata['songname'] vil være "crazy"

 

denne funksjonen kan du også bruke i usort, men mere om det når funksjonen er ferdig.

 

ser at du har en del string parsing i ditt skript, det er denne koden som må inn i en funksjon for å gjøre den mer systematisk og lettere tilgjengelig og i det hele tatt gjøre at vi kan sortere på deler av filnavnet.

Lenke til kommentar

Sånn er koden min blitt, men nå får jeg ikke ut noe. Hmmm.

Her trengs det ekspertise til.

 

<?
echo "<h3>Demosongs</h3>";

$myFiles=array();
$homedir = "../../music";
$dir = opendir("$homedir");
while(FALSE !== ($file = readdir($dir))) {
if($file=="." || $file==".."||$file=="index.php"||ereg("txt|music|Rafael",$file)) {
} else {
 $myFiles[] = "$file";
}
} closedir($dir);

sort($myFiles);
reset($myFiles);

echo "<table>";
echo "  <tr>
       <td class=s>&nbspNumber&nbsp</td>
       <td class=s>&nbspArtist&nbsp</td>
       <td class=s>&nbspSong&nbsp</td>
       <td class=s>&nbspSize&nbsp</td>
       <td class=s>&nbspDate (Uploaded)&nbsp</td>
       </tr>";

function getData($file) {

foreach($myFiles as $value) {
$counter++;

$sjekk_size = stat("../../music/$value");
$size = $sjekk_size['size'];

$sjekk_date = stat("../../music/$value");
$date = $sjekk_date['ctime'];

$del = split("-",$value);

return array(song => $song, artist => $artist, size => $size, date => date);
}
}

$filedata['artist'];

?>

Lenke til kommentar

øverst har du allerede kode som gjør dette:

[...]
$del = split("-",$value);

echo " <tr>
      <td class=p>&nbsp$counter&nbsp</td>
      <td class=p>&nbsp$del[0]&nbsp</td>
      <td class=p>&nbsp<a class=cd href=music/$value>" . substr("$del[1]",0,-4) . "</a>&nbsp</td>
      <td class=p>&nbsp" . substr("$size",0,-6) . "," .  substr("$size",1,-5) . " MB&nbsp</td>
      <td class=p>&nbsp" . date("d.m.Y",$date) . "&nbsp</td>
      </tr>";
}
[...]

 

du trenger å lage en funksjon som du kan kalle for å få ut data som artistnavn og sangtittel fra filnavn, slik du gjør i koden der.

 

jeg vet ikke helt hvordan dine filer ser ut, men siden du allerede har et opplegg for å hente ut informasjon som artist og santtittel, burde du kunne greit sette dette i en funksjon som du siden kan kalle.

 

denne funksjonen skal altså:

- ta imot et filnavn som argument

- hente ut tittel, sang og album fra dette filnavnet

- returnere disse verdiene i en liste

 

denne funksjonen trengs om du skal klare å sortere på enkeltkomponenter i filnavnet.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...