[PHP]Aktualizacja tablicy - problem z kodem


(Przemek191191) #1

Witajcie, mam problem z funkcją którą napisałem, funkcja ta (z założenia) sprawdza czy istnieją jakieś wartości w wielu tablicach na tym samym indeksie.

Kiedy tablica jest pusta, funkcja wykonuje “drugi blok” w “funkcji add” i wszystko jest ok.

Przy drugim produkcie z takimi samymi ‘id’ itd… nadpisuje się ilość produktów “pierwszy blok”, dla indeksu 0 (czyli ok)

Przy trzecim produkcie ale już z innymi wybarwieniami wykonuje się “drugi blok” z indeksem 1 (czyli ok)

Natomiast przy czwartym produkcie i ‘id’ itd… takim jak w drugim produkcie wykonuje się znowu “blok drugi” i dodaje następny indeks (2) a powinien wykonać “blok pierwszy” i nadpisać indeks 0.

Męczę się już z tym 4 dni i nie wiem o co chodzi, dlatego proszę Was o pomoc :wink:

id - id produktu

id_wyb - id producenta wybarwienia

nr_wyb - nr wybarwienia producenta

id_tka - id producenta tkaniny

nr_tka - nr tkaniny producenta

// funkcja aktualizująca

function update($lp, $u_id, $u_id_wyb, $u_nr_wyb, $u_id_tka, $u_nr_tka, $u_ilosc){ // aktualizacja tablicy;

	  $_SESSION['koszyk']['id'][$lp]=$u_id;

	  $_SESSION['koszyk']['id_wyb'][$lp]=$u_id_wyb;

	  $_SESSION['koszyk']['nr_wyb'][$lp]=$u_nr_wyb;

	  $_SESSION['koszyk']['id_tka'][$lp]=$u_id_tka;

	  $_SESSION['koszyk']['nr_tka'][$lp]=$u_nr_tka;

	  $_SESSION['koszyk']['ilosc'][$lp]=$u_ilosc;

  }



// funkcja dodająca

  function add($id, $id_wyb, $nr_wyb, $id_tka, $nr_tka, $ilosc){

	$x=count($_SESSION['koszyk']['lp']); // ilosc rekordów w tablicy lp



	$a=in_array($id,$_SESSION['koszyk']['id']);

	$b=in_array($id_wyb,$_SESSION['koszyk']['id_wyb']);

	$c=in_array($nr_wyb,$_SESSION['koszyk']['nr_wyb']);

	$d=in_array($id_tka,$_SESSION['koszyk']['id_tka']);

	$e=in_array($nr_tka,$_SESSION['koszyk']['nr_tka']);

    if(($a == TRUE) and ($b == TRUE) and ($c == TRUE) and ($d == TRUE) and ($e == TRUE)){ // sprawdzenie czy występuje prudukt ze wszystkimi takimi samymi danymi

	// pierwszy blok	

		$kluczid=array_search($id,$_SESSION['koszyk']['id']); // pobranie klucza id

		$z=$_SESSION['koszyk']['ilosc'][$kluczid];


		update($kluczid, $id, $id_wyb, $nr_wyb, $id_tka, $nr_tka, $z+1); // aktualizacji jeżeli wszystkie dane są takie same

	}else{

	// drugi blok	

	$_SESSION['koszyk']['lp'][]=$x+1;

	$_SESSION['koszyk']['id'][]=$id;

	$_SESSION['koszyk']['id_wyb'][]=$id_wyb;

	$_SESSION['koszyk']['nr_wyb'][]=$nr_wyb;

	$_SESSION['koszyk']['id_tka'][]=$id_tka;

	$_SESSION['koszyk']['nr_tka'][]=$nr_wyb;

	$_SESSION['koszyk']['ilosc'][]=$ilosc;

	}

  }