Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Usuwanie rekordu z tablicy
Skaras
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 1.07.2010

Ostrzeżenie: (20%)
X----


Witam

Mam pewną funkcję, która dodaje do tabeli nowy rekord (złożony z trzech pól) przy każdym wywołaniu:

  1. public function dodaj_do_koszyka($iv_id_produktu)
  2. {
  3. $sql = "SELECT nazwa, cena FROM produkty WHERE id_produktu='$iv_id_produktu'";
  4. $a_produkt = $this->o_db->GetRow($sql);
  5. $this->a_produkty[] = array(
  6. "id_produktu"=>$iv_id_produktu,
  7. "nazwa"=> $a_produkt['nazwa'],
  8. "cena"=>$a_produkt['cena'],
  9. );
  10. }


No i teraz chciałbym napisać funkcję, która usuwa rekord po podanym id_produktu:

  1. public function usun_z_koszyka($iv_id_produktu)
  2. {
  3. Usuń ten rekord z tabeli a_produkty, w którym id produktu=$iv_id_produktu;
  4. }


Czytałem że array_slice i array_merge może pomóc, ale nie bardzo wiem jak ich użyć.

Druga zagadka jaką mam do rozwiązania to jak przenieść zawartość tej tablicy do tabeli SQLowej o strukturze: id (primary key), id_produktu, nazwa, cena. Pewnie trzeba będzie użyć foreacha.

Błagam o pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Na obecnej strukturze nie pójdzie tak prosto. Musisz polecieć pętlą (foreach) i usunąć (unset) element tablicy, który ma wskazany ID ($element['id_produktu] == $id_do_usuniecia). Mógłbyś ustalić, że kluczem tablicy jest właśnie $id_do_usunięcia i wówczas nie potrzebujesz pętli - robisz sam unset (+ isset() żeby nie waliło ostrzeżeniem). Podczas dodawania elementu do tablicy zamiast:
  1. $this->a_produkty[]

robisz:
  1. $this->a_produkty[$iv_id_produktu]

i jesteś w domu. Tyle tylko, że wówczas 1 produkt może wystąpić w tablic 1 raz.

Do do drugiego pytania: tak, pętla (foreach) i wpisanie danych do bazy (INSERT). Polecam tzn. multi insert czyli dodawanie kilku rekordów za jednym zamachem:
  1. INSERT INTO tabela (pole_1, pole_2) VALUES (11, 12), (21, 22);
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 9.10.2025 - 16:22