Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Jak przepisać dane z tablicy do sesji w pętli
Kamil21
post 6.06.2019, 11:46:45
Post #1





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

Ostrzeżenie: (0%)
-----


Witam. Mam pewnie blachy problem ale nie umiem sobie z nim poradzić, pobieram dane z bazy, potrzebuję id z tabeli. Mam na ten moment coś takiego jak Array ([0]->7 [id]->7) Array ([0]->8 [id]->8) Array ([0]->9 [id]->9) , potrzebuję włożyć do sesji te liczby 7,8,9 ponieważ są to id wierszy które muszę potem update'owac. Kod mam taki
  1. require_once"connect.php";
  2. $link = mysqli_connect('localhost','root','','konfigurator2');
  3. if(mysqli_connect_errno()){
  4. printf('nie udalo sie polaczyc:%s',mysqli_connect_error());
  5. exit();
  6. }
  7. if ($wynik = mysqli_query($link, "SELECT id FROM zamowienia_has_czesci WHERE idZamowienia=(SELECT MAX(idZamowienia) FROM zamowienia_has_czesci);"))
  8. {
  9. $iloscRekordow = mysqli_num_rows($wynik);
  10. echo "zapytanie zwróciło $iloscRekordow rekordow.";
  11. }
  12. while ($rekord = mysqli_fetch_array($wynik))
  13. //{
  14. //echo 'Kategoria o nazwie: ' .$wynik["id"] . '<br/>';
  15.  
  16. print_r($rekord);


Jeśli napisze $_SESSION['idproduktu'] =$rekord[0]; to wpisuje mi tam tylko ostatnią wartość czyli 9. Jeśli to samo włożę do pętli to wpisuje mi owszem wszytkie wartości ale ciągiem czyli wychodzi 789 a mi potrzebne żeby w pierwszym 'obrocie' było 7,w drugim 8, w trzecim 9 tak żebym mógł sobie po kolei robić update 7 rekordu, następnie 8 i później 9.$_SESSION['idproduktu '] =$rekord['id'] daje ten sam wynik. Proszę o pomoc i najlepiej jakiś kawałek kodu bo męczę się z tym już 4 dzień. To mój pierwszy program w PHP i styczność z programowaniem i do sukcesu brakuje mi tylko tego właśnie

Ten post edytował Kamil21 6.06.2019, 11:50:05
Go to the top of the page
+Quote Post
nospor
post 6.06.2019, 12:05:15
Post #2





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Musisz to wlozyc do tablicy

  1. $_SESSION['idproduktu'] = [];
  2. while ($rekord = mysqli_fetch_array($wynik)) {
  3. $_SESSION['idproduktu'][] = $rekord['id']
  4. }


przenosze

Cytat
zamowienia_has_czesc
Juz tak na marginesie, bo zawsze mnie to interesuje:
mozesz mi wyjasnic co oznacza slowo "has" w tej tabeli? Czyzby to bylo z angielskiego "ma" ? Jesli tak to czemu tak bezsensownie laczysz polski i angielski? Bo jesli to lans to raczej to daje -10 do lansu wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Kamil21
post 6.06.2019, 12:16:45
Post #3





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

Ostrzeżenie: (0%)
-----


Dziękuję, teraz już mam Array([0]->7 [1]->8) czyli blisko rozwiązania jednak pokazuje mi błąd Array to string conversation w takim updacie
  1. $polaczenie = new mysqli($host,$db_user,$db_password,$db_name);
  2. foreach ($_SESSION['koszyk'] AS $koszyk) {
  3. $zapytanie = "UPDATE `zamowienia_has_czesci` SET idCzesci='{$koszyk['czesc']}', idKategorii ='{$koszyk['kategoria']}', idMarki ='{$koszyk['marka']}' WHERE id = '$_SESSION[idproduktu]' ";
  4. mysqli_query($polaczenie, $zapytanie);
  5. }

Wcześniej taki sam update działał

Nie wiem co znaczy, program sam mi tak zrobił bodajże workbench kiedyś to tak napisałem questionmark.gif

Ten post edytował Kamil21 6.06.2019, 12:19:16
Go to the top of the page
+Quote Post
nospor
post 6.06.2019, 12:19:06
Post #4





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Nie nie nie. Rozwiazanie masz poprawne. Ino ze ty zle sie do danych dobierasz potem to juz nie moja wina.

