Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: skrypt zapisuje do tabeli choć nie powinien/?/
Forum PHP.pl > Forum > Przedszkole
beginner
nie ma wogóle żadnego problemu tongue.gif
johnson
Cytat
jednak z jakis powodów  dla plików ponizej 50 k
wykonywane jest polecenie
  1. <?php
  2. $query = "INSERT into pictures (id, pic_name, main) values ('$id', '$named', 'YES') ";
  3. ?>

jak to z jakichś powodów?
przecież masz warunek:
  1. <?php
  2. if ($filesize <= 50000)
  3. ?>

czyli to co międzi {} wykona się dla plików poniżej 50 kB więc nie rozumiem Twojego zdziwienia?

Cytat
I ciekawostka ! polecenie wpisuje do tabeli  pic_name ale tylko skladową $sid  $named = "$login$sid.$app" main='YES' a nie wpisuje id.
o co tu chodzi ?


nic nie napisałeś, co to jest to $id i skąd ono się bierze, czy z formularza, czy z sesji, nic na ten temat nie wiadomo, więc trudno cokolwiek powiedzieć na ten temat.

poza tym piszesz trochę archaicznie, polecam Ci np. używanie $_FILES['userfile']['tmp_name'] zamiast $userfile

nie powinno się też pisać filesize("$userfile") tylko filesize($userfile)

funkcję SesID() też najlepiej umieścić na początku albo na końcu skryptu, a nie w środku

w tabeli pictures brak Ci również, z tego co widzę, klucza głównego, w zasadzie tą funkcję powinno tutaj pełnić id, ale u Ciebie tak nie jest, chyba, że kluczem jest pic_name, ale jak dla mnie to by było wtedy trochę przekombinowane smile.gif

poza tym po uporządkowaniu kodu, od razu widać poszczególne warunki if ... else i zawsze jest czytelne, w którym warunku akurat się znajdujesz:
  1. <?php
  2. if($userfile) {    
  3.     $filesize = filesize("$userfile");
  4.     print("<font size="2" face="Verdana" color="#0000FF">");
  5.     print("<b>Wielkosc pliku = $filesize</b><br>");
  6.     print("</font>");
  7.     if ($filesize <= 50000) {  
  8.         $imagesize = getimagesize("$userfile");
  9.         $query = "SELECT  login FROM members WHERE id = '$id' ";
  10.         $result = mysql_query($query);
  11.         $row_array =  mysql_fetch_row($result);
  12.         $login = $row_array[0];
  13.         if($imagesize[2] == 1) $app = "gif";
  14.         if($imagesize[2] == 2) $app = "jpg";
  15.         if($imagesize[2] == 3) $app = "png";
  16.         $photo=strtolower($id);
  17.         function SesID($length=4) {
  18.             global $id;  
  19.             $Pool = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  20.             $Pool .= "abcdefghijklmnopqrstuvwxyz";
  21.             $Pool .= "1234567890";
  22.             for($index = 0; $index < $length; $index++) {
  23.                 $sid .= substr($Pool, (rand()%(strlen($Pool))), 1);
  24.             }     
  25.             return($sid);
  26.         }   
  27.         srand(time());
  28.         $sid=SesID ();
  29.         $named = "$login$sid.$app";
  30.         $query = "SELECT  count(*) FROM pictures WHERE id = '$id' ";
  31.         $result = mysql_query($query);
  32.         if(!($result)) echo "nie mozna pobrac liczby zdjęc";
  33.         $row_array =  mysql_fetch_row($result);
  34.         $guest = $row_array[0];
  35.         //print("liczba do maina= $guest");
  36.         if ($guest == 0) {                
  37.             $query = "INSERT into pictures (id, pic_name, main)
  38. values ('$id', '$named', 'YES') ";
  39.             $result = mysql_query($query);    
  40.             if(!($result)) die("nie da sie zapisac maina do pictures");
  41.         } else {      
  42.             $query = "INSERT into pictures (id, pic_name) values ('$id', '$named') ";
  43.             $result = mysql_query($query);    
  44.             if(!($result)) die("nie da sie zapisac do pictures");
  45.         }         
  46.         copy($userfile, "./images/$named"); //zapisywanie pliku w images
  47.     } else {
  48.         print("<font size="2" face="Verdana" color="#0000FF">");
  49.         print("plik jest zbyt duzy Nie zapisano zdjęcia");
  50.         print("</font>");
  51.     }
  52. }
  53. ?>
beginner
Usuwam moje posty bo drażni mnie arogancja i ignorancja administracji tego serwisu...Sorki.pa tongue.gif
-----------

A Panu juz podziekowalismy ...
By It`s_me
johnson
Cytat(beginner @ 2005-12-25 23:02:26)
W tabeli pictures kluczem jest id

po co więc liczysz rekordy o takim samym id?
skoro id jest kluczem to zapytanie:
  1. <?php
  2. $query = "SELECT count(*) FROM pictures WHERE id = '$id' ";
  3. ?>

zawsze powinno dać 0, bo klucz główny powinien być zawsze unikalny

Ty jako id w tabeli pictures wstawiasz id użytkownika, co nie jest dobrym rozwiązaniem, powinieneś dodać nowe pole w tabeli np. user_id i tam przechowywać id użytkownika, natomiast id powienieneś ustanowić jako klucz główny.

Co się zaś tyczy warunku:
  1. <?php
  2. if ($filesize <= 50000)
  3. ?>

to zdaje się, że jest taka zmienna $userfile_size, a na pewno jest $_FILES['userfile']['size'], w której jest zapisany rozmiar uploadowanego pliku, nie musisz więc używać funkcji filesize().

Zobacz co wyświetla się w linijce:
  1. <?php
  2. print("<b>Wielkosc pliku = $filesize</b><br>");
  3. ?>

jeśli tutaj rozmiar jest większy niż 50000 to jak zobaczysz na przygotowany wyżej przeze mnie fragment kodu, nie jest możliwe aby wykonało się zapytanie insert ..., chyba, że od momentu Twojego pierwszego postu (z którego zapożyczyłem fragment kodu) dokonałeś już jakiś zmian w kodzie.
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.