Avatar billede Slettet bruger
07. november 2002 - 17:35 Der er 16 kommentarer og
1 løsning

200 points til den der kan klare denne!

Så er vi på den igen!

Jeg sidder fast.


jeg har skrevet en detaljeret problembeskrivelse her:

http://www.pilip.dk/exp/situation.html



Der er 200 points til den der klarer begge...

Spørgsmål 1 vejer 90 procent og 10 til spørgsmål 2!
Avatar billede james_t_dk Juniormester
07. november 2002 - 17:39 #1
Avatar billede dna Nybegynder
07. november 2002 - 17:45 #2
Vil lige skrive hans spørgsmål her:
*Situation
I upload_test.php(s) uploades en winamp 3 playliste i b4s (xml) format.
Derefter videresendes der til mp3_playlist.php(s) hvor playlisten parses
og posterne tilføjes i mysql databasen.
Der kommer problemet. Den skriver at samtlige numre eksisterer i databasen
hvilket de ikke gør.

Jeg håber på hurtige svar. På forhånd tak!

Der er mulighed for at teste scriptet i upload_test.php

Det sekundære problem er at det nogle gange tager for lang tid at parse alle,
så tiden på (30) sekunder ikke er nok.
Jeg har prøvet at ændre dette i toppen af begge filer, men det er ikke lykkedes!

// philip
Avatar billede tipsen Nybegynder
07. november 2002 - 21:24 #3
linket fungerer ikke...
Avatar billede Slettet bruger
08. november 2002 - 15:27 #4
Linket virker igen nu.
Avatar billede tipsen Nybegynder
08. november 2002 - 16:32 #5
Rettelser til upload_test:

<? 
set_time_limit(999);
if (isset($_POST['submit'])) { 
    $IgnoreFiles = array("b4s"); // remember, NO "."

    $userfile      = $_FILES['userfile']['tmp_name']; 
    $userfile_name = $_FILES['userfile']['name']; 
    $userfile_size = $_FILES['userfile']['size']; 
    $userfile_type = $_FILES['userfile']['type']; 
    $userfile_ext = substr(strrchr($userfile_name, "."), 1 ); 
    $maxsize_KB    = 2 * 1024;
    $destination_dir = dirName($_SERVER['PATH_TRANSLATED']) ."/upload"; 

    if(!in_array($userfile_ext, $IgnoreFiles)) {
        die("<b>You have tried to upload an illegal filetype. The upload was aborted!</b>"); 
    }

    if ($userfile_size/1024 <= $maxsize_KB) { 
        move_uploaded_file($userfile, $destination_dir ."/". $userfile_name); 
        header("refresh: 1;url=mp3_playlist.php?file=$userfile_name");
        echo " The upload was a success!<br>
        Filename: ". $userfile_name ."<br>
        Size: ". $userfile_size ." Bytes<br>
        Type: ". $userfile_type;
    } else {
        echo "File is to large, the maximum is ". $maxsize_KB ." Bytes, your file was ". $userfile_size ." KB"; 
    }
}
?> <br>
<br><b>Only B4S files can be uploaded.</b><br>
The tracks on the playlist will be automatically added to the pilip.dk list.
<FORM action='<?= basename($_SERVER['PHP_SELF']) ?>' method='POST' enctype='multipart/form-data'>
  <INPUT TYPE='FILE' name='userfile'><br>
  <INPUT TYPE='SUBMIT' NAME='submit' value='Upload now!'>
</FORM>

<? 
  //show_source(basename($_SERVER['PHP_SELF']));
?>
Avatar billede tipsen Nybegynder
08. november 2002 - 16:34 #6
puha - den anden er godt nok for stor til at jeg gider bruge tid på at sætte mig ind i den nu... - vender måske tilbage senere...
Avatar billede Slettet bruger
09. november 2002 - 11:37 #7
ok
Avatar billede Slettet bruger
09. november 2002 - 11:40 #8
når den skal parse en playlist fil, skriver den VED ALLE POSTER at det allerede eksitster!
Nu har jeg følgende kode:


<?php
set_time_limit ( 999 );
/* Can be located anyway (also as an URL) */
$playlist_file = "upload/$_GET[file]";


/* DON'T CHANGE ANYTHING BELOW */
if (!is_file($playlist_file))
    die("An internal error occured. <b>File not found!</b>");
   
