Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Zamiana typu pliku na ikonkę
Forum PHP.pl > Forum > Przedszkole
redelek
Witam,

Mam taki mały problem. Do bazy mam zapisywany typ pliku np. application/msword podczas wyświetlania wszystkich rekordów chciałbym zamienić ten napis application/msword na ikonkę word.

Tak wygląda moje pobieranie danych
  1. <?php
  2. if(mysql_num_rows($result) == 0)
  3. {
  4.    echo "Baza jest pusta jak dzban&nbsp:( <br>";
  5. }
  6. else
  7. {
  8.   echo '<div id="main">';
  9.   echo '<table border="1" width="950px" cellspacing="0" cellpadding="2"><tr>';
  10.     echo '<td align="center" width="50">LP</td>';
  11.   echo '<td align="center" width="350">Opis</td>';
  12.   echo '<td align="center" width="40">Typ</td>';
  13.   echo '<td align="center" width="50">Pojemność</td>';
  14.   echo '<td align="center" width="110">Data dodania</td>';
  15.   echo '<td align="center" width="20">Pobierz</td>';
  16.   echo '<td align="center" width="10">Link</td></tr>';
  17.    while(list($id, $nazwa_dok, $plik, $link, $typ, $pojemnosc, $data_dodania, $uzytkownik) = mysql_fetch_array($result))
  18.    {
  19.     $cnt++;
  20.        $typ='<img src="images/winxp/doc.png" align="center" border="0" width="16" height="16" />';
  21.        echo '<tr><td align="center">'.$cnt.'</td>';
  22.        echo '<td><center><b>'.$nazwa_dok.'</b></center></td>';
  23.        echo '<td align=\"center\">'.mime_icon($typ).'</td>';
  24.        echo '<td align="center">'.format_size($pojemnosc).'</td>';
  25.        echo '<td align="center">'.$data_dodania.'</td>';
  26.        echo '<td align="center"><a href="'.$plik.'" title="Pobierz"><img src="images/download.png" align="center" border="0" width="16" height="16" /></a></td>';
  27.        echo '<td align="center"><a href="mailto: ?subject=Link do dokumentu '.substr($plik ,6).'&body=Link do pliku '.$link.'"><img src="images/link.png" align="center" border="0" width="16" height="16" /></a></td></tr>';
  28.        
  29.    }
  30. }
  31. ?>


Zrobiłem coś takiego, ale nie zabardzo to chce działać.
  1. <?php
  2. function mime_icon($var)
  3.    {
  4.        switch($var)
  5.        {
  6.  
  7.            
  8.            case "application/msword" <span style="color: #007700":
  9.                return '<img src="images/winxp/doc.png" align="center" border="0" width="16" height="16" />';
  10.            
  11.            default&nbsp:
  12.  
  13.            return "unknown";
  14.        }
  15.    }
  16. ?>

Macie może jakiś pomysł na to ?

Będę bardzo zobowiązany za pomoc

Redelek
nospor
mime_icon($typ)

a twoj typ to nie application/msword a
$typ='<img src="images/winxp/doc.png" align="center" border="0" width="16" height="16" />';

No patrz troche co piszesz
redelek
Cytat(nospor @ 9.09.2008, 07:12:27 ) *
mime_icon($typ)

a twoj typ to nie application/msword a
$typ='<img src="images/winxp/doc.png" align="center" border="0" width="16" height="16" />';

No patrz troche co piszesz


No od wczoraj patrzę jak sroka w gnat i nie widzę
Typ pobrany z bazy to będzie application/msword to wstawia do funkcji, ale nie znajduje w switch tego wpisu i nie zwraca mi

  1. <?php
  2. return '<img src="images/winxp/doc.png" align="center" border="0" width="16" height="16" />';
  3. ?>


Możesz rozjaśnić mi żarówkę troszkę, bo nadal ciemność widzę smile.gif

Redelek
webdice
Nie:

Kod
case "application/msword"


tylko:

Kod
case "application/msword":


