• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Aktualizacja jednego rekordu w bazie danych z pozostawieniem pozostałych bez zmian

VPS Starter Arubacloud
0 głosów
295 wizyt
pytanie zadane 18 maja 2017 w PHP przez Rafik Obywatel (1,870 p.)

Witam!

Mam zrobiony formularz przez który przesyłam na serwer kilka zdjęć jednocześnie(opcja multiple w formularzu od zdjęć), natomiast do bazy danych zapisuje się ścieżki. Następnie mam zrobiony też formularz edycji tych zdjęć ale osobno dla każdego zdjęcia, z bazy danych wyciągam zdjęcia w pętli i wyświetlam na stronie dodatkowo umieszczają przycisk dodania zdjęcia. Niestety problem jest taki, że jeżeli z bazy pobiorą się np. 3 zdjęcia, a ja chce jedynie edytować 1 to to jedno w bazie zapiszę się poprawnie natomiast skrypt w pozostałych 2 wierszach wyczyści dane. Wychodzi więc na chwilę obecną, że jak chcę poprawić jedno zdjęcie to muszę dodatkowo wysłać również pozostałe. Próbowałem zrobić pętle sprawdzająca ale coś nie zadziałało, może ktoś podpowie jak to konkretnie powinno wyglądać, poniżej zamieszczam kod:

 

Kod z formularzem:

$query = mysqli_query($polaczenie, "SELECT * FROM zdjecia WHERE sygnatura='przyklad789'");


$num_rows = mysqli_num_rows($query);
		
if ($num_rows !=0){

while ($fetch = mysqli_fetch_assoc($query)){
?>         

		<input type="hidden" name="id[]" value="<?php echo $fetch['id'] ?>" /> 		
		<input type="file" name="file_img[]" />
 		<img src="<?php echo $fetch['lokalizacja'] ?>" width="150px" height="150px">
        <?php echo $fetch['id'] ?>
        <div style= "clear:both"></div>
 <?php ?>
                
        		<div style= "clear:both"></div>
		</div>
<?php }}?>	

 

oraz kod z pliku gdzie cały formularz leci

if(isset($_POST['upload']))

    for($i=0; $i<count($_FILES["file_img"]["name"]); $i++)
    {
    
    $id = $_POST['id'][$i];
    $filetmp = $_FILES["file_img"]["tmp_name"][$i];
    $filename = $_FILES["file_img"]["name"][$i];
    $filetype = $_FILES["file_img"]["type"][$i];
    $filepath = "zdjecia/".$filename;
    
    move_uploaded_file($filetmp,$filepath);

        if($polaczenie->query("UPDATE zdjecia SET nazwa='$filename' , lokalizacja='$filepath' WHERE id='$id'"))

    {
    }
    else{
        
    }
        
    
        
        
    }

                            else
{
                                    throw new Exception($polaczenie->error);
                                }
    
    }

 

"Upload" to nazwa przycisku SUBMIT. Podałem tutaj tylko kod dotyczący zdjęć natomiast formularz zawiera jeszcze więcej pól ale one działają poprawnie.

Z góry dziękuję za pomoc

1 odpowiedź

0 głosów
odpowiedź 18 maja 2017 przez Chess Szeryf (76,710 p.)
edycja 18 maja 2017 przez Chess

Usuń pętlę i napisz ją dla każdego elementu z osobna i sprawdź, czy działa. Pętla ta, którą wykonałeś oznacza, że chcesz edytować wszystkie elementy. Pętla ta trwa aż do napotkania ostatniego elementu, czyli u ciebie jest to <div .... > </div>. Edytując jeden element dzięki pętli edytujesz wszystkie. Zamiast tego zastosuj:

while (...) { 
   if(...){
      return (...);
   }
}

Tak mi się przynajmniej wydaje.

Albo coś w tym stylu:

while($row = $result->fetch_assoc()){ 
    if($row['id'] == 88 && $row['id'] == 50){
		//your code
	}
	//break;
}

 

1
komentarz 18 maja 2017 przez Rafik Obywatel (1,870 p.)
Już sobie poradziłem w pliku gdzie lecą dane z formularza zrobiłem sprawdzenie, czy zdjęcie zostało załadowane jeżeli nie to nic nie rób. Wcześniej tak próbowałem ale zrobiłem sprawdzanie w złym miejscu, teraz już działa

Podobne pytania

0 głosów
2 odpowiedzi 613 wizyt
pytanie zadane 3 stycznia 2018 w PHP przez kacz.ma2 Nowicjusz (180 p.)
0 głosów
1 odpowiedź 202 wizyt
pytanie zadane 16 sierpnia 2016 w SQL, bazy danych przez Stiuil06 Nowicjusz (160 p.)
0 głosów
2 odpowiedzi 264 wizyt
pytanie zadane 3 lutego 2018 w SQL, bazy danych przez Dynamic Bywalec (2,910 p.)

92,454 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...