function parse_entry($values) {
    for ($i=0; $i < count($values); $i++)
        $tracks[$values[$i]["tag"]] = $values[$i]["value"];
    return $tracks;
}

function parse_playlist($playlist) {
    global $dropoff;
   
    $data = implode('',file($playlist));
   
    $xml_parser = xml_parser_create();
    xml_parser_set_option($xml_parser,XML_OPTION_CASE_FOLDING,0);
    xml_parser_set_option($xml_parser,XML_OPTION_SKIP_WHITE,1);
    xml_parse_into_struct($xml_parser,$data,$vals,$index);
    xml_parser_free($xml_parser);
   
    foreach ($index as $key=>$val) {
        if ($key == "entry") {
            $ranges = $val;
            for ($i=0; $i < count($ranges); $i+=2) {
                $offset = $ranges[$i] + 1;
                $len = $ranges[$i + 1] - $offset;
                $list[] = parse_entry(array_slice($vals, $offset, $len));
            }       
        } else continue;
    }
   
    return $list;
}

$playlist = parse_playlist($playlist_file);
$unknown = 0;

function get_total_secs() {
    global $playlist, $unknown;
    $secs = 0;
    foreach($playlist as $id => $track)
    if (isset($track['Length']))
            $secs += $track['Length']/1000;
    else
        $unknown++;

    return $secs;
   
}

function get_secs($secs) {
    $secs -= get_hours($secs)*3600;
    while ($secs >= 60) $secs -= 60;
       
    return floor($secs);
}

function get_min($secs) {
    $secs -= get_hours($secs)*3600;
    $min = 0;
    while ($secs >= 60) {
        $secs -= 60;
        $min++;
    }
       
    return floor($min);
}

function get_hours($secs) {
    $hours = 0;
    while ($secs >= 3600) {
        $secs -= 3600;
        $hours++;
    }
       
    return floor($hours);
}

function get_length($secs) {
    return sprintf("%s%s%s"
            ,(get_hours($secs) != 0) ? get_hours($secs) .":" : ""
            ,(get_min($secs) != 0) ? get_min($secs) .":" : ""
            ,get_secs($secs)
            );
}



// TILFOEJ TIL DATABASE-FUNKTIONER
// TAK TIL WEBCAFE.DK OG #PHP PAA QUAKENET!


function aabn_forbindelse_og_vaelgdb() {
  $server = "localhost";
  $bruger = "root";
  $kodeord = "root";
  $database = "pilip";

  if (!mysql_connect("$server","$bruger","$kodeord")) {
    udskriv_fejl("Could not make connection to MySQL database!");
  }

  if(!mysql_select_db("$database")) {
    udskriv_fejl("Cound not select database: $database");
  }
}

function sql_spoerg_og_faa_svar($query) {
  $resultat = mysql_query($query);

  if(!$resultat) {
    udskriv_fejl("Could not execute: <em>$query</em>");
  }

  while($raekke = mysql_fetch_array($resultat)) {
    $resultat_array[] = $raekke;
  }

  return $resultat_array;
}

function sql_spoerg($query) {
  $resultat = mysql_query($query);

  if(!$resultat) {
    udskriv_fejl("Could not execute: <em>$query</em>");
  }
}

function luk_forbindelse() {
  if(!mysql_close()) {
    udskriv_fejl("Could not close MySQL database connection!");
  }
}

function udskriv_fejl($fejl) {
  echo "<p>$fejl";

  if ($mysql_fejl = mysql_error()) {
    echo "<br>The error is: <em>$mysql_fejl</em>";
  }

  exit;
}