EDIT: Zmieniłem bbcode, bo forum coś mieszało. ~golaod dokładnie to co Ty.
golaod
A jak dla mnie, to bardzo fajnie, że się wypowiadacie bez sensu. Przecież on nie ma raportowania błędu a z tego co widzę ma źle składnie.
case "coś":(dwukropek - ja go bynajmniej nie widzę).
webdice co Twój przykład miał pokazać ?
redelek
Cytat(golaod @ 9.09.2008, 08:16:18 ) *
A jak dla mnie, to bardzo fajnie, że się wypowiadacie bez sensu. Przecież on nie ma raportowania błędu a z tego co widzę ma źle składnie.
case "coś":(dwukropek - ja go bynajmniej nie widzę).
webdice co Twój przykład miał pokazać ?


Ale z dwukropkiem też nie działa.
  1. <?php
  2. case "application/msword" //jest&nbsp: ale go wycina BBcode
  3.                 return '<img src="images/winxp/doc.png" align="center" border="0" width="16" height="16" />';
  4. ?>


w switch jest zmienna $var która w pętli będzie zmieniała swoją wartość application/word lub application/vnd.ms-excel

Kurcze może uparłem się na to switch, a to tu nie spełni swojej roli. W bazie jest już zapisany typ pliku a nie cała nazwa:(
golaod
Masz raportowanie błędów ? Sprawdź w najłatwiejszy możliwy sposób czyli
if('application/msword'==$val)
echo 'good'
else
echo 'not'
Może wartość tej zmiennej jest inna ? Poza tym polecam do switcha wprowadzać dane w ten sposób trim($val) bo nie wiadomo, czy jakieś białe znaki się nie wkradły.
webdice
Jak masz w bazie co innego niż w case to się nie dziw że Ci nie działa.
redelek
Cytat(golaod @ 9.09.2008, 08:28:49 ) *
Masz raportowanie błędów ? Sprawdź w najłatwiejszy możliwy sposób czyli
if('application/msword'==$val)
echo 'good'
else
echo 'not'
Może wartość tej zmiennej jest inna ? Poza tym polecam do switcha wprowadzać dane w ten sposób trim($val) bo nie wiadomo, czy jakieś białe znaki się nie wkradły.


Upsss no i mamy ciekawostkę.
Jak zrobiłem tak jak powiedziałeś to wszędzie dostaję info not not, ale jak wyświetlam to z bazy to wszystko ładnie widać ?
To o co chodzi ?

Redelek
webdice
Napisz jak masz dokładnie zapisane w bazie.
redelek
Cytat(webdice @ 9.09.2008, 08:41:36 ) *
Napisz jak masz dokładnie zapisane w bazie.


Tabela
  1. CREATE TABLE `db_doc` (
  2. `id` tinyint(3) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `nazwa_dok` varchar(100) collate utf8_polish_ci DEFAULT NULL,
  4. `plik` varchar(255) collate utf8_polish_ci DEFAULT NULL,
  5. `link` varchar(255) collate utf8_polish_ci DEFAULT NULL,
  6. `typ` varchar(50) collate utf8_polish_ci DEFAULT NULL,
  7. `pojemnosc` int(10) UNSIGNED DEFAULT NULL,
  8. `data_dodania` datetime DEFAULT NULL,
  9. `uzytkownik` varchar(8) collate utf8_polish_ci DEFAULT NULL,
  10. PRIMARY KEY (`id`),
  11. UNIQUE KEY `id` (`id`),
  12. KEY `id_2` (`id`)
  13. ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;


Dane
  1. INSERT INTO `db_doc` (`id`,`nazwa_dok`,`plik`,`link`,`typ`,`pojemnosc`,`data_dodania`,`uzytkownik`) VALUES
  2. (1,'dasdasdas','pliki/lyra-callcenter.txt','http://doc.clickad.pl/pliki/lyra-callcenter.txt','text/plain',80,'2008-09-05 15:22:17','redelek'),
  3. (2,'xcbxbxb','pliki/projekt_ukladu_strony_w_opa...pdf','http://doc.clickad.pl/pliki/projekt_ukladu_strony_w_opa...pdf','application/pdf',374374,'2008-09-05 15:31:49','redelek'),
  4. (3,'ffsfsdfsd','pliki/cisco_faq_pl.pdf','http://doc.clickad.pl/pliki/cisco_faq_pl.pdf','application/pdf',2039745,'2008-09-05 15:32:54','redelek'),
  5. (4,'fsdfsdfsdfsd','pliki/c2400106.pdf','http://doc.clickad.pl/pliki/c2400106.pdf','application/pdf',59080,'2008-09-05 15:36:46','redelek'),
  6. (7,'word','pliki/instalacja_serwera_pocztowego_na_linux.doc','http://doc.clickad.pl/pliki/instalacja_serwera_pocztowego_na_linux.doc','application/msword',20992,'2008-09-08 16:02:41','redelek'),
  7. (8,'excel','pliki/inwentaryzacja_12.2007.xls','http://doc.clickad.pl/pliki/inwentaryzacja_12.2007.xls','application/vnd.ms-excel',220672,'2008-09-08 16:02:41','redelek'),
  8. (9,'jpg','pliki/mapa2.jpg','http://doc.clickad.pl/pliki/mapa2.jpg','image/jpeg',196167,'2008-09-08 16:02:41','redelek'),
  9. (10,'jpg','pliki/copy_(2)_of_clickad_2007.ppt','http://doc.clickad.pl/pliki/copy_(2)_of_clickad_2007.ppt','application/vnd.ms-powerpoint',12055040,'2008-09-08 16:02:41','redelek'),
  10. (11,'zip','pliki/lekcja3smarty.zip','http://doc.clickad.pl/pliki/lekcja3smarty.zip','application/force-download',38549009,'2008-09-08 16:02:41','redelek'),
  11. (12,'rar','pliki/r-studio_4.2.125042.rar','http://doc.clickad.pl/pliki/r-studio_4.2.125042.rar','application/rar',5657988,'2008-09-08 16:02:41','redelek');
nospor
kurde, co z wami?
pogrubiam wam linie o ktora chodzi!!!!
Cytat
while(list($id, $nazwa_dok, $plik, $link, $typ, $pojemnosc, $data_dodania, $uzytkownik) = mysql_fetch_array($result))
{
$cnt++;
$typ='<img src="images/winxp/doc.png" align="center" border="0" width="16" height="16" />';
echo '<tr><td align="center">'.$cnt.'</td>';
echo '<td><center><b>'.$nazwa_dok.'</b></center></td>';
echo '<td align=\"center\">'.mime_icon($typ).'</td>';
echo '<td align="center">'.format_size($pojemnosc).'</td>';
echo '<td align="center">'.$data_dodania.'</td>';
echo '<td align="center"><a href="'.$plik.'" title="Pobierz"><img src="images/download.png" align="center" border="0" width="16" height="16" /></a></td>';
echo '<td align="center"><a href="mailto: ?subject=Link do dokumentu '.substr($plik ,6).'&body=Link do pliku '.$link.'"><img src="images/link.png" align="center" border="0" width="16" height="16" /></a></td></tr>';

}


Przeciez pisalem o tym w pierwszym poscie. Jak mozna to przegapic?
webdice
Ehh, nie zauważyłem że nie poprawiłem tego co ~nospor Ci napisał.

  1. <?php
  2. while(list($id, $nazwa_dok, $plik, $link, $typ, $pojemnosc, $data_dodania, $uzytkownik) = mysql_fetch_array($result))
  3.   {
  4.    $cnt++;
  5.       $typ='<img src="images/winxp/doc.png" align="center" border="0" width="16" height="16" />';
  6.       echo '<tr><td align="center">'.$cnt.'</td>';
  7.       echo '<td><center><b>'.$nazwa_dok.'</b></center></td>';
  8. ?>


Usuń zmienną typ, bo przekazujesz ją później do funkcji.
redelek
RUSZYŁO exclamation.gif!!!

Dzięki Panowie:)

Jeszcze jedno pytanie gdzie mogę znaleźć listę wszystkich typów plików ?

Pozdrawiam
Redelek
nospor
no nie wiem, moze w google?
http://www.google.com/search?hl=pl&cli...=Szukaj&lr=

A na przyszlosc czytaj ze zrozumieniem co do ciebie piszą. Ale nie martw sie, inni tez sie nie popisali winksmiley.jpg
redelek
Cytat(nospor @ 9.09.2008, 10:02:30 ) *
no nie wiem, moze w google?
http://www.google.com/search?hl=pl&cli...=Szukaj&lr=

A na przyszlosc czytaj ze zrozumieniem co do ciebie piszą. Ale nie martw sie, inni tez sie nie popisali winksmiley.jpg


Dzięki
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.