Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Upload plikow (pomoc)
Forum PHP.pl > Forum > PHP
szymonk237231
Witam!
Robię upload plików (przerabiam system rejestracji i logowania na upload).
Działa to na takiej zasadzie, że ten kto ma konto i sie zaloguje - może dodawać pliki do serwisu.
Zrobiłem tak, że gdy wrzuca się plik to do mysql dodaje się nazwa pliku, waga i jaki user go wrzucił.
Pytanie do was: Jak zrobić, żeby później w profilu danego usera wyświetlać jego dodane pliki??
Dam kod (kod pochodzi ze strony kess).
Oczywiście podajcie mi jak ma wyglądać zapytanie do bazy danych, z resztą powinienem sobie chyba dać rade.
Za pomoc dzieki !

  1. <?php
  2. /*polaczylem sie*/
  3.  
  4.  
  5. $wynik = mysql_query("SELECT * FROM upload")
  6. or die('Błąd zapytania');
  7.  
  8.  
  9.  
  10. if(mysql_num_rows($wynik) > 0) {
  11.  
  12. echo "<table cellpadding=\"2\" border=1>";
  13. while($r = mysql_fetch_assoc($wynik)) {
  14. echo "<tr>";
  15. echo "<td>".$r['nazwa']."</td>";
  16. echo "<td>".$r['sciezka']."</td>";
  17. echo "</tr>";
  18. }
  19. echo "</table>";
  20. }
  21.  
  22. ?>
pedro84
SELECT + WHERE.
szymonk237231
No to zapytanie mam:
  1. $wynik = mysql_query("SELECT * FROM upload WHERE uzytkownik='$uzytkownik'")
  2. OR die('Błąd zapytania');
  3.  
  4.  


I jak zrobić if'a ?
żeby mi tylko wyświetlało pliki danego usera?
pedro84
Jakiego ifa? Przecież za pomocą WHERE pobierasz pliki tylko określonego użytkownika.
szymonk237231
Emm, może i mówisz dobrze. Sorka ale dziś nic nie ogarniam a chce to skończyć jak najszybciej.
Czyli zapytanie dobre robie?
Czy coś źle?
Od razu napisze (nie wiem czy to jest od razu normalne czy nie), ale na sesjach działam.
Nie wiem czy to w czymś pomoże

Bo narazie mi nie działa.
Zapytanie wygląda tak:
  1. $wynik = mysql_query("SELECT * FROM upload WHERE uzytkownik")


Gdy wejde w link: Zobacz pliki, to maja mi się wyświetlić pliki tylko danego usera.
Jak takie cuś skombinować?
Prosiłbym bardzo o pomoc. Dzięki wink.gif
jackraymund
zapisuj w mysql kto wysylal i jaki plik
wtedy tylko zrobisz select * where nick = (nick)
tak jak tutaj
$wynik = mysql_query("SELECT * FROM upload WHERE uzytkownik")
a teraz tylko wywalenie rekordów
szymonk237231
Okej dzięki, postaram się tak zrobić. jak nie to zaglądaj tu od czasu do czasu smile.gif
Dzięki, pozdrawiam smile.gif
pedro84
Właśnie miałem o to pytać: czy Ty w ogóle dodajesz id użytkownika do tej tabeli przy uploadzie?
szymonk237231
No to właśnie dupa, nie wiem co źle robie, ale zapytanie mam takie jak mi dałeś. A rekordów nie wywala. ;|
pedro84
A ID usera masz w tabeli?
szymonk237231
Mój kod wygląda tak:
  1. <?php
  2. session_start(); // rozpoczęcie sesji
  3. ?>
  4.  
  5. <?php include('header.php'); ?>
  6.  
  7. <h2>&raquo; Upload<br /></h2>
  8. <div class="content" align="center">
  9. <?php
  10. include 'inc/db.php'; // połączenie się z bazą danych
  11.  
  12. /* zapytanie do konkretnej tabeli */
  13. $wynik = mysql_query("SELECT * FROM upload WHERE uzytkownik")
  14. or die('Błąd zapytania');
  15.  
  16. /*
  17. wyświetlamy wyniki, sprawdzamy,
  18. czy zapytanie zwróciło wartość większą od 0
  19. */
  20. if(mysql_num_rows($wynik) > 0) {
  21.  
  22.  
  23.  
  24. echo "<table cellpadding=\"2\" border=0>";
  25. while($r = mysql_fetch_assoc($wynik)) {
  26. echo "<tr>";
  27. echo "<td>".$r['nazwa']."</td>";
  28. echo "<td>".$r['sciezka']."</td>";
  29. echo "</tr>";
  30. }
  31. echo "</table>";
  32. }
  33.  
  34. ?>

