Sprawdzenie kodu skryptu do uploadu zdjęć

0

Witam, mam problem z tym o to kodem ponieważ nie zapisuje mi scieżki w bazie danych jedynie dodaje do folderu o nazwie "photos". Ktoś wie co jest nie tak? ;/ a dopiero sie ucze php :)

include("config.php");

$sql=mysql_query("UPDATE `bbb `uzytkownicy` `photos` VALUES ('.$_FILES['plik']['name'].')");
$max_rozmiar = 1024*1024;
if (is_uploaded_file($_FILES['plik']['tmp_name'])) {
    if ($_FILES['plik']['size'] > $max_rozmiar) {
        echo 'Błąd! Plik jest za duży!';
    } else {
        echo 'Odebrano plik. Początkowa nazwa: '.$_FILES['plik']['name'];
        echo '<br/>';
        if (isset($_FILES['plik']['type'])) {
            echo 'Typ: '.$_FILES['plik']['type'].'<br/>';
        }
        move_uploaded_file($_FILES['plik']['tmp_name'],
                $_SERVER['DOCUMENT_ROOT'].'/photos/'.$_FILES['plik']['name']);
    }
} else {
   echo 'Błąd przy przesyłaniu danych!';
}
$sql = mysql_query($sql); 

a i jak jest wpisana ta wartość

.$_FILES['plik']['name'] 

to wywala mi taki blad: Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\WebServ\httpd\update.php on line 91

0

Na moje oko to powinno być:

$sql=mysql_query("UPDATE `bbb `uzytkownicy` `photos` VALUES (".$_FILES['plik']['name'].")");
0

ok bledu nie wywala, ale nie dodaje sciezki w bazie danych ;/

0

UPDATE na INSERT INTO
w dodatku wydaje mi się że to za dużo na jeden raz ale nie korzystaj z mysql_query bo to przestarzałe a sposób w który budujesz zapytanie jest podatny na SQL Injection; najlepiej użyj PDO i przekazuj parametry odpowiednimi funkcjami (nie klej zapytania ręcznie)

0

Oprócz SQL Injection pozwalasz na wysyłanie plików php. Mogę Ci wrzucić na serwer plik, który Ci wszystko usunie.

0

blokowanie plików dodam później, na razie zalezy mi tylko żeby do bazy danych dodawało ścieżkę

0

Zamień UPDATE na INSERT.

Samo zapytanie UPDATE też jest błędne.

0

Zmienilem z UPDATE na INSERT INTO i dalej nic sie nie dzieje, nie dodaje mi dalej sciezki do bazy ;/

0

To pokaż ten zmieniony kod

0

