Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Edycja rekordów pod upload plików.
Forum PHP.pl > Forum > PHP
gawcio90
Witam. Mam formularz:

  1.  
  2. <td>Dodaj FV1</td>
  3. <td><input name="inv1" type="file" size="50"</td>
  4. </tr>
  5. <tr>
  6. <td bgcolor="lightgray">Dodaj FV2:</td>
  7. <td><input name="inv2" type="file" size="50"</td>
  8. </tr>
  9. <tr>
  10. <td>Dodaj FV3:</td>
  11. <td><input name="inv3" type="file" size="50"</td>
  12. </tr>


Następnie kod edycji:

  1. $inv1_nazwa=$_FILES['inv1']['name'];
  2. $inv2_nazwa=$_FILES['inv2']['name'];
  3. $inv3_nazwa=$_FILES['inv3']['name'];
  4.  
  5. $inv_ext= array_pop(explode(".", $inv1_nazwa));
  6. $inv_ext= array_pop(explode(".", $inv2_nazwa));
  7. $inv_ext= array_pop(explode(".", $inv3_nazwa));
  8.  
  9. $inv1_nazwa_zm=(md5($inv1_nazwa)).".".$inv_ext;
  10. $inv2_nazwa_zm=(md5($inv2_nazwa)).".".$inv_ext;
  11. $inv3_nazwa_zm=(md5($inv3_nazwa)).".".$inv_ext;
  12.  
  13. $query="UPDATE goods SET invoice1='$inv1_nazwa_zm', invoice2='$inv2_nazwa_zm', invoice1='$inv3_nazwa_zm' WHERE id='$ud_id'";


I tutaj jest problem kiedy nie chcę aktualizować, któregoś z rekordów. Nie wybierając nic do aktualizacji jak zrobić aby pusta zmienna nie nadpisała nazwy faktury już istniejącej w bazie?
matiit
Uzupełniaj na starcie formularz o aktualne wartości z bazy.
To jest lepsza metoda pod względem User experience.
gawcio90
Tak robię w przypadku zwykłych pól tekstowych jednak nie wiem jak to zrobić w przypadku uploadowania pliku. W końcu nazwa jest inna bo jest kodowana.
matiit
Sory, nie zauważyłem, że to są pola do plików.

To nie pozostaje Ci nic innego jak sprawdzanie czy są to puste stringi.. po prostu
gawcio90
Ja rozumiem. Sprawdzę czy mam pusty string i właśnie jeżeli on będzie pusty to mi nadpisze już istniejący rekord w bazie.

  1. $query="UPDATE goods SET invoice1='$inv1_nazwa_zm', invoice2='$inv2_nazwa_zm', invoice1='$inv3_nazwa_zm' WHERE id='$ud_id'";


Tutaj nie wiem jak to rozwiązać, jeżeli $inv1_nazwa_zm jest pusta aby nie nadpisała czegoś co już w bazie istnieje.
matiit
Pobierz sobie na początku aktualne wartości.
I jeśli któreś jest puste to ustaw je na starą wartość
gawcio90
Czyli pierwsze w formularzu pobrać wszystkie wartości, przekazać je jako hidden i później sprawdzać czy nowe wartości są równe "" jeśli tak to nadać im przekazaną wartość z hidden.
matiit
Może być tak, ale szkoda się bawić w przekazywanie przez hidden.
Pobierz je sobie w kodzie edycji na początku.
gawcio90
  1. $query=" SELECT * FROM test WHERE id='$ud_id'";
  2. $result=mysql_query($query);
  3. $num=mysql_numrows($result);
  4.  
  5. $i=0;
  6. while ($i < $num) {
  7. $id=mysql_result($result,$i,"id");
  8. $inv1=mysql_result($result,$i,"inv1");
  9. $inv2=mysql_result($result,$i,"inv2");
  10. $inv3=mysql_result($result,$i,"inv3");
  11.  
  12. ++$i;
  13. }


To dobra metoda na wyciąganie takich danych?
matiit
Nie.
Ale w tym przypadku to nie ma znaczenia bo tu w ogóle nic nie jest dobrą metodą tongue.gif
samo używanie mysql_query... PDO by było lepsze...
No ale zrób, żeby Ci działało, potem upiększ to 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.