wysyłanie informacji o pliku do mysql

Odpowiedz Nowy wątek
2011-08-29 12:42
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:)

edytowany 6x, ostatnio: mato2123, 2011-08-29 13:01

Pozostało 580 znaków

2011-08-29 13:04
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ć.


Pozostało 580 znaków

2011-08-29 13:13
0

lipa nie dodaje scieżki do imagelocation

Spróbuj gez "where id=$userid" i powiedz, czy zadziała. Przyjąłem, że rekord już istnieje, dlatego (jeżeli nie istniał) do bazy nic nie zostało dodane. - Patryk27 2011-08-29 13:21

Pozostało 580 znaków

2011-08-29 13:40
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

Pozostało 580 znaków

2011-08-29 15:17
0

Czyli sprawa jest taka:
Mamy tabelę prawie wypełnioną, np.:tak:
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"]


edytowany 5x, ostatnio: Patryk27, 2011-08-29 15:20

Pozostało 580 znaków

2011-08-30 01:21
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/


Women were the reason I became a monk - and, ah, the reason I switched back...
edytowany 1x, ostatnio: Demonical Monk, 2011-08-30 01:21

Pozostało 580 znaków

2011-08-30 15:50
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 ;

edytowany 2x, ostatnio: mato2123, 2011-08-30 15:51

Pozostało 580 znaków

2011-09-01 21:50
0

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

Pozostało 580 znaków

2011-09-02 07:25
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

Tak, tak - pomyliłem się. Zamiast "INSERT INTO" miałem dać "UPDATE", ale spieszyłem się :P - Patryk27 2011-09-02 14:31
Dlaczego niby nie nazywać tabeli users? Nie zauważyłem, żeby ta nazwa była zarezerwowana dla mysql'a - konrados 2011-09-02 19:07

Pozostało 580 znaków

2011-09-02 12:40
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...


Women were the reason I became a monk - and, ah, the reason I switched back...
Czytaj ze zrozumieniem. napisałem wyraźnie: "Jeśli chcesz mieć błąd to robisz:" i dałem jego kod, czyli INSERT z WHERE - Marcin.Miga 2011-09-02 13:56
"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();" to po co to? skoro na pierwszy rzut oka widać where w insercie... - konrados 2011-09-02 19:09
Ty widzisz i ja widzę. Pytacz nie widział, dlatego mu to napisałem. Wyobraź sobie, że na forum nie przychodzi się tylko po gotowce, lecz także po to, by się czegoś nauczyć... - Marcin.Miga 2011-09-02 21:46
Właśnie takie podejście praktykujemy, tylko trzeba do niego podchodzić z głową i nie mieszać nowym. - Demonical Monk 2011-09-02 21:47
Ponownie zachęcam do przeczytania pierwszego komentarza pod tym postem. - Marcin.Miga 2011-09-02 21:48

Pozostało 580 znaków

2011-09-02 14:25
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

To wklej jeszcze wygenerowanego query. - Marcin.Miga 2011-09-02 14:49
Ja [CIACH!], potrzebujecie całej ceremonii udostępniania skryptu, debugowania treści wygenerowanego zapytania i śledzenia błędów MySQL żeby ten WHERE w końcu stamtąd usunąć (albo zmienić operację na UPDATE)? - Demonical Monk 2011-09-02 15:52
Skoro mu prostytutka napisałem poprawnego SQL, a ten gada, że ma błąd, to chcę się dowiedzieć, czy np. gdzieś nie zabrakło mu spacji. - Marcin.Miga 2011-09-02 16:28
Skoro mu mieszasz w głowie to nic dziwnego, sam mu kazałeś to wkleić "mysql_query("INSERT INTO users SET imagelocation='avatars/$image_name' WHERE user_id=$userid"); echo mysql_error();" - konrados 2011-09-02 19:12

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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