Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: edycja + zmiana plików na dysku
Forum PHP.pl > Forum > PHP
krzyszbi
witam
mam taki problem z którymmęcze się już od rana
problem to edycja danych z jednoczesną zanianą lub usunięciem zdjęcia jeżeli są ze soba powiązane w bazie Mysql

a oto kod mojego skryptu za pomoca którego staram się tego dokonać
jeżeli w formulażu się wypełni wszystkie pola (dotyczy tylko zmian ze zdjęciami, edycja wpisów w bazie mi działa) to wszystko gra guitar.gif ale jak jakiegoą pola nie uzupełnie to się sypie angrysmiley.gif
  1. <?php
  2. include("../files/konfig.inc");
  3.  
  4. $zamiana = $_POST['zamiana'];
  5.  
  6.  
  7.  
  8. for ($i = 0; $i < 5; $i++ )
  9.  {
  10. if ($zamiana[($i)]==1)
  11.  {
  12.  if (file_exists('../picture_library/'.$id.'traktor'.($i+1).'.jpg'))
  13. {
  14. unlink('../picture_library/'.$id.'xxx'.($i+1).'.jpg');
  15. }
  16.  if( is_uploaded_file( $_FILES['userfile']['tmp_name'][$i] ) )
  17.  {
  18. $strUploadDir ='../picture_library/'.$_FILES['userfile']['name'][$i];
  19.  if( move_uploaded_file( $_FILES['userfile']['tmp_name'][$i], $strUploadDir ))
  20.  {
  21.  $nowa_nazwa = $id.'xxx'.($i+1).'.jpg';
  22.  @rename('../picture_library/'.$_FILES['userfile']['name'][$i],'../picture_library/'.$nowa_nazwa);
  23.  $query1 = "INSERT INTO zdjecia SET id='$id',zdjecie='$nowa_nazwa'";
  24. mysql_query ($query1);
  25.  }
  26. else
  27. {
  28.  echo 'Upload plików nie powiódł się!';
  29. }
  30.  }
  31.  
  32.  }
  33.  if ($zamiana[($i)]==2)
  34.  {
  35.  if (file_exists('../picture_library/'.$id.'xxx'.($i+1).'.jpg'))
  36. {
  37. unlink('../picture_library/'.$id.'xxx'.($i+1).'.jpg');
  38. }
  39.  
  40.  
  41.  }
  42. }
  43. echp'zamieniono';
  44. ?>


może ktoś zna jakiś lepszy/skuteczniejszy sposób na zanianę plików na dysku poprzez formularz zpoziomu http
z góry dzięki za podpowiedzi
nospor
Twój podstawowy i największy błąd to:
nie sprawdzasz, czy wszystkie pola są wypełnione. W przypadku, gdy pola wymagane nie są wypełnione powienieś wrócić do formularza, a nie wykonywać akcję dla pół wypełnionych.
krzyszbi
ale niekonieczne jest wypełnianie wszystkich pól
ponieważ moim zdaniem chyba bezsensowne jest abym musiał do formularza
edycji wyisywaś co mam zrobić tzn
zamienić plik
skasować plik
pozostawić bez zmian

czyba że do każdego pola w formularzu zrobić po trzy przyciski typu
radio o w/w nazwach i wtedy polecieć pętlą z akcję odnośnie każdej możliwości

tylko że juz tak próbowałem i mi nie wyszło ponieważ pole do zmiany/skasowanie/pozostawienia bez zmian są tworzone za pomoca następujacej pętli

  1. <?php
  2.  
  3. for ($i=0; $i<5; $i++)
  4.         {
  5.           if (file_exists('../picture_library/'.$id.'xxx'.($i+1).'.jpg'))
  6.               echo'<tr><td class="opis_s_bg">Zdjęcie nr. '.($i+1).'</td><td align="center"><img src="../picture_library/'.$id.'xxx'.($i+1).'.jpg" width="200" height="175" border="0" /><br />
  7.                <input type="checkbox" name="zamiana[]" value="1" />Zamiana zdjęcia??<br />
  8.                <input type="checkbox" name="zamiana[]" value="2" />Skasowanie zdjęcia??<br />
  9.                
  10.  
  11.  
  12.               <input class="form_i_admin_dod" name="userfile[]" type="file"></td></tr>';
  13.           else
  14.               echo'<tr><td class="opis_s_bg">Zdjęcie nr. '.($i+1).'</td><td align="center">Brak zdjęcia<br /><input type="checkbox" name="zamiana[]" value="1" />Dodanie zdjęcia??<br><input class="form_i_admin_dod" name="userfile[]" type="file"></td></tr>';
  15.         }
  16.  
  17. ?>

a może zmienić coś tutaj?questionmark.gif?
nospor
I tu się kłania znajomośc tego co sie wysyła a co nie. pola typu Checkbox wysyłają sie tylko wtedy, gdy są zaznaczone. Tak więc jesli robisz dla nazwy checkboxa tablicę, to jesli zaznaczysz drugiego a pierwszego nie, to drugi wskoczy ci jako pierwszy z indexem. Musisz jakos jednoznacznie je nazywać. Poazatym coś może byc skasowane albo zmienione. Twoje chcekboxy tego nie wykluczają , powinno byc raczej radio.

