Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Updateowanie rekordu w bazie
Forum PHP.pl > Forum > Przedszkole
imlegend
Witam , mam skrypt zapisujący zdjęcia na serwer, a info do bazy.
Chodzi mi o fragment tego skryptu odpowiadający za update rekordu w bazie.
Nie wiem jak powiązać wstawiane dane z id. Mianowicie gdy wstawiam wartość id = 1 - zapisuje bez problemu,
ale gdy daje "where id = $id" wtedy nic się nie dzieje. Chodzi o to żeby rekord był zupdatowany dla użytkownika o określonym id.


  1.  
  2.  
  3. //This is the directory where images will be saved
  4. $target = "wyslane/";
  5. $target = $target . basename( $_FILES['photo']['name']);
  6.  
  7. //This gets all the other information from the form
  8. $id =$_POST['id'];
  9. $name=$_POST['name'];
  10.  
  11. $pic=($_FILES['photo']['name']);
  12.  
  13. // Connects to your Database
  14. mysql_connect("x", "x", "x") or die(mysql_error()) ;
  15.  
  16. //Writes the information to the database
  17. //mysql_query("INSERT INTO `employees` VALUES ('$name', '$pic')") ;
  18.  
  19.  
  20.  
  21. mysql_query("UPDATE users SET name='$name', photo='$pic' WHERE id = $id");
  22.  
  23. //Writes the photo to the server
  24. if(move_uploaded_file($_FILES['photo']['tmp_name'], $target))
  25. {
  26.  
  27. //Tells you if its all ok
  28. echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory";
  29.  
  30. }
  31. else {
  32.  
  33. //Gives and error if its not
  34. echo "Sorry, there was a problem uploading your file.";
  35. }
  36.  
  37.  
  38.  
nospor
Widac POSTem nie idzie ID.... logiczne....

print_r($_POST);
i wszystko jasne
imlegend


Ech, jednak za szybko odtrąbiłem sukces, miałem wpisane id =1 zamiast id=$id, dlatego zapisalo.
po dopisaniu
print_r($_POST);

wyskakuje mi:

Array ( [name] => gamling )

dalej nie wiem jak to interpretować , może spróbuję innej metody niż POST? ( próbowałem już z GET)
nospor
No przeciez widzisz, ze w post nic nie masz, dokladnie o tym ci pisalem.

Skad mam wiedziec gdzie ty masz to ID usera? To ty powinienes wiedziec, gdzie to id przetrzymujesz, nie sadzisz?? Moze w sesji? Moze w ciastku ? Moze pod biurkiem? Ty to wiesz, ty to pisales
imlegend
Dobra, wciąż próbuje ale dalej nie wiem, tu podaje skrypt który odwołuje się do poprzedniego, chyba tu jest ten id, który jest potrzebny.
Swoja drogą skoro przez $_post['name'] dostaje zmienną name to nie wiem dlaczego nie dostaje id. Kod:
  1. <?php
  2.  
  3. require 'config2.php'; // Dołącz plik konfiguracyjny i połączenie z bazą
  4. require_once 'user.class.php';
  5.  
  6. /**
  7.  * Tylko dla zalogowanych użytkowników
  8.  */
  9. if (!user::isLogged()) {
  10. echo '<p class="error">Przykro nam, ale ta strona jest dostępna tylko dla zalogowanych użytkowników.</p>';
  11. }
  12.  
  13. else {
  14. $id = $_GET['id'];
  15.  
  16. /**
  17.   * Sprawdź czy użytkownik o podanym ID istnieje
  18.   */
  19. $userExist = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM users WHERE id = '$id'"));
  20.  
  21. // Użytkownik nie istnieje
  22. if ($userExist[0] == 0) {
  23. die ('<p>Przykro nam, ale użytkownik o podanym identyfikatorze nie istnieje.</p>');
  24. }
  25.  
  26. /**
  27.   * Użytkownik istnieje, tak więc pokaż jego profil
  28.   */
  29.  
  30. // Zapisz dane użytkownika o podanym ID, do zmiennej $profile
  31. $profile = user::getDataById ($id);
  32.  
  33. echo '<h1>Profil użytkownika '.$profile['login'].'</h1>';
  34.  
  35. echo '<b>Nick:</b> '.$profile['login'].'<br />';
  36. echo '<b>Email:</b> '.$profile['email'].'<br />';
  37. echo '<b>Obiekt:</b> '.$profile['obiekt'].'<br />';
  38.  
  39. echo '<b>Typ obiektu:</b> '.$profile['typ'].'<br />';
  40. echo '<b>Kod pocztowy:</b> '.$profile['kod'].'<br />';
  41.  
  42. echo '<b>Adres:</b> '.$profile['adres'].'<br />';
  43.  
  44. echo '<b>Poczta:</b> '.$profile['poczta'].'<br />';
  45.  
  46. echo '<b>Tel. stacjonarny:</b> '.$profile['tels'].'<br />';
  47.  
  48. echo '<b>Tel. komórkowy:</b> '.$profile['telk'].'<br />';
  49. echo '<b>Adres strony internetowej:</b> '.$profile['www'].'<br />';
  50.  
  51.  
  52.  
  53. echo '<img src="wyslane/'.$profile[haslo].'.'.$profile[ext].'" />';
  54.  
  55.  
  56. }
  57.  
  58.  
  59.  
  60.  
  61. ?>
  62.  
  63.  
  64. <form enctype="multipart/form-data" action="add.php" method="post">
  65. Name: <input type="text" name="name"><br>
  66.  
  67.  
  68. Photo: <input type="file" name="photo"><br>
  69. <input type="submit" value="Add">
  70. </form>
nospor
Cytat
Swoja drogą skoro przez $_post['name'] dostaje zmienną name to nie wiem dlaczego nie dostaje id.
Bo name wpisujesz w formularzu...ID nie..... samo w magiczny sposob sie nie doda
imlegend
no ale mam id w bazie, więc powinno przejśc, chyba że coś mylę
Turson
Co ty masz w ogóle za problem? Już nie kapuję.

Zrób
  1. print_r($_GET);die;
i zobacz czy masz tam id
imlegend
no mam tablice :
Array ( )
Turson
Pusta tablica = puste $id
Czemu nie trzymasz id usera w sesji?
imlegend
a jak robie tak: dopisuję

i
  1. $login = $_SESSION['login'];


oraz

  1. mysql_query("UPDATE users SET name='$name', photo='$pic' WHERE $login = marek");


żeby wstawial po loginie to otrzymuje wypisanie
  1. print_r($_SESSION);die;
: Array ( [login] => marek [pass] => f6acf43798bad672fec4735cd3b07e3f )
ale w bazie nic nie jest dodane...
viking
WHERE kolumna = 'wartosc'. U ciebie jest to kolumna marek = kolumna marek.
imlegend
pisałem też
  1. WHERE $login = 'marek'

ale nie dodaje mi danych do rekordu
Turson
WHERE login='marek' a nie $login
imlegend
Dobra, id jakoś nie mogłem wyłuskać, ale w sesji był login, więc zrobiłem dodawanie przez login.
Dzięki wszystkim, a zwłaszcza Tursonowi za przypomnienie o sesji.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.