Skoro to jest tablica to pozniej masz zrobic FOREACH by poniej przeleciec i wykonac UPDATE dla kazdego ID. Od biedy mozesz zrobic jeden UPDATE poprzedzony poprzez IMPLODE na idproduktu, pod warunkiem rzecz jasna, zze wszystkie te ID maja miec taki sam update


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Kamil21
post 6.06.2019, 12:23:04
Post #5





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

Ostrzeżenie: (0%)
-----


Eeee niewiele mi to mówi, jak już wspominałem, nie znam się na php, sam nie wiem jakim cudem udało mi się już tyle zrobić ale jakoś muszę to odciągnąć do końca więc jakbyś mógł to proszę o kawałek kodu, nie mają mieć do końca takiego samego bo mają być wpisywane inne idKategorii, części i marki ale to już posiadam zrobione w pętli w koszyku stąd te wartości koszyk[cześć] itp

Ten post edytował Kamil21 6.06.2019, 12:25:26
Go to the top of the page
+Quote Post
sratatata
post 6.06.2019, 13:14:32
Post #6





Grupa: Zarejestrowani
Postów: 42
Pomógł: 2
Dołączył: 25.05.2019

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


  1. <?php
  2.  
  3. $rekord = array(1,2,3,4,5,6);
  4.  
  5. $_SESSION['idproduktu'] = [];
  6. foreach ($rekord as $key) {
  7. $_SESSION['idproduktu'][] = $key;
  8. }
  9.  
  10. foreach($_SESSION['idproduktu'] as $key )
  11. {
  12.  
  13. print $key;
  14.  
  15. }
  16.  
  17. ?>

Widzisz różnicę

Ten post edytował sratatata 6.06.2019, 13:16:11
Go to the top of the page
+Quote Post
Kamil21
post 6.06.2019, 13:17:30
Post #7





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

Ostrzeżenie: (0%)
-----


Takie coś mi wyświetla tak samo ciągiem 789, takie coś już miałem wcześniej
Go to the top of the page
+Quote Post
sratatata
post 6.06.2019, 13:20:40
Post #8





Grupa: Zarejestrowani
Postów: 42
Pomógł: 2
Dołączył: 25.05.2019

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


Zle sie dobierasz do tablicy sesji

  1. $_SESSION[idproduktu]

Zawiera tablice. Ty tylko ja wywolujesz nie podajac indeksow.

Ten post edytował sratatata 6.06.2019, 13:21:54
Go to the top of the page
+Quote Post
Kamil21
post 6.06.2019, 13:25:15
Post #9





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

Ostrzeżenie: (0%)
-----


Teraz mam coś takiego jako wynik 789Array([0]->7 [1]->8 [2]->9)
Go to the top of the page
+Quote Post
sratatata
post 6.06.2019, 13:39:36
Post #10





Grupa: Zarejestrowani
Postów: 42
Pomógł: 2
Dołączył: 25.05.2019

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


Jesli sesja koszyk zawiera liczby to ma to wygladac tak:

  1. $_SESSION[idproduktu][$koszyk];
Go to the top of the page
+Quote Post
Kamil21
post 6.06.2019, 13:42:46
Post #11





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

Ostrzeżenie: (0%)
-----


Koszyk zawiera liczby ale są tam inne dane, id części, kategorii, marki itp, nie ma tam tego id ze zmiennej idproduktu
Go to the top of the page
+Quote Post
sratatata
post 6.06.2019, 13:50:35
Post #12





Grupa: Zarejestrowani
Postów: 42
Pomógł: 2
Dołączył: 25.05.2019

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


  1. $polaczenie = new mysqli($host,$db_user,$db_password,$db_name);
  2. $i=0;
  3. foreach ($_SESSION['koszyk'] AS $koszyk) {
  4. $zapytanie = "UPDATE `zamowienia_has_czesci` SET idCzesci='{$koszyk['czesc']}', idKategorii ='{$koszyk['kategoria']}', idMarki ='{$koszyk['marka']}' WHERE id = '$_SESSION[idproduktu][$i]' ";
  5. $i++;
  6. mysqli_query($polaczenie, $zapytanie);
  7. }


A wogole to powinno byc tak:

  1. id = " . $_SESSION['idproduktu'][$i];
Go to the top of the page
+Quote Post
Kamil21
post 6.06.2019, 13:53:31
Post #13





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

Ostrzeżenie: (0%)
-----


