WIK Posted June 7, 2016 Report Posted June 7, 2016 As dori ca cine-va sa ma ajute daca se poate cu un script php care genereaza dupa o lista de meniuri, 4 produse random ex: Felul 1 felul 2 salata desert ideea este ca trebuie sa fie generate random sa nu sa se repete felurile de la zi la alta, si sa fie pe 5 zile lucratoare. Nu cer ca cine-va sa-mi faca scriptul, cer decat o idee cam cum sa incep, sau de ce functii sa ma folosesc, tin sa precizez ca sunt incepator in domeniul programarii asa ca nu ma descurc chiar foarte bine. Quote
soimuletzu1 Posted June 7, 2016 Report Posted June 7, 2016 http://php.net/manual/ro/function.array-rand.php 1 Quote
BogdanWDK Posted June 8, 2016 Report Posted June 8, 2016 (edited) Sa presupunem ca ai o baza de date unde ai 5 tabele : - Felul 1 - Felul 2 - Salata - Desert - Istoric Faci un script care sa extraga din fiecare tabel cate un item (presupun ca unele din felul 1 se gasesc si in felul 2 , asa ca o sa le dam acelasi ID de identificare , urmat de o conditie unde daca felul 1 = felul 2 ,reextragem din tabel alt fel de mancare ) iar apoi sa adauge in tabelul istoric ce a extras. Asa , urmatoarea zi cand scriptul va fi rulat el va verifica daca nu cumva ce a extras azi n-a cazut si ieri. Daca ce a iesit azi a fost si ieri , sa ia alt item din tabelul respectiv. Daca ai rabdare pana maine cand ajung acasa, te pot ajuta sa-l faci. Edited June 8, 2016 by STiL 1 Quote
QuoVadis Posted June 8, 2016 Report Posted June 8, 2016 11 hours ago, WIK said: As dori ca cine-va sa ma ajute daca se poate cu un script php care genereaza dupa o lista de meniuri, 4 produse random ex: Felul 1 felul 2 salata desert ideea este ca trebuie sa fie generate random sa nu sa se repete felurile de la zi la alta, si sa fie pe 5 zile lucratoare. Nu cer ca cine-va sa-mi faca scriptul, cer decat o idee cam cum sa incep, sau de ce functii sa ma folosesc, tin sa precizez ca sunt incepator in domeniul programarii asa ca nu ma descurc chiar foarte bine. Daca nu e musai sa fie php (web-based), si e pentru internal admin (sa zicem un restaurant sau mai stiu eu ce), poti face in Excel cu functii si daca e nevoie sa fie accesibil pe web il pui in Google Sheets. 1 Quote
Robert1995 Posted June 8, 2016 Report Posted June 8, 2016 9 hours ago, STiL said: Sa presupunem ca ai o baza de date unde ai 5 tabele : - Felul 1 - Felul 2 - Salata - Desert - Istoric Faci un script care sa extraga din fiecare tabel cate un item (presupun ca unele din felul 1 se gasesc si in felul 2 , asa ca o sa le dam acelasi ID de identificare , urmat de o conditie unde daca felul 1 = felul 2 ,reextragem din tabel alt fel de mancare ) iar apoi sa adauge in tabelul istoric ce a extras. Asa , urmatoarea zi cand scriptul va fi rulat el va verifica daca nu cumva ce a extras azi n-a cazut si ieri. Daca ce a iesit azi a fost si ieri , sa ia alt item din tabelul respectiv. Daca ai rabdare pana maine cand ajung acasa, te pot ajuta sa-l faci. 5 tabele ? esti nebun ? product ( felul 1 / felul 2 / salata / desert ) + category 2 tabele. ai doar 2 tabele daca e pana acolo, cel mai important e sa faci select-ul bine, nu stiu sigur daca asta ruleaza, dar 90% sigur merge, am mai facut. Ai nevoie de ORDERING random pe toate records din product table, apoi SELECT IN SELECT pentru ca ai nevoie si de ORDER BY si de GROUP BY, prima oara clar de ORDER BY, si folosim WHERE id NOT IN pentru ca n-am vazut restaurant cu volum asa mare de date incat asta sa fie o problema. product ( felul 1 / felul 2 / salata / desert ) id category_id name SELECT * FROM ( SELECT * FROM `product` WHERE `id` NOT IN ( 0,1,2,3,4,5 ) ORDER BY RAND() ) p1 GROUP BY p1.category_id LIMIT 4 1 Quote
EAdrian Posted June 8, 2016 Report Posted June 8, 2016 De ce nu extragi produsele o dată la 5 zile şi apoi să le ţii în cache? 1 Quote
SticKyWoX Posted June 8, 2016 Report Posted June 8, 2016 (edited) Ia-l http://codepad.org/7HKv4t9N <?php $mancare = array(); $mancare['f1'] = array("Ciorba de pui", "Ciorba de vacuta", "Ciorba de zarzavat", "Ciorba de porc", "Ciorba de buze de papagal", "Ciorba de saptamana trecuta"); $mancare['f2'] = array("Pulpa de pui cu cartofi prajiti", "Cartofi prajiti cu pulpa de pui", "4 mici cu piure", "Seminte de Braila", "Rabdari prajite", "Shaorma", "Sarmale prajite"); $mancare['s'] = array("Salata de varza", "Salata de vara", "Salata de rosii cu castraveti", "Salata verde", "Salata roz bombon", "Salata de carne de porc"); $mancare['d'] = array("Clatite cu gem", "Clatite cu finetti", "Clatite goale", "Clatite clatite", "Paine cu margarina si gem", "Bomboane", "Caramele"); $zile = array("Guta", "Marti", "Miercuri", "Joi", "Vineri"); $selected = array("este"); foreach($zile as $zi) { echo $zi.": "; foreach($mancare as $fel) { $value = "este"; while(in_array($value, $selected)) { $key = array_rand($fel); $value = $fel[$key]; } $selected[] = $value; echo $value." + "; } echo "<br>".PHP_EOL; } Edited June 8, 2016 by SticKyWoX 5 Quote
WIK Posted June 9, 2016 Author Report Posted June 9, 2016 On 08.06.2016 at 0:26 AM, soimuletzu1 said: http://php.net/manual/ro/function.array-rand.php Merci, dar am gasit si eu asta, si mi-am prins putin urechile, dar am facut ceva ceva. On 08.06.2016 at 3:40 AM, STiL said: Sa presupunem ca ai o baza de date unde ai 5 tabele : - Felul 1 - Felul 2 - Salata - Desert - Istoric Faci un script care sa extraga din fiecare tabel cate un item (presupun ca unele din felul 1 se gasesc si in felul 2 , asa ca o sa le dam acelasi ID de identificare , urmat de o conditie unde daca felul 1 = felul 2 ,reextragem din tabel alt fel de mancare ) iar apoi sa adauge in tabelul istoric ce a extras. Asa , urmatoarea zi cand scriptul va fi rulat el va verifica daca nu cumva ce a extras azi n-a cazut si ieri. Daca ce a iesit azi a fost si ieri , sa ia alt item din tabelul respectiv. Daca ai rabdare pana maine cand ajung acasa, te pot ajuta sa-l faci. M-am gandit si la asta, dar nu am inteles partea cu Quote (presupun ca unele din felul 1 se gasesc si in felul 2 , asa ca o sa le dam acelasi ID de identificare , urmat de o conditie unde daca felul 1 = felul 2 ,reextragem din tabel alt fel de mancare ) deci nu a iesit nimic! 20 hours ago, Robert1995 said: 5 tabele ? esti nebun ? product ( felul 1 / felul 2 / salata / desert ) + category 2 tabele. ai doar 2 tabele daca e pana acolo, cel mai important e sa faci select-ul bine, nu stiu sigur daca asta ruleaza, dar 90% sigur merge, am mai facut. Ai nevoie de ORDERING random pe toate records din product table, apoi SELECT IN SELECT pentru ca ai nevoie si de ORDER BY si de GROUP BY, prima oara clar de ORDER BY, si folosim WHERE id NOT IN pentru ca n-am vazut restaurant cu volum asa mare de date incat asta sa fie o problema. product ( felul 1 / felul 2 / salata / desert ) id category_id name SELECT * FROM ( SELECT * FROM `product` WHERE `id` NOT IN ( 0,1,2,3,4,5 ) ORDER BY RAND() ) p1 GROUP BY p1.category_id LIMIT 4 m-ai bagat in ceata definitiv 19 hours ago, EAdrian said: De ce nu extragi produsele o dată la 5 zile şi apoi să le ţii în cache? Pentru ca produsele se schimba odata pe saptamana pentru fiecare zi in parte din saptamana respectiva, mai exact fiecare zi are meniul ei. 16 hours ago, SticKyWoX said: Ia-l http://codepad.org/7HKv4t9N <?php $mancare = array(); $mancare['f1'] = array("Ciorba de pui", "Ciorba de vacuta", "Ciorba de zarzavat", "Ciorba de porc", "Ciorba de buze de papagal", "Ciorba de saptamana trecuta"); $mancare['f2'] = array("Pulpa de pui cu cartofi prajiti", "Cartofi prajiti cu pulpa de pui", "4 mici cu piure", "Seminte de Braila", "Rabdari prajite", "Shaorma", "Sarmale prajite"); $mancare['s'] = array("Salata de varza", "Salata de vara", "Salata de rosii cu castraveti", "Salata verde", "Salata roz bombon", "Salata de carne de porc"); $mancare['d'] = array("Clatite cu gem", "Clatite cu finetti", "Clatite goale", "Clatite clatite", "Paine cu margarina si gem", "Bomboane", "Caramele"); $zile = array("Guta", "Marti", "Miercuri", "Joi", "Vineri"); $selected = array("este"); foreach($zile as $zi) { echo $zi.": "; foreach($mancare as $fel) { $value = "este"; while(in_array($value, $selected)) { $key = array_rand($fel); $value = $fel[$key]; } $selected[] = $value; echo $value." + "; } echo "<br>".PHP_EOL; } Merci frumos imi este foarte de ajutor ce mi-ai dat, multumesc pentru munca depusa, si pentru faptul ca ai acordat timpul tau pentru realizarea acestei cerinte. O sa incerc sa te recompensez in cazul in care am productivitate cu acest "proiect" Si nu in ultimul rand multumesc tuturor care au incercat sa ma indrepte pe drumul cel bun intr-ale finalizarii acestui "Script" O zi placuta, sper ca acest topic sa ajute si pe alt cineva care este in situatia mea! Quote