UPDATE bbb uzytkownicy `photos``
Przecież tutaj masz ewidentnie zwalone grawisy :P

0

Prosze o to jeszcze raz caly kod

include("config.php");


$sql=mysql_select_db(" INSERT INTO `bbb` `uzytkownicy` `photo`  VALUES (".$_FILES['plik']['name'].")");

$max_rozmiar = 1024*1024;
if (is_uploaded_file($_FILES['plik']['tmp_name'])) {
    if ($_FILES['plik']['size'] > $max_rozmiar) {
        echo 'Błąd! Plik jest za duży!';
    } else {
        echo 'Odebrano plik. Początkowa nazwa: '.$_FILES['plik']['name'];
        echo '<br/>';
        if (isset($_FILES['plik']['type'])) {
            echo 'Typ: '.$_FILES['plik']['type'].'<br/>';
        }
        move_uploaded_file($_FILES['plik']['tmp_name'],
                $_SERVER['DOCUMENT_ROOT'].'/photo/'.$_FILES['plik']['name']);
    }
} else {
   echo 'Błąd przy przesyłaniu danych!';
}
$sql = mysql_query($sql); 
2

A Ty wiesz, co robi funkcja mysql_select_db, poza byciem zdeprecjonowaną?

0

Wybiera baze danych

0
venoman12 napisał(a):

Wybiera baze danych

Twój kod oczekuje od niej czegoś zupełnie innego.

0

No dobrze to jak ma to wygladać? bo już nie ogarniam ;/

0
$sql=mysql_select_db(" INSERT INTO `bbb` `uzytkownicy` `photo`  VALUES (".$_FILES['plik']['name'].")");

Nawiązując do wypowiedzi @Patryk27 to nawet nie leży blisko próby wybrania bazy.

0

No zmieniłem to co dodałeś ale dalej nie robi ścieżki w bazie danych ;/

0

Wrzuuuuuć koooooooooood.

0

Patryk przecież wrzuciłem drugi raz masz już trzeci raz

include("config.php");
 
 
$sql=mysql_select_db(" INSERT INTO `bbb` `uzytkownicy` `photo`  VALUES (".$_FILES['plik']['name'].")");
 
$max_rozmiar = 1024*1024;
if (is_uploaded_file($_FILES['plik']['tmp_name'])) {
    if ($_FILES['plik']['size'] > $max_rozmiar) {
        echo 'Błąd! Plik jest za duży!';
    } else {
        echo 'Odebrano plik. Początkowa nazwa: '.$_FILES['plik']['name'];
        echo '<br/>';
        if (isset($_FILES['plik']['type'])) {
            echo 'Typ: '.$_FILES['plik']['type'].'<br/>';
        }
        move_uploaded_file($_FILES['plik']['tmp_name'],
                $_SERVER['DOCUMENT_ROOT'].'/photo/'.$_FILES['plik']['name']);
    }
} else {
   echo 'Błąd przy przesyłaniu danych!';
}
$sql = mysql_query($sql); 
0

No i widzę tam mysql_select_db.

0

No dobrze to w takim razie jak to powinno wyglądać mógł byś mi ogarnąć to żeby miało to ręce i nogi a przede wszystkim żeby działało ?

0

venoman12, Spróbuj zacząć inaczej. Jak nie korzystasz z żadnego frameworka to najpierw przepnij się na PDO, bo mysql_connect już <ort>na prawdę</ort> jest mega stare.
Tutaj masz tutorial jak zacząć - nie różni się tak bardzo od MySQL:
http://webhelp.pl/artykuly/obsluga-baz-danych-za-pomoca-pdo/
http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

Następnie spróbuj zrobić kilka prostych zapytań do bazy na statycznych danych (tzw. z palca :P), aby potrenować łączenie się z bazą (selecty, inserty, update'y).
Następnie zrób skrypt w którym będziesz uploadował plik, ale zrób statyczne zapytanie (czyli nie wstawiaj zmiennych tylko całe zapytanie od razu z testowymi danymi).

Potem jak już to wszystko Ci zadziała, zastąp tymczasowe zmienne danymi z FILES i sprawdź czy działa. Jak będziesz dalej miał problemy to napisz tutaj, ale najpierw postaraj się poszukać rozwiązania samemu w Google (wymagana znajomość angielskiego).

Pozdrawiam

0

no dobrze a nie <ort>mógł byś</ort> mi tego zrobić tak żeby działało? Zależy mi na czasie a o bibliotece PDO i tak będę czytał bo muszę to wiedzieć bo w przyszłości się nie ruszę bez tego. :/

0

Luzik, 50 złotych.
Pisz na PW, jeżeli zainteresowanyś.

1

Na "szybko" zauważ że źle łączysz się z bazą.
Najpierw poleceniem mysql_connect ustanawiasz połączenie.

<?php
$username = "your_name";
$password = "your_password";
$hostname = "localhost"; 

//connection to the database
$dbhandle = mysql_connect($hostname, $username, $password)
  or die("Unable to connect to MySQL");
echo "Connected to MySQL<br>";
?>

Potem wybierasz bazę do której chcesz się podpiąć (poleceniem mysql_select_db) wykorzystując wcześniej zdefiniowane połączenie:

<?php
//select a database to work with
$selected = mysql_select_db("examples",$dbhandle)
  or die("Could not select examples");
?>

A dopiero teraz poleceniem mysql_query wykonujesz zapytanie:

<?php
//execute the SQL query and return records
$result = mysql_query("SELECT id, model, year FROM cars");
//fetch tha data from the database
while ($row = mysql_fetch_array($result)) {
   echo "ID:".$row{'id'}." Name:".$row{'model'}."
   ".$row{'year'}."<br>";
}
?>

Na końcu możesz jeszcze zamknąć aktywne połączenie

<?php
//close the connection
mysql_close($dbhandle);
?>

Natomiast u Ciebie wykonanie zapytania jest zrobione przez mysql_select_db a nie przez mysql_query. Zastosuj u siebie w skrypcie rozwiązanie które tutaj podałem.

0

ok to sobie pozniej ogarne dzieki za kody i wytlumaczenie :)

0

Mam jeszcze pytanie czy ten kod jest pisany w pdo?

<?php
include Cfunkcje_dolacz.php'):
ity tu l - $_P0ST[' t y t u ł '] :
Sumieszczajacy - $_P0ST['umieszczajacy']:
Świadomość = $_P0ST['wiadomość']:
i f (i s s e t(S_GET[' przodek'] ) )
Sprzodek = $_GET[’przodek'] :
else
Sprzodek = S_P0ST[' przodek'] :
if(!Sobszar)
Sobszar = 1:
i f ( ! Sblad)
{
i f ( ! Sprzodek)
{
Sprzodek = 0:
i f ( ! S ty tu l)
Stytul = ' Nowa Poczta':
}
else
{
/ / pobierz nazwę artykułu
Stytul = pobierz_tytul_artykulu($przodek):
/ / dołączenie Re:
i f ( s t r s t r ( S t y t u l . 'Re: ’) == false )
Stytul » 'Re: '.S ty tu l:
/ / upewnienie się. że ty tuł będzie ciągle pasował do bazy danych
Stytul - s u b s triS ty tu l. 0. 20):
/ / przygotowanie wcięcia oryginalnej wiadomości
Świadomość = dodaj_znaki(pobierz_tekst_artykulu(Sprzodek)):
}
}
tworz_naglowek_html(Stytul):
wyświetl_nowy_artykul_form(Sprzodek. Sobszar. Stytul. Świadomość. Sumieszczajacy):
if(Sblad)
{
echo 'Wiadomość nie mogła zostać wysłana. Proszę upewnić się. że wypełnione są
wszystkie pola formularza i spróbować ponownie.':
}
tworz_stopke_html():
1

Pisany to on jest w PHP i ostro porąbany. Nie pisze się kodu w PDO - PDO to bilbioteka którą się wykorzystuje. Tutaj nie widzę żadnego elementu PDO a poza tym jak ktoś słusznie zauważył są w kodzie błędy semantyczne. Zajrzyj do linków nt. PDO podanych przez nas wcześniej, tam są konkretne przykłady wykorzystania tej biblioteki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1