Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php + mysql ] Edycja zdjęcia
Forum PHP.pl > Forum > Przedszkole
pioch
Witam


Kolejny problem powstał przy edycji newsa......

chodzi o edycje zdjęcia, w jaki sposób rozwiązać ten problem , mianowicie


Gdy edytuje news, mam w bazie danych pole ' news_foto ' i chciałbym zrobić tak

że przy edycji newsa był pokazany aktualny obrazek, oraz mozliwość nadpisania nowym ( formularz który moge przenieś z dodawania nowego newsa)


  1. <?php
  2. // formularz dodawania foto
  3.  
  4. <input name="image_filename" type="file" id="image_filename" size="20" >
  5.  
  6.  
  7. // foto upload
  8.  
  9.  
  10. $news_foto= $_FILES['image_filename']['name'];
  11.  
  12. if( is_uploaded_file( $_FILES['image_filename']['tmp_name'] ) )
  13. {
  14. $ImageName = './grafika/news/' . $_FILES['image_filename']['name'];
  15. if( move_uploaded_file( $_FILES['image_filename']['tmp_name'], $ImageName ) ) {
  16.  
  17. list($width, $height, $type, $attr ) = getimagesize($ImageName);
  18.  
  19.  
  20. switch ( $type ) {
  21. case 1:
  22. $ext = ".gif";
  23. break;
  24. case 2:
  25. $ext = ".jpg";
  26. break;
  27. case 3:
  28. $ext = ".png";
  29. break;
  30. default;
  31.  
  32. echo "Przykro nam, ale przesłany obraz nie jest w formacie gif, jpg lub png";
  33. }
  34. ?>



i teraz przy edycji newsa , chciałbym pobrać aktualny news i mieć możliwość jego napisania...
wert1
  1. <textarea name="description" cols="40" rows="5"><?php echo $123; ?></textarea>

gdzie $123 to zmienna która jest zczytywana z bazy
pioch
Cytat(wert1 @ 20.04.2007, 15:20:35 ) *
  1. <textarea name="description" cols="40" rows="5"><?php echo $123; ?></textarea>

gdzie $123 to zmienna która jest zczytywana z bazy



tyle ze ja nie pytam sie o edycje tekstu , tylko ZDJĘCIA exclamation.gif! lub pozostawieniu istniejącego...
babejsza
lol 8|

pobierasz sobie nazwę zdjęcia i je wyświetlasz. Obok dajesz input'a plikowego. Po przesłaniu formularza sprawdzasz czy przesłano jakiś plik, jeżeli nie to pozostawiasz stary, jeżeli tak to go kasujesz i nadpisujesz informację w bazie smile.gif.

Chyba, że znowu nie o to chodziło winksmiley.jpg.
pioch
Cytat(babejsza @ 20.04.2007, 15:52:34 ) *
lol 8|

pobierasz sobie nazwę zdjęcia i je wyświetlasz. Obok dajesz input'a plikowego. Po przesłaniu formularza sprawdzasz czy przesłano jakiś plik, jeżeli nie to pozostawiasz stary, jeżeli tak to go kasujesz i nadpisujesz informację w bazie smile.gif.

Chyba, że znowu nie o to chodziło winksmiley.jpg.



dokładnie oto chodzi exclamation.gif!

Ale nie wiem jak mam to sprawdzenie zrobić, możesz podac przykład

Wyświetlam zdjecie i dałem obok inputa i co dalej....
babejsza
w uproszczeniu np. tak:

  1. <?php
  2. if(!empty($_FILES['input_name']['name']))
  3. {
  4.  ... //
  5. }
  6. ?>


chociaż lepiej to będzie sprawdzić na podstawie przesłanego pliku czyli:

  1. <?php
  2. if (move_uploaded_file($_FILES['input_name']['tmp_name'], $uploadfile))
  3. {
  4.  ... //
  5. }
  6. ?>
pioch
Wogóle tego nie rozumie :/


narazie mam tak zrobione smile.gif)


  1. <?php
  2. <br><img src="grafika/news_foto/$news_foto"><br><br><strong>Zmień zdjęcie : <br></strong>Przyjmowane sa pliki jpg, gif, png --> wymiary 130x90px !<br><br><input name="image_filename" type="file" id="image_filename" size="20" >";
  3. ?>


nio i wyświetla mi sie foto , co było wysłane wczesniej , no i mam inputa....


ale próbowałem zamienić istniejące zdjęcie to sie nie da.....
oraz edycja bez zmiany foto tez nie działa
babejsza
to co Ci napisałem dopisujesz w miejscu gdzie nadpisujesz dane w bazie po przesłaniu formularza.
pioch
czyli tutaj smile.gif)


  1. <?php
  2. if ($wynik && $id<>"") {
  3. $wynik = mysql_query("
  4. UPDATE newsy
  5. SET tytul='$tytul', tresc_krotka='$tresc_krotka', tresc_cala='$tresc_cala', data_n='$data', autor='$autor', kategoria='$kategoria', zrodlo='$zrodlo', link_forum='$link_forum', akcept='Z', news_foto='$news_foto'
  6. WHERE id=$id
  7. ");
  8. ?>
babejsza
Na to wygląda, ale Twoja metoda sprawdzania czy zostały przesłane jakieś dane jest delikatnie mówiąc, bardzo kulawa. Po pierwsze korzystasz z "przywileju" że masz włączone register_globals (niepoprawnie odczytujesz przesłane zmienne globalne), a poza tym nie udparniasz zapytania na jakiekolwiek ataki.

Tak czy inaczej po sprawdzeniu danych dodajesz to Co ci napisałem z odpowiednimi operacjami.
pioch
babejsza sorki ze truje....

ale nie moge sobie z tym poradzić....


Czy mógłbys mi napisać bardziej dokładnie, bo naprawde nie rozumie....

a jest to dla mnie ważne , bo tak musiałbym w bazie danych zmieniać nazwe zdjęcia a tak była by możliwość edycji z poziomu przeglądarki....


// edit


Z napisywanie plików sobie poradziłem smile.gif))


