pętla w php nie widzi obiektów z sesii

Odpowiedz Nowy wątek
2019-06-03 17:33
1

Witam. Mam problem z pętlą,chcę aktualizować wartości w tabeli jednak mi to nie wychodzi taki kod ```

$polaczenie = new mysqli($host,$db_user,$db_password,$db_name);
            foreach ($_SESSION['koszyk'] AS $koszyk) {
            $zapytanie = "UPDATE `zamowienia_has_czesci` SET idCzesci='{$koszyk['czesc']}', idKategorii ='{$koszyk['kategoria']}', idMarki ='{$koszyk['marka']}' WHERE idZamowienia = (SELECT MAX(idZamowienia) FROM zamowienia)";
            mysqli_query($polaczenie, $zapytanie);
            }

wstawia mi owszem do bazy kilka rekordów zależnie od tego ile mam produktów natomiast widzi tak jakby tylko ostatnie wartośći ze zmiennej $koszyk[czesc] itd
na 1 screenie pokazane jest które wartosci są wstawiane
a za to taki kod ```

$polaczenie = new mysqli($host,$db_user,$db_password,$db_name);
            foreach ($_SESSION['koszyk'] AS $koszyk) {
            $zapytanie = "INSERT INTO `zamowienia_has_czesci`(`idZamowienia`, `idCzesci`, `idKategorii`, `idMarki`) VALUES ('', '{$koszyk['czesc']}', '{$koszyk['kategoria']}', '{$koszyk['marka']}')";
            mysqli_query($polaczenie, $zapytanie);
            }```

wstawia to co jest zaznaczone na 2 screenie czyli dokładnie to co mi potrzeba jednak zamiast wstawiania muszę robić aktualizację bo wczesniej są wstawiane wartosci do innej kolumny w tej tabeli.
Jak zrobić zeby ten kod z update wstawiał mi tak samo wartosci bo bazy jak insert czyli żeby widział poprzednie wartośći wyciągane z $koszyk a nie tylko przypisane do ostatniego produktu??

  • 1b.png (0,01 MB) - ściągnięć: 6
  • 2b.png (0,02 MB) - ściągnięć: 6
edytowany 3x, ostatnio: kamil21, 2019-06-03 17:38

Pozostało 580 znaków

2019-06-05 14:45
0

A i jeszcze pozostaje problem taki ze musiałbym jakoś zaliczać ile rekordów dodaje do bazy insertem i tyle samo potem pobierać i wrzucać do sesji

Eee, ale po co? Przecież po zrobieniu inserta nadal sesja istnieje. Przestanie istnieć dopiero później, gdy sama wygaśnie. A jeśli chcesz koszyk mieć pomiędzy sesjami, to wtedy raczej nie trzyma się go w sesji, tylko w bazie.

To na początek, już o tym wspominałem, ale jeszcze raz:

$zapytanie = "Select id FROM zamowienia_has_czesci WHERE idZamowienia=(SELECT MAX(idZamowienia) FROM zamowienia_has_czesci)";

Nie rób SELECT MAX(idZamowienia) FROM zamowienia_has_czesci). Powoduje to, że jeśli będziesz mieć kilku userów, to każdy dostanie ten sam wynik!

edytowany 1x, ostatnio: serek, 2019-06-05 14:45

Pozostało 580 znaków

2019-06-05 15:08
0

Wpisałem sobie w kod ten select który tu podałeś, jednak nie potrafię w dalszym ciągu włożyć tych pobranych danych do sesji, maksymalnie co udało mi się zrobić to tak żeby mi wyswiatlalo te pobrane dane w liście rozwijanej ale to nic mi nie daje.

Pozostało 580 znaków

2019-06-05 15:12
0

Tak to wygląda

Pozostało 580 znaków

2019-06-05 20:14
0

jest światełko w tunelu, zrobiłem tablice która mi pobiera odpowiednie dane z bazy i przetrzymuje,teraz tylko pozostało je jakoś wrzucić do sesji i update'ować odpowiednie wiersze,kod jest taki

session_start();
require_once"connect.php";
$link = mysqli_connect('localhost','root','','konfigurator2');
if(mysqli_connect_errno()){
    printf('nie udalo sie polaczyc:%s',mysqli_connect_error());
    exit();
}
if ($wynik = mysqli_query($link, "SELECT id FROM zamowienia_has_czesci WHERE idZamowienia=(SELECT MAX(idZamowienia) FROM zamowienia_has_czesci);"))
{
    $iloscRekordow = mysqli_num_rows($wynik);
echo "zapytanie zwróciło $iloscRekordow rekordow.";
}
while ($rekord = mysqli_fetch_array($wynik))
//{
    //echo 'Kategoria o nazwie: ' .$wynik["id"] . '<br/>';

print_r($rekord);

a wynik na screenie

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0