Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] [MySQL] Avatar użytkownika
Forum PHP.pl > Forum > Przedszkole
Michelangelo
Witam serdecznie,
drążę ten problem od paru dni i już mi brakuje pomysłów. Jestem początkujący w tej tematyce, chcę rozwijać wiedzę na ten temat, ale czas mnie goni i doszedłem do wniosku, że tutaj może znajdę pomoc. Wypytałem wujka google jak tylko potrafiłem lecz bez skutku.

Mój problem polega na tym, że mając już gotowy profil użytkownika, chcę dodać jeszcze możliwość uploadowania zdjęcia i przypisywania go do indeksu. Oddzielnie jak na sztywno wpiszę nr indeksu i w oddzielnym pliku zainicjuję wgrywanie to wszystko działa. Problemem staje się dla mnie przypisanie zmiennej i wkomponowanie tego w obecny cały panel.

Tak więc moje pytanie brzmi: jak połączyć jedno z drugim żeby działało? Przede wszystkim nie rozumiem na jakiej zasadzie łączyć dwa formularze i razem wysyłać te dane.

PS: nie raz czytałem tego typu fora i wiem, że za prośbę o gotowe rozwiązanie użytkownik był mieszany z błotem, dlatego oczekuję przynajmniej wskazówek, które takiemu laikowi jak ja pozwolą domyśleć się na jakiej zasadzie ma to działać.

Dziękuję.