function addentry($artist, $track, $ip) {
   
    $ip = $_SERVER[REMOTE_ADDR];

    $sql = "insert into numre(artist,track,ip)
        values('$artist','$track','$ip')";

    aabn_forbindelse_og_vaelgdb();
    sql_spoerg($sql);
    luk_forbindelse();
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//Dtd HTML 4.0 Transitional//EN">
<html>
<head>
<title>Pilip.dk Playlist Parser</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<blockquote>
  <ol>
    <font color="#000000" size="2" face="verdana"><small>
    <?
    $added = "0";
    $failed = "0";
   
foreach($playlist as $id => $track) {
    echo "<li>";
//    echo $track['Name'];
    echo "<b>";
    $arr = explode(" - ", $track['Name']);
    echo $arr[count($arr) - 2];
    $toeren =$arr[count($arr) - 2];
    echo " - ";
    echo $arr[count($arr) - 1];
    $etteren = $arr[count($arr) - 1];
    echo "</b>";

//    if (eksisterer($arr[count($arr) - 2]) && $arr[count($arr) - 1])) == "true") {
    $tjek = mysql_query("SELECT * FROM tabel WHERE  artist = '$artist' and track = '$track'");
    if($tjek) { addentry(addslashes($arr[count($arr) - 2]),addslashes($arr[count($arr) - 1]),$_SERVER["REMOTE_ADDR"]);
    echo "<br><font color=#008000><b>Success: added!</b></font><br>";
    $added++;
    } else {
    echo "<br><font color=#990000>Error: Track already added by another user!</font><br>";
    $failed++;
    }
//    if(!mysql_num_rows($tjek)) { addentry(addslashes($arr[count($arr) - 2]),addslashes($arr[count($arr) - 1]),$_SERVER["REMOTE_ADDR"]);}
//    else{}
   
//    echo "<font color=#008000><b>Success: added!</b>";
//    } else {
//    echo "<font color=#990000><b>Error: Track already added by another user!</b>";
//    }
   
    if (isset($_GET['duration']) && $_GET['duration'] == 'show') {
        echo " <strong>[ ";
        if (isset($track['Length'])) echo get_length($track['Length']/1000);
        else echo "<font color=\"#000000\">N/A</font>";
        echo " ]</strong>";
    }
    echo "</li>\n";

}

//    $tjek = "select * from numre where artist = 'Baha Men' and track = 'Who Let The Dogs Out'";

//    aabn_forbindelse_og_vaelgdb();
//    $resultat = sql_spoerg($tjek);

//        echo count($resultat);

if (file_exists($playlist_file)) {
unlink("$playlist_file");
}
echo "<br><br><font size=3>Your playlist was successfully removed from the tempoary directory!";
?>
    </small></font>
  </ol>
</blockquote><font face="verdana" color="#000000" size="3"><b><?
echo "$added tracks added! -  $failed tracks was NOT added (already added by another user!)";
?></b></font><br><br><br><font face="verdana" color="#808080" size="1">
Playlist-parser powered by Tom Sommer Networks, www.tsn.dk - THANKS!
</body>
</html>
Avatar billede Slettet bruger
09. november 2002 - 15:55 #9
Jeg fatter det ikke!
Avatar billede tomsommer Juniormester
09. november 2002 - 16:12 #10
Så problemet er simpelthen at du ikke vil have den samme sang 2 gange?

Jeg ville nok fjerne alle underlige chars, som _. etc og lave strengen lowercase. Derefter prøve at lave en "SELECT nummer FROM mp3list WHERE songname LIKE '$sangnavn'"
Hvis der retuneres nogle records så må sangen findes i forvejen og derfor skal den ikke indsættes

Desuden er
if($tjek) {
meget dumt... MEGET

brug
if(mysql_num_rows($tjek) != 0) {
ellers får du problemer
Avatar billede Slettet bruger
09. november 2002 - 16:44 #11
Der kom jeg ikke lige super meget videre...

Jeg må have noget mere konkret. mere kode!
Avatar billede tipsen Nybegynder
09. november 2002 - 17:25 #12
en liste med musik... - hvorfor ikke bare bruge cddb.com ... - hvad er formålet med en side med kunstnere og sangtitler?
Avatar billede Slettet bruger
09. november 2002 - 17:27 #13
Jeg øver mig på php... Og jeg synes at det er fedt.... men der er problemer!
Avatar billede Slettet bruger
16. november 2002 - 14:51 #14
Jeg har ikke fået nogle svar, jeg kan bruge til noget!
Avatar billede Slettet bruger
16. november 2002 - 14:51 #15
hmm!
Avatar billede tipsen Nybegynder
16. november 2002 - 16:34 #16
Jeg er da ked at du ikke kunne bruge optimeringen af upload_test - hvad er der galt med den?
Avatar billede Slettet bruger
16. november 2002 - 20:07 #17
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