Ale teraz jak zrobić , by przy braku nadpisywania zdjęcia zostało aktualne smile.gif) questionmark.gifquestionmark.gif?


Prosze o pomoc , dosyć pilne
Mary$
jeżeli masz warunek, który sprawdza, czy w formularzu zdeklarowałeś jakiś plik, to wykonujesz jakieś instrukcje jeżeli jest ten plik wybrany. Jeżeli ten plik nie jest wybrany, to wtedy nic się nie powinno dziać.
Zapytanie Twoje powinno wygladać tak:
  1. <?php
  2. //poczatek zapytania
  3. $sql = "UPDATE newsy SET tytul='$tytul', tresc_krotka='$tresc_krotka', tresc_cala='$tresc_cala', data_n='$data', autor='$autor', kategoria='$kategoria', zrodlo='$zrodlo', link_forum='$link_forum', akcept='Z'";
  4.  
  5. //jeżeli nadpisuję
  6. if (move_uploaded_file($_FILES['input_name']['tmp_name'], $uploadfile))
  7. $sql .= ", news_foto='$news_foto'";
  8.  
  9. //koncze zapytanie
  10. $sql .= ' WHERE id=$id';
  11.  
  12. //wykonuje
  13. $wynik = mysql_query($sql);
  14. ?>
babejsza
Oj chopie smile.gif