admin.php

  1. <?
  2. include ("includes.inc");
  3. check_rights("admin = 1");
  4. connect_db(); // połączenie z bazą
  5.  
  6. switch($flow){
  7.  
  8. ############################## Wprowadzenie nowego członka
  9. case insert:
  10.  
  11.  
  12. <form method='POST' action='{$_SERVER['PHP_SELF']}'>
  13.  
  14. <!--Imię:--> <input type='text' value='{$line["name"]}' name='name' size='20'>
  15. <!--Nazwisko:--> <br><input type='text' value='{$line["lastname"]}' name='lastname' size='20'>
  16. <!--Telefon:--><input type='text' name='tel_kom' size='20'><br>
  17. <!--E-mail:--><input type='text' name='email' size='20'><br>
  18. <!--GG:--><input type='text' name='gadugadu' size='20'><br>
  19. <!--Skype:--><input type='text' name='skype' size='20'><br>
  20.  
  21. <input type='hidden' name='flow' value='insert_query'>
  22.  
  23.  
  24. <button type='submit'><img src='img/modyfikuj.png'></button>
  25. </form>
  26. ";
  27. break;
  28.  
  29. #################### funkcja edycji wpisów
  30. case update:
  31. $query_get_form_data = 'SELECT `name` , `lastname` , `telkom` , `gadugadu` , `email` , `skype`, `index` ' . ' FROM `users` ' . ' WHERE 1 AND `index` ' . ' LIKE \''.$entry.'\' ';
  32. $result = mysql_query($query_get_form_data) or die("Query failed : " . mysql_error());
  33.  
  34. $line = mysql_fetch_array($result, MYSQL_ASSOC);
  35. echo "<form method='POST' action='{$_SERVER['PHP_SELF']}'><p>
  36.  
  37. <!--Imię:--> <input type='text' value='{$line["name"]}' name='name' size='20'>
  38. <!--Nazwisko:--> <br><input type='text' value='{$line["lastname"]}' name='lastname' size='20'>
  39. <!--Stanowisko:--><br><select name='stanowisko'>
  40. <!--Telefon:--><input type='text' name='telkom' value='{$line["telkom"]}' size='20'><br>
  41. <!--E-mail:--><input type='text' name='email' value='{$line["email"]}' size='20'><br>
  42. <!--GG:--><input type='text' name='gadugadu' value='{$line["gadugadu"]}' size='20'><br>
  43. <!--Skype:--><input type='text' name='skype' value='{$line["skype"]}' size='20'><br>
  44. <input type='hidden' name='flow' value='query_update'><input type='hidden' name='index' value='{$line["index"]}'>
  45. <button name='B3' type='submit'><img src='img/modyfikuj.png'></button></form>";
  46. break;
  47.  
  48.  
  49. case insert_query:
  50. // zapytanie wprowadzające dane do tabeli
  51.  
  52. $query_insert = 'INSERT INTO `users` ( `name` , `lastname` , `stanowisko` , `telkom` , `gadugadu` , `email` , `skype` ) ' . ' VALUES ( \''.$name.'\' , \''.$lastname.'\' , \''.$group.'\' , \''.$tel_kom.'\' , \''.$gadugadu.'\' , \''.$email.'\' , \''.$skype.'\');' . ' ';
  53. mysql_query($query_insert) or die("Query failed : " . mysql_error());
  54. unset($flow);
  55. break;
  56.  
  57. case del:
  58. $query_del = "DELETE FROM `users` WHERE `index` = '{$entry}'";
  59. mysql_query($query_del) or die("Query failed : " . mysql_error());
  60. unset($flow);
  61. break;
  62.  
  63. case query_update:
  64.  
  65. $query_update = 'UPDATE `users` SET `name` = \''.$name.'\', `lastname` = \''.$lastname.'\', `telkom` = \''.$telkom.'\' , `gadugadu` = \''.$gadugadu.'\' , `email` = \''.$email.'\' , `skype` = \''.$skype.'\' WHERE `index` = \''.$index.'\' LIMIT 1';
  66. mysql_query($query_update) or die("Query failed : " . mysql_error());
  67. unset($flow);
  68. break;
  69.  
  70.  
  71.  
  72.  
  73.  
  74. ?>




plik upload_avatar.php

  1. <?php
  2. include("includes.inc");
  3. connect_db();
  4. $_SESSION['index']='tutaj_wpisuję_na_sztywno_nr_indeksu_i_wtedy_wszystko_dziala';
  5.  
  6. $username = $_SESSION['index'];
  7.  
  8. if ($_POST['submit'])
  9. {
  10. //identyfikacja atrybutów
  11. $name = $_FILES["fotka"]["name"];
  12. $tmp_name = $_FILES["fotka"]["tmp_name"];
  13.  
  14. if ($name)
  15. {
  16. //upload process
  17. $location = "zdjecia/$name";
  18. move_uploaded_file($tmp_name,$location);
  19.  
  20. $query_update = 'UPDATE `users` SET `zdjecie` = \''.$location.'\' WHERE `index` = \''.$username.'\' LIMIT 1';
  21.  
  22. mysql_query($query_update) or die("Query failed : " . mysql_error());
  23.  
  24. }
  25. else
  26.  
  27. }
  28.  
  29. echo"<form action='upload_avatar.php' method='POST' enctype='multipart/form-data'>
  30. <input type='file' name='fotka'>
  31. <input type='submit' name='submit' value='Ładuj'>
  32. </form>";
  33.  
  34. ?>
thek
W takich wypadkach nie twórz 2 formularzy, ale scal go w jeden. Zrób jednak dwa przyciski sub.mit o różnych name. Na czym bowiem to polega? Pomyśl. masz formularz w którym możesz edytować sobie dane, włącznie z avatarem. Jeśli wyślesz wszystko za jednym zamachem, to masz wszystkie konieczne dla Ciebie dane, w tym index. W takiej sytuacji upload będzie częścią składowo całego formularza i jedynie będziesz sprawdzał zmienną $_FILES czy coś zawiera by ewentualnie dodać ów avatar. Może jednak interesować Cię jedynie upload avatara i do tego możesz sobie zrobić drugi submit, który związany jest jedynie z uploadem avatara. Po jego kliknięciu będzie Cię interesowała jedynie tablica $_FILES i zmienna przechowująca index, by zaktualizować pole w bazie. Po stronie skryptu jedynie będziesz musiał przechwycić który z submitów wciśnięto. Jako że w normalnym działaniu (nie licząc preparowania $_POST przez cURL czy inne tego typu narzędzia) możliwe jest przesłanie jedynie jednego submita, to chyba użycia if( isset() ) {} elseif( isset() ) {} tłumaczyć nie będę musiał wink.gif
Michelangelo
Czarna magia. Spróbowałem scalić to tak jak sugerowałeś.

Umieściłem pole formularza do tego już istniejącego. Do "case query_update:" dopisałem to co było w pliku upload_avatar.php oraz dodałem pole "zdjecie" do tych wszystkich aktualizowanych. Jednak po tym zabiegu nic się nie dzieje... plik nie wgrywa się i nie ma żadnego wpisu w bazie, coś źle robię?

Jeżeli wykazuję się totalnym laictwem to z góry przepraszam wink.gif


  1. <?
  2. include ("includes.inc");
  3. check_rights("admin = 1");
  4. connect_db(); // połączenie z bazą
  5.  
  6. switch($flow){
  7.  
  8. #################### edycja
  9. case update:
  10. $query_get_form_data = 'SELECT `imie` , `lastname` , `telkom` , `gadugadu` , `email` , `skype`, `index` ' . ' FROM `users` ' . ' WHERE 1 AND `index` ' . ' LIKE \''.$entry.'\' ';
  11. $result = mysql_query($query_get_form_data) or die("Query failed : " . mysql_error());
  12.  
  13. $line = mysql_fetch_array($result, MYSQL_ASSOC);
  14. echo "<form method='POST' action='{$_SERVER['PHP_SELF']}'><p>
  15.  
  16. <!--Imię:--> <input type='text' value='{$line["name"]}' name='imie' size='20'>
  17. <!--Nazwisko:--> <br><input type='text' value='{$line["lastname"]}' name='lastname' size='20'>
  18. <!--Stanowisko:--><br><select name='stanowisko'>
  19. <!--Telefon:--><input type='text' name='telkom' value='{$line["telkom"]}' size='20'><br>
  20. <!--E-mail:--><input type='text' name='email' value='{$line["email"]}' size='20'><br>
  21. <!--GG:--><input type='text' name='gadugadu' value='{$line["gadugadu"]}' size='20'><br>
  22. <!--Skype:--><input type='text' name='skype' value='{$line["skype"]}' size='20'><br>
  23.  
  24.  
  25. <input type='file' name='fotka'> // <-- tutaj dodałem formularz
  26.  
  27.  
  28. <input type='hidden' name='flow' value='query_update'><input type='hidden' name='index' value='{$line["index"]}'>
  29. <button type='submit'><img src='img/modyfikuj.png'></button></form>";
  30. break;
  31.  
  32.  
  33. case query_update:
  34. if ($_POST['submit']) // to dopisałem
  35.  
  36. //identyfikacja atrybutów // to dopisałem
  37. $name = $_FILES["fotka"]["name"]; // to dopisałem
  38. $tmp_name = $_FILES["fotka"]["tmp_name"]; // to dopisałem
  39.  
  40. if ($name) // to dopisałem
  41. {
  42. //upload process // to dopisałem
  43. $location = "zdjecia/$name"; // to dopisałem
  44. move_uploaded_file($tmp_name,$location); } // to dopisałem
  45.  
  46. $query_update = 'UPDATE `users` SET `imie` = \''.$imie.'\', `lastname` = \''.$lastname.'\', `group` = \''.$group.'\' , `telkom` = \''.$telkom.'\', `gadugadu` = \''.$gadugadu.'\' , `email` = \''.$email.'\' , `skype` = \''.$skype.'\' , `zdjecie` = \''.$location.'\' WHERE `index` = \''.$index.'\' LIMIT 1';
  47. mysql_query($query_update) or die("Query failed : " . mysql_error());
  48. unset($flow);
  49. break;
  50.  
  51.  
  52.  
  53.  
  54. ?>


Nikt nic nie zasugeruje? ohno-smiley.gif
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.