Rozumiem że teraz mi będzie szło od zera i się zwiększało o ilość obrotów pętli, np dla 4 to będzie 0 1 2 3, tak nie może być ponieważ to ma się zaczynać od pierwszego pobranego id czyli 7 o ilość pobranych liczb czyli 2(do 9). Mogę napisać coś takiego i=$_SESSION['idproduktu']questionmark.gif Zadziała mi to??

Czyli dobrze myślę
Go to the top of the page
+Quote Post
sratatata
post 6.06.2019, 14:02:23
Post #14





Grupa: Zarejestrowani
Postów: 42
Pomógł: 2
Dołączył: 25.05.2019

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


  1. UPDATE tabela SET nazwapola ='101'
  2. where id IN(1,2,7,9)
Go to the top of the page
+Quote Post
Kamil21
post 6.06.2019, 14:04:57
Post #15





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

Ostrzeżenie: (0%)
-----


zrobiłem to co napisalem z tym $i i taki błąd-syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) .To co napisałeś tytaj ze sztywno wpisanymi danymi mnie nie ratuje bo te liczby 7 8 9 ssą pobierane z bazy i równie dobrze może to być 21 22 23 więc musi sie to wszystko automatycznie odbywać
Go to the top of the page
+Quote Post
sratatata
post 6.06.2019, 14:09:11
Post #16





Grupa: Zarejestrowani
Postów: 42
Pomógł: 2
Dołączył: 25.05.2019

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


Cytat(Kamil21 @ 6.06.2019, 14:04:57 ) *
zrobiłem to co napisalem z tym $i i taki błąd-syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) .To co napisałeś tytaj ze sztywno wpisanymi danymi mnie nie ratuje bo te liczby 7 8 9 ssą pobierane z bazy i równie dobrze może to być 21 22 23 więc musi sie to wszystko automatycznie odbywać

Przeciez to przyklad. Przerob to do swoich potrzeb. No juz to to chyba potrafisz skoro wiesz jak to ma byc.
Go to the top of the page
+Quote Post
Kamil21
post 6.06.2019, 14:18:01
Post #17





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

Ostrzeżenie: (0%)
-----


zadziałało w końcu coś takiego
  1. $_SESSION['idproduktu'] = [];
  2. while ($rekord = mysqli_fetch_array($wynik))
  3. {
  4. //echo 'Kategoria o nazwie: ' .$wynik["id"] . '<br/>';
  5. $_SESSION['idproduktu'][] = $rekord['id'];
  6. }
  7.  
  8.  
  9.  
  10. print_r($_SESSION['idproduktu']);
  11. $i=$_SESSION['idproduktu'][0];
  12. print_r($i);
  13.  
  14.  
  15. $polaczenie = new mysqli($host,$db_user,$db_password,$db_name);
  16. foreach ($_SESSION['koszyk'] AS $koszyk) {
  17. $zapytanie = "UPDATE `zamowienia_has_czesci` SET idCzesci='{$koszyk['czesc']}', idKategorii ='{$koszyk['kategoria']}', idMarki ='{$koszyk['marka']}' WHERE id = '$i'";
  18. $i++;
  19. mysqli_query($polaczenie, $zapytanie);
  20. }


Bardzo Wam dziękuję za pomoc
Go to the top of the page
+Quote Post
nospor
post 6.06.2019, 14:21:41
Post #18





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Przeciez to robi dokladnie to samo co sratata podal ci w poscie nr 12. Ba, jego robi nawet lepiej bo bedzie dzialac nawet jak ID nie sa pokolei.
No ale ty nawet nie raczyles sprawdzic tylko wysnules hipoteze jak to dziala, a rzecz jasna twoja hipoteza byla zla... No nic...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Kamil21
post 6.06.2019, 15:14:56
Post #19





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

Ostrzeżenie: (0%)
-----


wiem ze ie ten temat ale może ktoś by mi pomógł jeszcze w tym,zrobiłem w rejestracji hashowanie haseł takim kodem i wszytko jest okej,pojawia się w bazie jako hash tylko problem jest przy zalogowaniu,hasło nie działa,muszę wpisać ten hash żeby mnie puściło na konto
  1. $haslo_hash = password_hash($haslo1, PASSWORD_DEFAULT);
Go to the top of the page
+Quote Post
nospor
post 6.06.2019, 15:18:30
Post #20





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




https://www.php.net/manual/en/function.password-verify.php


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 29.03.2024 - 07:01