Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Zliczanie powtarzających się wyrazów w stringu
DjMazik
post 29.05.2020, 11:16:29
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 29.05.2020

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


Cześć, dostałem zadanie zrobienia projektu "pizzeria", jako część z niego muszę zrobić zliczanie ile danych produktów zostało sprzedanych w danym miesiącu.

Przykładowy wpis z tabeli SQL z zamówieniami:
Wiejska(mała)x1, Farmerska(średnia)x2, Szefa(mała)x3, Coca Cola(330ml)x3, Fanta(500ml)x4, Tyskie butelka(330ml)x2,

Muszę połączyć wszystkie wpisy z składami zamówienia i zliczyć ile coś zostało zamówione w danym czasie.

Mój kod

  1. //$odc2 i $doc2 - daty
  2.  
  3. $zap=mysqli_query($baza,"SELECT sklad FROM zamowienia WHERE data_zamowienia BETWEEN '$odc2' AND '$doc2'");
  4.  
  5. while($dane=mysqli_fetch_array($zap))
  6. {
  7. $sklad=$dane['sklad'];
  8. $r1=explode(",",$sklad);
  9.  
  10. foreach($r1 as $el)
  11. {
  12. if(in_array($el,$r1))
  13. {
  14. $ex=explode("x",$el);
  15. for($i=0;$i<$ex[1];$i++)
  16. {
  17. $all=$all." ".$ex[0];
  18. }
  19. }
  20. }
  21. }


wtedy $all to string:
Szefa(mała) Szefa(mała) Szefa(mała) Szefa(mała) Szefa(mała) Szefa(mała) Mięsna(mała) Mięsna(mała) Mięsna(mała) Wiejska(mała) Farmerska(średnia) Farmerska(średnia) Szefa(mała) Szefa(mała) Szefa(mała) Coca Cola(330ml) Coca Cola(330ml) Coca Cola(330ml) Fanta(500ml) Fanta(500ml) Fanta(500ml) Fanta(500ml) Tyskie butelka(330ml) Tyskie butelka(330ml)"

I teraz mam problem jak zliczyć powtórzenia danych pozycji w tym stringu i dać do takiej postaci:
Szefa(mała)x[ilość]. itp.



Proszę o pomoc

Ten post edytował DjMazik 29.05.2020, 11:27:08
Go to the top of the page
+Quote Post
nospor
post 29.05.2020, 11:52:33
Post #2





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




zamiast z $all robic text, zrob z tego tablice

  1. $ex=explode("x",$el);
  2. for($i=0;$i<$ex[1];$i++)
  3. {
  4. $all []= $ex[0];
  5. }

a potem juz tylko
https://www.php.net/manual/en/function.arra...ount-values.php
i masz co chcesz

ps: ten warunek
if(in_array($el,$r1))
jest totalnie zbedny. Przeciez $el powstaje w wyniku iteracji po $r1 wiec logiczne ze w niej jest


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

"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
DjMazik
post 29.05.2020, 12:00:45
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 29.05.2020

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


Dziękuję za pomoc, poradziłem sobie właśnie poprzez array_count_values smile.gif
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: 24.04.2024 - 23:22