[php]przesyłanie avatara danych do bazy,uplade


(batmomobil) #1

Proszę o pomoc w poprawie skryptu wysyłającego zdjęcia/avatar i dane do bazy.Skrypt nie dodaje do bazy,pokazuje błąd na stronie:

<?php

if(isset($_GET['plik']) && $_GET['plik']=='dodaj')

	{

		$p_pojemnosc=$_FILES['plik']['size'];

		$p_typ=$_FILES['plik']['type'];

		if( strpos( $p_typ, 'image/jpeg' ) === false )

   			die( 'Wybrany plik nie plikiem jpg.' );

		$p_nazwa=$_FILES['plik']['name'];

		$p_smiec=$_FILES['plik']['tmp_name'];

		$p_nazwa = strtolower($p_nazwa);

		$p_nazwa = str_replace("ż","z",$p_nazwa);

		$p_nazwa = str_replace("ą","a",$p_nazwa);

		$p_nazwa = str_replace(" ","",$p_nazwa);

		$p_nazwa = str_replace("_","",$p_nazwa);

		$p_nazwa = str_replace("ś","s",$p_nazwa);

		$p_nazwa = str_replace("ł","l",$p_nazwa);

		$p_nazwa = str_replace("ó","o",$p_nazwa);

		$p_nazwa = str_replace("ń","n",$p_nazwa);

		$p_nazwa = str_replace("ź","z",$p_nazwa);

		$p_nazwa = str_replace("ć","c",$p_nazwa);

		$p_nazwa = str_replace("ę","e",$p_nazwa);

		$sprawdzenia = substr($p_nazwa, strrpos($p_nazwa, "."));

		$p_roz= array_pop(explode(".", $p_nazwa));

		$max_size=round(($_POST['max_file_size']/6048576),3)."MB";

		$poj_MB=round(($p_pojemnosc/6048576),2).'MB';

		$p_nazwa_zm=(md5($p_nazwa)).".".$p_roz;

		$folder= "avatar/img";

		if ($p_pojemnosc <= 0)

		{

			echo ("Plik jest pusty. Nie mogę go przesłać ".$p_nazwa." ".$poj_MB.$f_koniec."");

			echo "Wracaj ...";

			exit;

		}

		if ($poj_MB > $max_size)

		{

			echo("Plik jest za duży. Maksymalnie można wysłać ".$max_size.$f_koniec.""." .Plik wysyłany ma rozmiar ".$poj_MB.$f_koniec."");

			echo "Wracaj ...";

			exit;

		}

		if (file_exists($folder.$p_nazwa_zm))

		{

			echo ("Plik o takiej nazwie jest już na serwerku ".$p_nazwa_zm."");

			echo "Wracaj ...";

			exit;

		}

		else

		{

			if(!move_uploaded_file($p_smiec, $folder.$p_nazwa_zm))

				exit('Nie można zachować pliku. Prawdopodobnie nie ma folderu lub nie można w nim zapisać');

			echo "Przesłanie udało się - ".$p_nazwa.""." ".$poj_MB."";

			$path_file=$folder.$p_nazwa_zm; } if(isset($_POST['plik'])){

   $imie=addslashes(htmlspecialchars($_POST['imie']));;

   $nazwisko=addslashes(htmlspecialchars($_POST['nazwisko'])); $opis=addslashes(htmlspecialchars($_POST['opis']));	

			$query = "INSERT INTO uzytkownicy (`avatar`,`imie`,`nazwisko`,`opis`) VALUES ('$path_file','$imie,'$nazwisko',`$opis`)";

			$zapytanie = mysql_query($query);

			if(!$zapytanie)

			{

				echo "Wykonanie zapytania zawiodło. " . mysql_error();

			}

else {

      echo 'Twoj profil zostal dodany.';

   }

   echo '';

 }	echo 'zobacz dodany profil';

		}

	}

}

Gdzie mam błąd! !!


(ra-v) #2

O 2 nawiasy } na dole za dużo? Żebyś nie robił śmietnika z niektórymi tabulacjami to byś widział:wink:


(batmomobil) #3

sorry,ale jak bym widział błąd to bym nie prosił o pomoc!!


(ra-v) #4

Po prostu pobierz sobie jakiś edytor z podświetlaniem nawiasów (ConTEXT, Geany, Bluefish....). Jeśli najedziesz na głównego if-a to ci ładnie pokaże gdzie on się kończy, i nawet w duuuużym bałaganie to znajdziesz.


(batmomobil) #5

staram się,ale nie wiem o co chodii!!


(Kolas1986) #6

tak na prawdę to nawet nie wkleiłeś jaki błąd ci leci tylko cały kod i czekasz na gotowe, szczerze to nawet nie próbowałem zrozumieć twojego kodu, ale z dopóki lecą błędy dość łatwo znaleźć problem, wystarczy trochę nad nim pomyśleć.

To że ktoś wskaże Ci co masz dokładnie poprawić nic Cię nie nauczy i za chwile wkleisz kolejny kawał "jakiegoś" kodu bo znowu Ci nie działa.

Pozdrawiam


(ra-v) #7

Chodzi o to że zasugerowałem że w tym fragmencie są 2 nawiasy za dużo, czyli ja bym je usunął i sprawdził czy działa. Chyba ze wkleiłeś jak ci się zaznaczyło, to wtedy pomóc może jedynie wklejenie na forum błędów wyświetlanych na WWW.


(batmomobil) #8

ra-V próbowałem i nic,prawdopodobnie gdzieś jest tutaj błąd ponieważ pokazuje,że uzupełnij wszystkie pola

<?php

if(isset($_GET['plik']) && $_GET['plik']=='dodajopis')

{

	require 'db.php';

	if(!empty($_POST['opis']))

	{ $nazwa=$_POST['ksywa']; $nazwisko=$_POST['nazwisko'];

		$opis=$_POST['opis'];

	}

	else

	{

		$opis='Brak opisu';

	}

	if(empty($nazwa) ||(empty($nazwisko) || empty($opis))

	{

		echo "Musisz wypełnić wszystkie pola";

		exit;

	}

jak inaczej zapisać if-a. :smiley:


(Kolas1986) #9

jeżeli w formularzu uzupełniasz wszystkie pola to nie masz z posta odczytujesz nie te wartości albo bo pole $opis masz zawsze ustawione więc tylko $nazwa lub $nazwisko jest puste, spróbuj wypisać te zmienne i zobacz czy maja jakąś wartość po submicie

co do ifa to wydaje się względnie dobrze napisany jeśli wszystkie pola mają być wypełnione


(ra-v) #10

Przed

if(isset($_GET['plik']) && $_GET['plik']=='dodajopis')

zrób sobie

echo '

';

var_dump($_GET);

var_dump($_POST);

echo '

'; [/code]

oraz pokaż kod HTML formularza.


(batmomobil) #11

Tak wygląda formularz:

<?php

if(isset($_GET['plik']) && $_GET['plik']=='opisz')

	{

		echo '

Imie: 

Nazwisko: 


Opis profilu: 




 																																																																																													';

	}

(ra-v) #12

No ale nie napisałeś czy błąd występuje, jaki to komunikat oraz co wyświetla ten kod co niżej po usunięciu błędu

echo '

';

var_dump($_GET);

var_dump($_POST);

echo '

';[/code]

Formularz i kod PHP wydaje się na oko dobrze pomyślany, tylko gdzieś nam coś uciekła, a to co nam uciekło to nam komunikat powie.