Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Zapisywanie wartości do bazy danych
Gregoire
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 20.05.2010

Ostrzeżenie: (0%)
-----


Witam,

Jaki czas temu udało mi się napisać skrypt, który aktualizował dwie tabele w bazie danych odnośnie monitorowania ściągnięć plików.
jedna tabela zbiera ilości ściągnięć danego pliku
druga historie wszystkich ściągnięć: czas z jakiego serwera itp.

Skrypt działał przez długo czas poprawnie ale niestety nagle przestał. oto ten skrypt:
  1. <?php
  2. $plik = $_GET['plik']; //pobiera nazwę pliku, który użytkownik chce pobrać
  3. $baza_ip = '127.0.0.1'; //adres bazy danych
  4. $baza_uzytkownik = 'nazwa'; //nazwa użytkownika bazy
  5. $baza_haslo = 'haslo'; //hasło dla danego użytkownika bazy
  6. $baza = 'baza'; //nazwa bazy glównej
  7. $baza_zrodlo1 = 'dr_sciagnieteile'; //tabela, w której są zapisywane wpisy o ilości pobrań
  8. $baza_zrodlo = 'dr_sciagnietekto' ;
  9. $folder_z_plikami = 'sciezka/'; //tutaj będą znajdować się pliki do pobrania
  10. //sprawdzam czy zmienna plik jest pusta, jeżeli jest pusta nie wywołuję
  11. //dalej kodu tylko informuję o błędzie.
  12. //sprawdzam czy zmienna plik jest pusta, jeżeli jest pusta nie wywołuję
  13. //dalej kodu tylko informuję o błędzie.
  14. //...
  15.  
  16. if ($plik != '')
  17. {
  18. //sprawdzam czy podany plik istnieje na serwerze
  19. if (!file_exists($folder_z_plikami . $plik))
  20. {
  21. //jeżeli plik nie istnieje to nie wykonuję dalszych operacji tylko
  22. //wyświetlam informację o błedzie
  23. print "Podany plik: $plik nie istnieje";
  24. }
  25. else
  26. {
  27. @$db = mysql_connect($baza_ip, $baza_uzytkownik, $baza_haslo);
  28. /*
  29.   Powyższym kodem łączę się z bazą danych mySQL korzystając ze
  30.   stałych zdefiniowanych na początku skryptu. Znak małpy przed zmienną
  31.   $db konieczny jest ze względu na możliwość wystąpienia błędu, który jeżeli
  32.   i tak zaistnieje to i tak zostanie znaleziony za chwilę.
  33.   */
  34. if ($db) //sprawdzam czy zostaliśmy połączeni z bazą
  35. { //Jeżeli tak wykonujemy poniższe czynności
  36. mysql_select_db($baza); //ustawiam nazwę bazy danych
  37.  
  38. //sprawdzam czy w tabeli $baza_zrodlo istnieje nazwa naszego pliku
  39. $result = mysql_query("SELECT * FROM $baza_zrodlo1 WHERE nazwapliku='$plik' ");
  40. //sprawdzam ile razy występił wpis o nazwie pliku w $plik
  41. $num = mysql_num_rows($result);
  42.  
  43. if($num >= 1) //jeżeli występuje jeden plik, lub więcej o tej nazwie to...
  44. {
  45. //...poberam do zmiennej $ile ilość pobrań danego pliku <- w tym miejscy
  46. mysql_select_db($baza); //wybieram bazę
  47. function IleRazyPobrano($plik, $baza, $baza_zrodlo1)
  48. {
  49. //wybieram bazę
  50. //wysyłam zapytanie do bazy o liczbę ściągnięć
  51. $ilerazy = mysql_query("SELECT iloscpobran FROM $baza_zrodlo1 WHERE nazwapliku = '$plik'");
  52. //pobieram wynik w komórki, którą otrzymałem w zmiennej $ilerazy
  53. $wynik = mysql_fetch_row($ilerazy);
  54. //zwracam pierwszy wynik ponieważ zmienna $wynik jest typu array
  55. return $wynik[0];
  56. }
  57. // korzystam ze skryptu "pobrano.php"
  58. $ile = IleRazyPobrano($plik, $baza, $baza_zrodlo1);
  59. $nowy = $ile+1; // dodaję jedno pobranie
  60.  
  61.  
  62. //Tutaj rozpoczyna się już właściwie pobieranie pliku
  63.  
  64.  
  65. header('Pragma: no-cache'); //ustawiamy: aby zawartość nie była cache'owana,
  66. header('Content-Transfer-Encoding: binary'); //zawartość wysyłanego pliku jest binarna,
  67. header('Content-type: application/xls'); //aplikacja odpowiedzialna za plik,
  68. header("Content-Disposition: attachment; filename=$plik"); //nazwa pliku,
  69. header("Location: http://adres strony/$plik"); //zródło pliku.
  70.  
  71. //koniec części odpowieadającej za pobieranie
  72.  
  73. //wysyłam do bazy prośbę o uaktualnienie wpisu ilości pobrań
  74. $czas=date("Y.m.d - G:i:s, D");//'{$_SERVER['REMOTE_ADDR']}', '$hostname', '$plik' , '{$_SERVER["HTTP_REFERER"]}', '{$_SERVER["HTTP_USER_AGENT"]}'
  75. $hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);
  76. mysql_query("Insert INTO $baza_zrodlo VALUES ('', '$czas')");
  77. $rezultat = mysql_db_query("gregoire", $query);
  78. mysql_query("update $baza_zrodlo1 set iloscpobran=$nowy where nazwapliku='$plik'");
  79.  
  80. // wysyłanie mail' z info o sciagnieciu
  81. if ($plik == "konkretny_plik.pdf") {
  82. $tresc = "Sciagnieto Twoj abstrakt \"{$plik}\" .\r\n\r\nCzas: ".$czas."\r\nHost: ".$hostname." (".$_SERVER['REMOTE_ADDR'].")\r\nZ łącza: ".$_SERVER["HTTP_REFERER"]."\r\npo raz:".$nowy."\r\n ";
  83. mail( "adres@tlen.pl", "OD", $tresc, "From: tytuł<adres@tlen.pl>\r\n" );
  84. }
  85. }
  86.  
  87. else // jeżeli nie znaleziono pliku w tabeli o tej nazwie to...
  88. {
  89. //wysyłamy prośbę o dodanie pliku z wartością 1 ściągnięcia
  90. mysql_query("insert into $baza_zrodlo1 values ('$plik', 1)");
  91. $czas=date("Y.m.d - G:i:s, D");
  92. $hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);
  93. mysql_query("insert into $baza_zrodlo values ('', '$czas', '{$_SERVER['REMOTE_ADDR']}', '$hostname', '$plik' , '{$_SERVER["HTTP_REFERER"]}', '{$_SERVER["HTTP_USER_AGENT"]}')");
  94.  
  95.  
  96. if ($plik == "konkretny_plik.pdf") {
  97. $tresc = "Sciagnieto Twoj abstrakt \"{$plik}\" .\r\n\r\nCzas: ".$czas."\r\nHost: ".$hostname." (".$_SERVER['REMOTE_ADDR'].")\r\nZ łącza: ".$_SERVER["HTTP_REFERER"]."\r\npo raz:".$nowy."\r\n ";
  98. mail( "adres@tlen.pl", "Doktoranci Info", $tresc, "From: tytuł<adres@tlen.pl>\r\n" );
  99. }
  100. //Poniższe wysyłanie jest identyczne jak w przypadku powyższym
  101. header('Pragma: no-cache');
  102. header('Content-Transfer-Encoding: binary');
  103. header('Content-type: application/xls'); //aplikacja odpowiedzialna za plik,
  104. header("Content-Disposition: attachment; filename=$plik"); //nazwa pliku,
  105. header("Location: http://adres strony"); //zródło pliku.
  106. //koniec wysyłania
  107. }
  108. mysql_close($db); //kończę połącznie z bazą danych
  109. }
  110. else
  111. {
  112. //jeżeli nie można połączyć się z bazą mySQL wyświetl komunikat o błędzie
  113. print "Błąd: Nie mogę połączyć się z bazą danych";
  114. }
  115. }
  116. }
  117. else
  118. {
  119. //jeżeli zostały wysłane złe dane do skryptu wyświetl błąd
  120. print "Błąd wywołania skryptu!!!";
  121. }
  122. ?>

najdziwniejsze jest to, że jedna tabela z ilością ściągnięć cały czas jest aktualizowana. Problem jest z tą drugą.
nie zapisuję mi wartości do niej tak jakby komenda "insert" nie działała. nawet mail jest wysyłany.

przejrzałem historię i wynika z niej, że błąd prawdopodobnie pojawił się po zmianie z php4 na php5. Czy możliwe, żeby zmieniła się składnia komendy "insert"?(IMG:style_emoticons/default/questionmark.gif)
Uprawnienia użytkownika są ustawione na full za pomocą MYSQL Administrator. Ja już nie mam pomysłu.
co mogło się stać.

Bardzo proszę o pomoc.

dziękuję przepraszam jeśli jestem w złym dziale ale jestem tu nowy.

Ten post edytował Gregoire 20.05.2010, 15:17:37
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 17.09.2025 - 12:17