wysyłanie informacji o pliku do mysql

0

Witam
Jestem początkujacy w php i proszę was o pomoc
Robię upload avatara na server przez osoby tylko zalogowane na stronie i chciałbym aby dodawłao mi do niego ścieżkę w polu imagelocation w bazie danych w tabeli którą niżej dodałem .Wiem że to trudno nazwać uploadem ale chodzi mi na

plik wysyłający zdjęcie:

 
<?php
include 'funkcje.php';

if(!logged_in()) {
  header('Location: index.php');
  exit();
}

include 'template/header.php';

if (isset($_FILES['imagefile'])) {
$image_temp = $_FILES['imagefile']['tmp_name'];
$image_name = $_FILES['imagefile']['name'];

move_uploaded_file($image_temp,'avatars/'.$image_name);

}

?>


</html>
<form action="" method=post enctype="multipart/form-data">
  Wybierz plik: <input type="file" name="imagefile"><br>
  <input type="submit" name="wysylanie" value="Upload File">
</form>

i tabela w bazie danych:

CREATE TABLE IF NOT EXISTS users (
user_id int(11) NOT NULL AUTO_INCREMENT,
email varchar(255) NOT NULL,
name varchar(35) NOT NULL,
password varchar(32) NOT NULL,
imagelocation varchar(100) NOT NULL,
PRIMARY KEY (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=19 ;

$zalogowany użytkownik = $_SESSION['user_id'];

Proszę o pomoc i z góry dziękuje za wszystkie wypowiedzi:)

0

1.Temat do newbie.
2.Chodzi o takie coś?

$userid = $_SESSION['userid']; //Trzeba by było dodać jakieś sprawdzanie, czy to liczba, itd.
mysql_query("INSERT INTO users SET imagelocation='avatars/$image_name' WHERE id=$userid");
move_uploaded_file($image_temp,'avatars/'.$image_name);
 
}

Długo nie pisałem w PHP oraz MySQL, więc mogło mi się coś pomieszać, ale powinno działać.

0

lipa nie dodaje scieżki do imagelocation

0

bez WHERE user_id=$userid tworzy sciężke w imagelocation ale w innym wierszu nie w tym co który użytkownik jest zalogowany
dokładnie to tworzy nowy user_id

0

Czyli sprawa jest taka:
Mamy tabelę prawie wypełnioną, np.
user_id | email | name | password | imagelocation
0 | [email protected] | Patryk | 207050008449492062756299579801052728507
Po wysłaniu pliku (lub przed) mamy wypełnić pole imagelocation.
Więc tak:
1.Pobieramy user_id, które jest w $_SESSION["userid"] i wpisujemy do zmiennej $userid
2.Wykonujemy kod:

mysql_query("INSERT INTO users SET imagelocation='avatars/$image_name' WHERE id=$userid");

W kroku pierwszym może wystąpić błąd, ponieważ:
a) Pole userid nie istnieje w tablicy $_SESSION

W kroku drugim może wystąpić błąd, ponieważ:
a) W zmiennej $image_name występuje apostrof (')
b) Pole $userid jest puste, lub zawiera numer, który wskazuje na nieistniejący rekord.

Czy jesteś pewien, że w $_SESSION["userid"] jest poprawne ID usera (tzn, że rekord z tym polem istnieje w bazie danych)?

Pani Edyta:
My fail, spróbuj zamiast $_SESSION["userid"] dać $_SESSION["user_id"]

0

Patryk, do cholery! Naucz się MySQLa zanim zaczniesz pomagać!!!

1.Temat do newbie.

Takiego idiotyzmu:

mysql_query("INSERT INTO users SET imagelocation='avatars/$image_name' WHERE id=$userid");

To nawet w newbie bym się wstydził.

CZYTAJ:
http://it.dth.pl/insert-into-kurs-jezyka-sql-mysql-cz-3/
http://it.dth.pl/insert-into-kurs-jezyka-sql-mysql-cz-3/
http://it.dth.pl/insert-into-kurs-jezyka-sql-mysql-cz-3/

0

Moje pliki znajduja sie w załączniku jak możecie pomóżcie nie wiem czemu nie chce sie zapisywac w kolumnie imagelocation

tabel w bazie danych:

CREATE TABLE IF NOT EXISTS users (
user_id int(11) NOT NULL AUTO_INCREMENT,
email varchar(255) NOT NULL,
name varchar(35) NOT NULL,
password varchar(32) NOT NULL,
imagelocation varchar(100) NOT NULL,
PRIMARY KEY (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=19 ;

0

jak możecie pomóżcie bo dużo próbowałem i nie mogę sobie nadal z tym poradzić
Proszę

1

Jeśli chcesz dodać nowy wpis do tabeli to robisz:

mysql_query("INSERT INTO users(email,name, password,imagelocation) VALUES('$email','$name','$password','avatars/$image_name')");

Jeśli chcesz zmodyfikować rekord o danym user_id to robisz:

mysql_query("UPDATE users SET imagelocation='avatars/$image_name' WHERE user_id=$userid");

Jeśli chcesz zrobić coś innego, to robisz coś innego.
Jeśli chcesz mieć błąd to robisz:

mysql_query("INSERT INTO users SET imagelocation='avatars/$image_name' WHERE user_id=$userid");

Czyli twój oryginalny kod, tylko przydałoby się jeszcze wiedzieć jaki to błąd:

mysql_query("INSERT INTO users SET imagelocation='avatars/$image_name' WHERE user_id=$userid");
echo mysql_error();

I nie nazywaj tabeli users

0

Zróbcie mi łaskę i wyciągnijcie wreszcie sami ten wniosek, że WHERE nie ma praktycznego zastosowania i prawa bytu w zapytaniu typu INSERT...

0

mój błąd to

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE user_id=7' at line 1

0

masz moją tabele bazy danych i cały skrypt w zalączniku przerób to jak możesz żeby działało nie wiem co źle robię

tabela w bazie danych:

CREATE TABLE IF NOT EXISTS users (
user_id int(11) NOT NULL AUTO_INCREMENT,
email varchar(255) NOT NULL,
name varchar(35) NOT NULL,
password varchar(32) NOT NULL,
imagelocation varchar(100) NOT NULL,
PRIMARY KEY (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=19 ;

0

Ok dzięki za pomoc udało się z funkcją UPDATE naprawde dziękuje tyle się z tym męczyłem...:)

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