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
(ra-v)
24 Grudzień 2010 20:39
#2
O 2 nawiasy } na dole za dużo? Żebyś nie robił śmietnika z niektórymi tabulacjami to byś widział;)
sorry,ale jak bym widział błąd to bym nie prosił o pomoc!!
ra-v
(ra-v)
24 Grudzień 2010 21:01
#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.
staram się,ale nie wiem o co chodii!!
kolas86
(Kolas1986)
24 Grudzień 2010 22:07
#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
(ra-v)
25 Grudzień 2010 21:36
#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.
ra-v:
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.
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.
kolas86
(Kolas1986)
26 Grudzień 2010 10:32
#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
(ra-v)
26 Grudzień 2010 19:46
#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
(batmomobil)
26 Grudzień 2010 20:12
#11
Tak wygląda formularz:
<?php
if(isset($_GET['plik']) && $_GET['plik']=='opisz')
{
echo '
Imie:
Nazwisko:
Opis profilu:
';
}
ra-v
(ra-v)
29 Grudzień 2010 19:55
#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.