Tak na szybko:

  1. <?php
  2. if (isset($_POST['wyslij']) && !empty($_GET['id'])) {
  3.  
  4. $sciezka ='./jakis_tam_twoj_katalog';
  5. if (move_uploaded_file($_FILES['image_filename']['tmp_name'], $sciezka.'/nowanazwaplinku.jpg'))
  6. {
  7. $nowaNazwaPliku = ', news_foto = "nowanazwaplinku.jpg"';
  8. }
  9.  
  10. $wynik = mysql_query('
  11. UPDATE newsy SET
  12. tytul="'.$_POST['tytul'].'", 
  13. tresc_krotka="'.$_POST['tresc_krotka'].'", 
  14. tresc_cala="'.$_POST['tresc_cala'].'", 
  15. data_n="'.$_POST['data'].'",
  16. autor="'.$_POST['autor'].'", 
  17. kategoria="'.$_POST['kategoria'].'",
  18. zrodlo="'.$_POST['zrodlo'].'", 
  19. link_forum="'.$_POST['link_forum'].'", 
  20. akcept="Z"
  21. '.$nowaNazwaPliku.'
  22. WHERE id=$id
  23. ');
  24.  
  25. }
  26.  
  27.  
  28. echo '
  29. <form action="?page='.$_GET['page'].'&id='.$_GET['id'].'" method="post" enctype="multipart/form-data">
  30. ..............................................
  31. --INNE POLA FORMULARZA -----------------------
  32. .............................................
  33. <img src="grafika/news_foto/'.$news_foto.'"><br><br>
  34. <strong>Zmień zdjęcie : <br></strong>
  35. Przyjmowane sa pliki jpg, gif, png --> wymiary 130x90px !<br><br>
  36. <input name="image_filename" type="file" id="image_filename" size="20" >
  37. <input type="submit" name="wyslij" value="wyślij">
  38. </form>
  39. ';
  40.  
  41. ?>


Nie powinno być błędów, ale nie sprawdzałem.
pioch
Teraz to wogóle zawriowałem , ja to zrobiłem tak , bardziej prosto smile.gif)


  1. <?php
  2. //formularz
  3.  
  4.  
  5. <tr>
  6. <td width="216" height="7"><font class="liter1"><br><strong>Tytul :</td>
  7. <td width="601" height="7" colspan="2"><br><input type="text" name="tytul" value="$tytul" ></td>
  8. </tr>
  9.  
  10. <tr>
  11. <td width="601" height="21" colspan="2"><center><font class="liter1"><br><img src="grafika/news_foto/$news_foto"><br><br><strong>Zmień zdjęcie : <br></strong>Przyjmowane sa pliki jpg, gif, png --> wymiary 130x90px !<br><br><input name="image_filename" type="file" id="image_filename" size="20" ></center></td>
  12. </tr>
  13. <tr>
  14. <td width="216" height="7"></td>
  15. <td width="601" height="7" colspan="2"><br><br><input input type="submit" value=" Zatwierdz dane"></td>
  16. </tr>
  17. </table>
  18. </center>
  19.  
  20. </form></div>
  21. ";
  22.  
  23. }
  24. $news_foto = $_FILES['image_filename']['name'];
  25.  
  26. if( is_uploaded_file( $_FILES['image_filename']['tmp_name'] ) )
  27. {
  28. $ImageName = './grafika/news_foto/' . $_FILES['image_filename']['name'];
  29. if( move_uploaded_file( $_FILES['image_filename']['tmp_name'], $ImageName ) ) {
  30.  
  31. list($width, $height, $type, $attr ) = getimagesize($ImageName);
  32.  
  33.  
  34. switch ( $type ) {
  35. case 1:
  36. $ext = ".gif";
  37. break;
  38. case 2:
  39. $ext = ".jpg";
  40. break;
  41. case 3:
  42. $ext = ".png";
  43. break;
  44. default;
  45.  
  46. echo "Przykro nam, ale przesłany obraz nie jest w formacie gif, jpg lub png";
  47. }
  48. // AKTUALIZACJA W BAZIE
  49.  
  50. if ($wynik && $id<>"") {
  51. $wynik = mysql_query("
  52. UPDATE newsy
  53. SET tytul='$tytul', tresc_krotka='$tresc_krotka', tresc_cala='$tresc_cala', data_n='$data', autor='$autor', kategoria='$kategoria', zrodlo='$zrodlo', link_forum='$link_forum', akcept='Z', news_foto='$news_foto'
  54. WHERE id=$id
  55. ");
  56. ?>



i jak zrobić by bez edycji foto ( czyli gdy jest puste $_FILES['image_filename']['name'] , pozostawało to samo zdjęcie

prosze o pomoc
babejsza
Stary @Mary$ i ja daliśmy Ci już właściwie gotowe rozwiązania, weź je przeanalizuj, bo nikt za Ciebie całej roboty odwalać nie będzie smile.gif.

Może mamy Ci jeszcze przygotować plik edycjaNewsa.php i przesłać na e-mail winksmiley.jpg.
pioch
Cytat(babejsza @ 20.04.2007, 18:25:22 ) *
Stary @Mary$ i ja daliśmy Ci już właściwie gotowe rozwiązania, weź je przeanalizuj, bo nikt za Ciebie całej roboty odwalać nie będzie smile.gif.

Może mamy Ci jeszcze przygotować plik edycjaNewsa.php i przesłać na e-mail winksmiley.jpg.



Oczywiście ze nie , to wasza dobra wola ze pomagasz/cie....

Ale Ty (babejsza) napisałes mi tylko jak nadpisac plik...
skowron-line
nadaj dla submita name

  1. <?php
  2. if(isset($_POST['submit')){
  3.  if(!empty($_FILES['image_filename']['name'])){
  4. $news_foto = $_FILES['image_filename']['name'];
  5.  
  6. if( is_uploaded_file( $_FILES['image_filename']['tmp_name'] ) )
  7. {
  8. $ImageName = './grafika/news_foto/' . $_FILES['image_filename']['name'];
  9. if( move_uploaded_file( $_FILES['image_filename']['tmp_name'], $ImageName ) ) {
  10.  
  11. list($width, $height, $type, $attr ) = getimagesize($ImageName);
  12.  
  13.  
  14. switch ( $type ) {
  15. case 1:
  16. $ext = ".gif";
  17. break;
  18. case 2:
  19. $ext = ".jpg";
  20. break;
  21. case 3:
  22. $ext = ".png";
  23. break;
  24. default;
  25.  
  26. echo "Przykro nam, ale przesłany obraz nie jest w formacie gif, jpg lub png";
  27. }
  28. // AKTUALIZACJA W BAZIE
  29.  
  30. if ($wynik && $id<>"") {
  31. $wynik = mysql_query("
  32. UPDATE newsy
  33. SET tytul='$tytul', tresc_krotka='$tresc_krotka', tresc_cala='$tresc_cala', data_n='$data', autor='$autor', kategoria='$kategoria', zrodlo='$zrodlo', link_forum='$link_forum', akcept='Z', news_foto='$news_foto'
  34. WHERE id=$id
  35. ");
  36.  
  37. }
  38. }else{
  39. echo'pole jest puste';
  40. }
  41. ?>
babejsza
Cytat
Ale Ty (babejsza) napisałes mi tylko jak nadpisac plik...


Nie - napisałem Ci dokładnie co należy zrobić.

Czyli jeżeli upload pliku nastąpił, to tworzy zmienną z instrukcją dla zapytania, a jeżeli nie to w ogóle zapytanie nie zajmie się tym polem tabeli smile.gif.

Sprawdź to co Ci napisałem.
pioch
Wiem babejsza...

Chciałbym się nauczyć ale nie mam takiej wiedzy....


kod podany przez skowron-line wywala mi bład.... już sam nie wiem jak to zrobić.....


Moze mi ktoś powie dlaczego w tej lini

  1. <?php
  2. if(isset($_POST['submit')){
  3.  
  4.  if(!empty($_FILES['image_filename']['name'])) {
  5.  
  6. $news_foto = $_FILES['image_filename']['name'];
  7. ?>


wywala mi błąd Parse error: syntax error, unexpected ')', expecting ']' questionmark.gif?
skowron-line
brakuje nawiasu
w
  1. <?php
  2. if(isset($_POST['submit']))
  3. ?>
pioch
  1. <?php
  2. if(isset($_POST['submit']))
  3. ?>



Usunołem to i też działa...



WIELKIE DZIEKI SKOWRON-LINE , piwko dla ciebie guitar.gif guitar.gif guitar.gif

naprawde dziekuje jeszcze raz smile.gif))



POZDRAWIAM WSZYTSKICH KTÓRZY POMOGLI smile.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.