Prawie wszystko z neta. Jak to rpzerobić by wyświetlało mi pliki DANEGO USERA, z UPLOAD?

ID usera nie mam, ale każdy dodany plik ma swoje ID
pedro84
Zaraz, zaraz. Ale co to jest WHERE uzytkownik?

  1. SELECT * FROM `files` WHERE `kolumna`='wartosc'


---

No to najpierw musisz jakoś te pliki rozróżniać, logiczne, nie?
szymonk237231
W sensie, że po dodaniu pliku do tabeli UPLOAD zapisuje się ID pliku, nazwa, ścieżka i kto dodał
pedro84
To się zdecyduj, bo raz mówisz raz, a drugi raz inaczej...

Pokaż tę tabelę z przykładowymi danymi.
szymonk237231
Kurcze, nie wiem czy dobrze robie, ale zapytanie mam:
  1. $wynik = mysql_query("SELECT * FROM `upload` WHERE `uzytkownik`='$uzytkownik'")


przed zapytaniem zrobiłem:
  1. $uzytkownik = $_SESSION['login'];


Kurde, wiem że mieszam pewnie. sad.gif
Nie wiem jak już to robić.
(można powiedzieć , że początki z mysql + php)

Struktura tabeli wygląda tak:
  1. CREATE TABLE `upload` (
  2. `id` int(2) NOT NULL AUTO_INCREMENT,
  3. `nazwa` varchar(50) NOT NULL,
  4. `sciezka` varchar(50) NOT NULL,
  5. `rozmiar` varchar(50) NOT NULL,
  6. `uzytkownik` varchar(50) NOT NULL,
  7. `opis` varchar(100) NOT NULL,
  8. PRIMARY KEY (`id`)
  9. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=2 ;


A tak mam dodany jeden "plik"
  1. INSERT INTO `upload` (`id`, `nazwa`, `sciezka`, `rozmiar`, `uzytkownik`, `opis`) VALUES
  2. (1, 'Siema', 'Zima.jpg', '105542', 'szymonk237231', 'Opis pliku');
Niktoś
A daj jeszcze za
Cytat
$uzytkownik = $_SESSION['login'];
echo $uzytkownik;

Może sesja jest pusta.
Poza tym:
) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=2 ;

Naprawdę chcesz mieć numeracje 2,4,6,8 zamiast 1,2,3,4?
szymonk237231
co do :
  1. $uzytkownik = $_SESSION['login'];
  2. echo $uzytkownik;

to mi wyswietla nazwe uzytkownika, na jakieog jestem zalogowany ;]

Więc jak można to wszystko skontruować?
pedro84
Cytat(Niktoś @ 14.03.2012, 18:43:22 ) *
Poza tym:
) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=2 ;

Naprawdę chcesz mieć numeracje 2,4,6,8 zamiast 1,2,3,4?

O czym Ty mówisz tak BTW?'

@szymonk - Ja bym jednak poszedł w normalizację i przechowywanie ID usera. A zobacz jeszcze jakie zapytania idą?
szymonk237231
Nie rozumiem o co chodzi.
Wybacz.


Mój kod wrzucania plików wygląda tak:
  1. <?php
  2. session_start(); // rozpoczęcie sesji
  3. ?>
  4.  
  5. <?php include('header.php'); ?>
  6.  
  7. <h2>&raquo; Upload<br /></h2>
  8. <div class="content" align="center">
  9. <form enctype="multipart/form-data" action="upload.php" method="POST">
  10. <table>
  11. <tr>
  12. <td>
  13. Nazwa
  14. </td>
  15. <td>
  16. <input type="text" name="nazwa_p" size="10">
  17. </td>
  18. </tr>
  19. <tr>
  20. <td>
  21. Opis<br>pliku
  22. </td>
  23. <td>
  24. <textarea name="opis">Opis pliku</textarea>
  25. </td>
  26. </tr>
  27. <tr>
  28. <td colspan="2">
  29. <input name="plik" type="file">
  30. </td>
  31. </tr>
  32. </table>
  33.  
  34. <input type="submit" value="Wgraj"> <br>
  35. </form>
  36.  
  37.  
  38.  
  39.  
  40. <?
  41. include 'inc/db.php'; // połączenie się z bazą danych
  42. $nazwa_p = $_POST['nazwa_p'];
  43. $opis = $_POST['opis'];
  44. $u_plik = $_FILES['plik']['tmp_name'];
  45. $u_nazwa = $_FILES['plik']['name'];
  46. $u_rozmiar = $_FILES['plik']['size'];
  47. $u_max_rozmiar = 2*1024*1024; //Maksymalny rozmiar pliku dozwolony do wgrania a bajtach - w przyk?adzie 2MB
  48. $uzytkownik = $_SESSION['login'];
  49. if($u_rozmiar > $u_max_rozmiar)
  50.  
  51.  
  52.  
  53. {
  54.  
  55. echo "Plik jest zbyt duzy!";
  56. } elseif(is_uploaded_file($u_plik)) {
  57. move_uploaded_file($u_plik, "upload/$u_nazwa");
  58. echo "Plik: <b>$u_nazwa</b> ($u_rozmiar B) zostal wgrany!"; }
  59.  
  60. if($u_plik) {
  61. $ins = mysql_query("INSERT INTO upload SET
  62. nazwa='$nazwa_p', sciezka='$u_nazwa', rozmiar='$u_rozmiar', uzytkownik='$uzytkownik', opis='$opis'");
  63. }
  64.  
  65.  
  66.  
  67.  
  68. ?>
  69.  
  70.  
  71.  
  72.  
  73.  


I to wszystko leci do mysql ;]
Niktoś
Cytat
To start with an AUTO_INCREMENT value other than 1, you can set that value with CREATE TABLE or ALTER TABLE, like this:

mysql> ALTER TABLE tbl AUTO_INCREMENT = 100;

To cytat z MYSQL ,u Kolegi jest AUTO_INCREMENT = 2,więc numeracja będzie zaczynała się od cyfry 2 a następny rekord będzie 4,nie wiem może się mylę.
A sprawdzałeś w phpMyAdmin czy dane w ogóle się insertowały?
szymonk237231
No ja się nie znam ;P
Ale głównie chciałbym rozwiązać mój problem tongue.gifP
pedro84
@szymonk237231 gotowego rozwiązania Ci nie dam, bo... nie.

Ale masz tutaj rady, które Ci rozwiążą ten problem:
- skoro masz userów to masz pewnie w tabeli kolumnę ID
- w momencie uploadu, zamiast nazwy podaj ID
- na stronie, na której chcesz pobrać, zapytanie z WHERE `uzytkownik`= $user

Pamiętaj tylko, że jeśli podasz, np. ID usera, na którego konto jesteś zalogowany, to pobierze Ci tylko i wyłącznie jego pliki. Działać musi, wyjścia nie ma.


Cytat(Niktoś @ 14.03.2012, 18:55:40 ) *
To cytat z MYSQL ,u Kolegi jest AUTO_INCREMENT = 2,więc numeracja będzie zaczynała się od cyfry 2 a następny rekord będzie 4,nie wiem może się mylę.

Zaczyna się od 2, ale następny to będzie 3 smile.gif
szymonk237231
Cytat(pedro84 @ 14.03.2012, 18:57:41 ) *
@szymonk237231 gotowego rozwiązania Ci nie dam, bo... nie.

Ale masz tutaj rady, które Ci rozwiążą ten problem:
- skoro masz userów to masz pewnie w tabeli kolumnę ID
- w momencie uploadu, zamiast nazwy podaj ID
- na stronie, na której chcesz pobrać, zapytanie z WHERE `uzytkownik`= $user

Pamiętaj tylko, że jeśli podasz, np. ID usera, na którego konto jesteś zalogowany, to pobierze Ci tylko i wyłącznie jego pliki. Działać musi, wyjścia nie ma.



Zaczyna się od 2, ale następny to będzie 3 smile.gif


O to mi chodzi, że ma pobierać pliki danego usera, a nie wszystkie smile.gif
A jak to zrobić?
Bo ja w jednej tabeli mam dane userów, a w drugiej dane z uploadu.
i w uploadzie nie mam ID usera

Cytat
- w momencie uploadu, zamiast nazwy podaj ID


Chodzi Ci o to, żeby zamiast nazwy użytkownika dodającego plik, wysyłało się jego ID?
pedro84
To nie dodawaj nicka tylko ID.

Tak.
szymonk237231
Cytat(pedro84 @ 14.03.2012, 18:57:41 ) *
@szymonk237231 gotowego rozwiązania Ci nie dam, bo... nie.

Ale masz tutaj rady, które Ci rozwiążą ten problem:
- skoro masz userów to masz pewnie w tabeli kolumnę ID
- w momencie uploadu, zamiast nazwy podaj ID
- na stronie, na której chcesz pobrać, zapytanie z WHERE `uzytkownik`= $user

Pamiętaj tylko, że jeśli podasz, np. ID usera, na którego konto jesteś zalogowany, to pobierze Ci tylko i wyłącznie jego pliki. Działać musi, wyjścia nie ma.



Zaczyna się od 2, ale następny to będzie 3 smile.gif


Dobra poradziłem sobie jakąś moim sposobem.
Dzięki za udzielanie się i pomoc w rozwiązaniu problemu.
Dzięki, temat do zamknięcia smile.gif
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.