ps: formularz piszę sie przez rz a nie ż
krzyszbi
próbowałem właśnie z przyciskami typu radio ale coś mi nie wychodzi

jak za pomoca pętli utwożyć pola w formularzu z przyciskami radio

poniższym kodem mi nie działa

  1. <?php
  2.  
  3. for ($i=0; $i<5; $i++)
  4. {
  5. if (file_exists('../picture_library/'.$id.'traktor'.($i+1).'.jpg'))
  6. echo'<tr><td class="opis_s_bg">Zdjęcie nr. '.($i+1).'</td><td align="center"><img src="../picture_library/'.$id.'traktor'.($i+1).'.jpg" width="200" height="175" border="0" /><br />
  7.  <input type="radio" name="zamiana'.$i.'" value="1" />Zamiana zdjęcia??<br />
  8.  <input type="radio" name="zamiana'.$i.'" value="2" />Skasowanie zdjęcia??<br />
  9.  <input type="radio" name="zamiana'.$i.'" value="3" CHECKED />Bez zmin..<br />
  10. <input class="form_i_admin_dod" name="userfile[]" type="file"></td></tr>';
  11. else
  12. echo'<tr><td class="opis_s_bg">Zdjęcie nr. '.($i+1).'</td><td align="center">Brak zdjęcia<br />
  13. <input type="radio" name="zamiana'.$i.'" value="4" />Dodanie zdjęcia??<br />
  14. <br><input class="form_i_admin_dod" name="userfile[]" type="file"></td></tr>';
  15. }
  16.  
  17. ?>

a jeśli bedzie w następujacu sposób to wszystkie pola radio mają tę samą nazwe nie da się zaznaczyć tylko jedno z nich
  1. <?php
  2.  
  3. for ($i=0; $i<5; $i++)
  4. {
  5. if (file_exists('../picture_library/'.$id.'traktor'.($i+1).'.jpg'))
  6. echo'<tr><td class="opis_s_bg">Zdjęcie nr. '.($i+1).'</td><td align="center"><img src="../picture_library/'.$id.'traktor'.($i+1).'.jpg" width="200" height="175" border="0" /><br />
  7.  <input type="radio" name="zamiana[]" value="1" />Zamiana zdjęcia??<br />
  8.  <input type="radio" name="zamiana[]" value="2" />Skasowanie zdjęcia??<br />
  9.  <input type="radio" name="zamiana[]" value="3" CHECKED />Bez zmin..<br />
  10. <input class="form_i_admin_dod" name="userfile[]" type="file"></td></tr>';
  11. else
  12. echo'<tr><td class="opis_s_bg">Zdjęcie nr. '.($i+1).'</td><td align="center">Brak zdjęcia<br />
  13. <input type="radio" name="zamiana[]" value="4" />Dodanie zdjęcia??<br />
  14. <br><input class="form_i_admin_dod" name="userfile[]" type="file"></td></tr>';
  15. }
  16.  
  17. ?>

co robie źle
możecie mi powiedzieć
nospor
jak na moj gust to radio tworzone tak: zamiana'.$i jest wlasnie ok. Co ci nie działa? Może źle to odbierasz?
krzyszbi
męcze się z tym i męcze ale jakos mi nie wychodzi

ja to próbóje odbierać tak ale po moich próbach już wiem że to zapewne jest kiepski sposób
(to tylko aby sprawdzić jak zostanie wykonana akcja dana akcja mi działa- z tym nie mam problemu)
  1. <?php
  2.  
  3.  echo'<table>';
  4.  for ($i = 0; $i < 5; $i++ )
  5.  {
  6. echo'<tr>';
  7. if ($zamiana.$i==1)
  8.  {
  9.  echo'<td>zaniana<br /></td><td>'.($i+1).'</td><td>';
  10.  
  11.  }
  12.  elseif ($zamiana.$i==2)
  13.  {
  14.  
  15. echo'<td>kasacja<br /></td><td>'.($i+1).'</td>';
  16.  
  17.  
  18.  }
  19.  elseif ($zamiana.$i==3)
  20. {
  21.  echo'<td>dodanie<br /></td><td>'.($i+1).'</td>';
  22.  }
  23.  elseif($zamiana.$i==3)
  24. {
  25. echo'<td>bez zmian<br /></td><td>'.($i+1).'</td>';
  26. }
  27. else echo'<td>koniec<br /></td><td>'.($i+1).'</td>';
  28. echo'</tr>';
  29.  }
  30.  echo'</table>';
  31.  
  32. ?>

jak to odebrać
pola typu radio i owszem twożą się z innymi indexami i nie zaznacza sie tylko jedno
mała pomoc by nie zaszkodziła
tylko co ty mi nie gra?questionmark.gif?
nospor
źle odbierasz. zamiast $zamiana.$i daj $_POST['zamiana'.$i]
zakladam ze formularz wysylasz postem
krzyszbi
ok
dzięki
w końcu zaczeło działać tak jak ja chcę

dzięki za podpowiedzi
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.