Incerc de cateva zile sa rezolv o problema cu privire la adaugare unui nou element in array.
In pagina
- daca se adauga acelasi produs in cos, crestem cantiatea cu x (rezolvat);
- daca se adauga acelasi produs in cos, iar marimea ($_POST['marime']) este diferita atunci, dublam produsul si adaugam noua Marime (problema).
Problema este aici:
Cod: Selectaţi tot
elseif($values['idProdus'] == $_POST['sesiuneID'] && $values['NumeMarime'] != $NumeMarime)
{
echo "Dubleaza";
//Dubeaza produsul cu acelasi id si marime diferita
$count = count($_SESSION['CosCumparaturi'])+1;
$produse_array = array(
'ssid' => $_POST['ssid'],
'idProdus' => $_POST['sesiuneID'],
'TitluProdus' => $rowFromProduse['TitluProdus'],
'Cantiate' => $_POST['cantitate'],
'PretTotal' => $rowFromProduse['pret_total'],
'idUniq' => $idUniq,
'NumeMarime' => $NumeMarime
);
$_SESSION['CosCumparaturi'][$count] = $produse_array;
}
__________________________________________________________
codul complet
__________________________________________________________
Cod: Selectaţi tot
function AdaugaInCos()
{
global $link;
if(isset($_POST['btnAdaugainCos']) && isset($_POST['cantitate']) && is_numeric($_POST['cantitate']) && isset($_POST['ssid']) && isset($_POST['marime']) && isset($_POST['sesiuneID']) && is_numeric($_POST['sesiuneID']))
{
$sesiuneID = mysqli_real_escape_string($link, $_POST['sesiuneID']); // sesiuneID este idProduse din tabelul `produse`
$cantitate = mysqli_real_escape_string($link, $_POST['cantitate']); // cantitatea obtinuta din detalii produs
$qCheckisValidID = mysqli_query($link, "SELECT * FROM produse WHERE idProduse='$sesiuneID'");
$rowFromProduse = mysqli_fetch_array($qCheckisValidID);
//obtinem ID Marime si idUniq
$idUniqidMarime = mysqli_real_escape_string($link, $_POST['marime']);
$explode = explode("|",$idUniqidMarime);
$NumeMarime = mysqli_real_escape_string($link, $explode[0]);
$idUniq = mysqli_real_escape_string($link, $explode[1]);
if(mysqli_num_rows($qCheckisValidID)>0) // verificam daca produsul din cos exista in db
{
if(isset($_SESSION['CosCumparaturi'])) // verificam daca sesiunea este setata
{
//punem produsul in cos
$item_array_id = array_column($_SESSION["CosCumparaturi"], "idProdus");
if(!in_array($_POST['sesiuneID'], $item_array_id))
{
$count = count($_SESSION['CosCumparaturi']);
$produse_array = array(
'ssid' => $_POST['ssid'],
'idProdus' => $_POST['sesiuneID'],
'TitluProdus' => $rowFromProduse['TitluProdus'],
'Cantiate' => $_POST['cantitate'],
'PretTotal' => $rowFromProduse['pret_total'],
'idUniq' => $idUniq,
'NumeMarime' => $NumeMarime
);
$_SESSION['CosCumparaturi'][$count] = $produse_array;
}
else
{
// daca produsul este deja adaugat in cos, atunci crestem cantiatea cu + 1
foreach($_SESSION["CosCumparaturi"] as $keys => $values)
{
if($values['idProdus'] == $_POST['sesiuneID'] && $values['NumeMarime'] == $NumeMarime)
{
$_SESSION['CosCumparaturi'][$keys]['Cantiate'] = $_SESSION['CosCumparaturi'][$keys]['Cantiate'] + $_POST['cantitate'];
}
elseif($values['idProdus'] == $_POST['sesiuneID'] && $values['NumeMarime'] != $NumeMarime)
{
echo "Dubleaza";
//Dubeaza produsul cu acelasi id si marime diferita
$count = count($_SESSION['CosCumparaturi'])+1;
$produse_array = array(
'ssid' => $_POST['ssid'],
'idProdus' => $_POST['sesiuneID'],
'TitluProdus' => $rowFromProduse['TitluProdus'],
'Cantiate' => $_POST['cantitate'],
'PretTotal' => $rowFromProduse['pret_total'],
'idUniq' => $idUniq,
'NumeMarime' => $NumeMarime
);
$_SESSION['CosCumparaturi'][$count] = $produse_array;
}
}
}
}
else
{
//daca sesiunea nu este setata, o setam!
$produse_array = array(
'ssid' => $_POST['ssid'],
'idProdus' => $_POST['sesiuneID'],
'TitluProdus' => $rowFromProduse['TitluProdus'],
'Cantiate' => $_POST['cantitate'],
'PretTotal' => $rowFromProduse['pret_total'],
'idUniq' => $idUniq,
'NumeMarime' => $NumeMarime
);
$_SESSION['CosCumparaturi'][0] = $produse_array;
}
}
}
}
Am atasat si cateva fotografii:
1: https://ibb.co/e9wCYv
prima actiune: https://ibb.co/kULH0a
a doua actiune: https://ibb.co/nNzXYv
a treia actiune: https://ibb.co/dGT4fa
a patra actiune: https://ibb.co/hzTgRF
Va multumesc si astept sugestiile voastre!