ideea ta e destul de buna, dar asa cum ai facut ai nevoie de doua parcurgeri:
1) ca sa iei rezultatele din BD intr-un array
2) foreach-ul cu care construiesti structura ceruta
Incearca sa excluzi acel array_combine si sa scoti acel if din foreach. Mai exact, singura strctura repetitiva ar trebui sa fie aia in care iei rezultatele din BD si tot acolo sa construiesti arrayul cerut.
Tema de gandire - concurs
Moderatori: Moderatori, Start Moderator
Re: Tema de gandire - concurs
socu scrie:ideea ta e destul de buna, dar asa cum ai facut ai nevoie de doua parcurgeri:
1) ca sa iei rezultatele din BD intr-un array
2) foreach-ul cu care construiesti structura ceruta
Incearca sa excluzi acel array_combine si sa scoti acel if din foreach. Mai exact, singura strctura repetitiva ar trebui sa fie aia in care iei rezultatele din BD si tot acolo sa construiesti arrayul cerut.
Am facut acel array ca să simulez result-setul ce se obține în urma interogarii:
socu scrie:Sa se obtina array-ul de mai jos (afisat cu print_r()) folosind o singura structura repetitiva
(exclus functii recursive), adica parcurgandu-se o singura data result-setul interogarii.
Eu de aici nu am ințeles că trebuie într-un singur foreach să scot și rezultatele din baza de date și să le și parcurg, am înțeles fix ce mi s-a indicat.
OK, mă uit să văd cum adaptez soluția conform noilor cerințe. Mersi.
100% Linux
Re: Tema de gandire - concurs
socu scrie:ideea ta e destul de buna, dar asa cum ai facut ai nevoie de doua parcurgeri:
1) ca sa iei rezultatele din BD intr-un array
2) foreach-ul cu care construiesti structura ceruta
Incearca sa excluzi acel array_combine si sa scoti acel if din foreach. Mai exact, singura strctura repetitiva ar trebui sa fie aia in care iei rezultatele din BD si tot acolo sa construiesti arrayul cerut.
sunt de acceasi parere...
- Birkoff
- Senior Member
- Mesaje: 6380
- Membru din: Joi Mar 18, 2004 2:34 pm
- Localitate: Bucuresti
- Contact:
Re: Tema de gandire - concurs
vad ca nu se mai pun provocari noi, asa ca vin eu cu una noua:
Provocare noua
Se da, un magazin virtual, cu urmatoarele informatii de care trebuie sa se tina cont:
1) exista o lista de categorii
2) la fiecare categorie se pot adauga filtre specifice (unele obligatorii de completat altele optionale) cum ar fi culoare, marime etc (clientul trebuie sa le genereze cand creaza o categorie noua)
3) la adaugarea unui produs intr-o categorie trebuie sa ii afiseze imputuri pentru filtrele respective sa completeze valorile (deci generat dinamic inputurile)
4) cand un vizitator intra pe o categorie, scriptul din acea pagina trebuie sa vada ce filtre are acea categorie, ce valori si sa generezi un meniu pe baza filtrelor si valorilor sa aiba vizitatorul de unde alege
5) trebuie sa se tina cont ca magazinul e multi language... trebuie sa afisezi texele si valorile la filtre in limba aleasa
Se cere:
sa se genereze structura de tabele (tabelele si coloanele lor) necesare pentru toate cerintele specificate mai sus
(si sa se explice putin fiecare ce fac si care e legatura dintre ele)
(nu va cer cod ca ar fi kilometric, si asa sunt destule tabele)
Provocare noua
Se da, un magazin virtual, cu urmatoarele informatii de care trebuie sa se tina cont:
1) exista o lista de categorii
2) la fiecare categorie se pot adauga filtre specifice (unele obligatorii de completat altele optionale) cum ar fi culoare, marime etc (clientul trebuie sa le genereze cand creaza o categorie noua)
3) la adaugarea unui produs intr-o categorie trebuie sa ii afiseze imputuri pentru filtrele respective sa completeze valorile (deci generat dinamic inputurile)
4) cand un vizitator intra pe o categorie, scriptul din acea pagina trebuie sa vada ce filtre are acea categorie, ce valori si sa generezi un meniu pe baza filtrelor si valorilor sa aiba vizitatorul de unde alege
5) trebuie sa se tina cont ca magazinul e multi language... trebuie sa afisezi texele si valorile la filtre in limba aleasa
Se cere:
sa se genereze structura de tabele (tabelele si coloanele lor) necesare pentru toate cerintele specificate mai sus
(si sa se explice putin fiecare ce fac si care e legatura dintre ele)
(nu va cer cod ca ar fi kilometric, si asa sunt destule tabele)
1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.
Re: Tema de gandire - concurs
Birkoff scrie:tema de gandire:
Se da un sir de forma 'ceva.blabla.xx' sau 'abc.cde.fgh.hij' sau 'http://subdomeniu.domeniu.ext/dir1/dir2/'
(stringul este de fapt o adresa url care poate contine doar domeniu si extensia sau poate contine o cale completa catre o pagina)
Se cere cea mai optima solutie care sa returneze din acel string domeniul si extensia cu punct in fata domeniului.
adica .blabla.xx sau .fgh.hij sau .domeniu.ext
fara altceva din acel string
Astept sugestii, apoi vin si eu cu solutia mea
Stiu ca e cam tarziu, dar nu m-am putut abtine
$url = "http://subdomeniu.domeniu.ext/dir1/dir2/";
$p = ereg("^(http://subdomeniu)\.([[:alnum:]]+)\.([[:alnum:]]+)", $url, $reg);
echo ".",$reg[2],".",$reg[3];
E bine?
Re: Tema de gandire - concurs
Nu, chiar deloc.
1. ereg() e deprecated
2. solutia ta nu e generala, de fapt e una asa de concreta incat codul tau e aproape echivalent cu: echo ".domeniu.ext";
3. nu vei reusi cu regex, poti sa acoperi doar o parte
4. trebuia sa-ti compari codul cu alte solutii si sa folosesti acele url-uri de test
1. ereg() e deprecated
2. solutia ta nu e generala, de fapt e una asa de concreta incat codul tau e aproape echivalent cu: echo ".domeniu.ext";
3. nu vei reusi cu regex, poti sa acoperi doar o parte
4. trebuia sa-ti compari codul cu alte solutii si sa folosesti acele url-uri de test
-
- PHPRomania Supporter
- Mesaje: 15
- Membru din: Mar Oct 17, 2006 12:46 pm
- Contact:
Re: Tema de gandire - concurs
Birkoff, mai asteapta te rog pana vineri seara. As avea eu o idee, dar trebuie sa o testez.
STIU CA SUNT PROST, DAR, CAND MA UIT IN JUR, PRIND CURAJ
-
- PHPRomania Supporter
- Mesaje: 15
- Membru din: Mar Oct 17, 2006 12:46 pm
- Contact:
Re: Tema de gandire - concurs
Birkoff scrie:vad ca nu se mai pun provocari noi, asa ca vin eu cu una noua:
Provocare noua
Se da, un magazin virtual, cu urmatoarele informatii de care trebuie sa se tina cont:
1) exista o lista de categorii
2) la fiecare categorie se pot adauga filtre specifice (unele obligatorii de completat altele optionale) cum ar fi culoare, marime etc (clientul trebuie sa le genereze cand creaza o categorie noua)
3) la adaugarea unui produs intr-o categorie trebuie sa ii afiseze imputuri pentru filtrele respective sa completeze valorile (deci generat dinamic inputurile)
4) cand un vizitator intra pe o categorie, scriptul din acea pagina trebuie sa vada ce filtre are acea categorie, ce valori si sa generezi un meniu pe baza filtrelor si valorilor sa aiba vizitatorul de unde alege
5) trebuie sa se tina cont ca magazinul e multi language... trebuie sa afisezi texele si valorile la filtre in limba aleasa
Se cere:
sa se genereze structura de tabele (tabelele si coloanele lor) necesare pentru toate cerintele specificate mai sus
(si sa se explice putin fiecare ce fac si care e legatura dintre ele)
(nu va cer cod ca ar fi kilometric, si asa sunt destule tabele)
Sper ca nu e o provocare veche, mie mi-o arata din 06 februarie, dar cred ca e o pb la forum.
structura de tabele, dupa parerea mea, ar fi urmatoarea:
Cod: Selectaţi tot
CREATE TABLE `categorii` (
`Idcateg` BIGINT(20) NOT NULL AUTO_INCREMENT,
`Dencateg` VARCHAR(255) NOT NULL,
PRIMARY KEY (`Idcateg`)
);
CREATE TABLE `filtrecateg` (
`Idfiltru` BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`Idcateg` BIGINT(20) NOT NULL,
`principal` TINYINT(1) NOT NULL,
`culoare` VARCHAR(255) NOT NULL,
`marime` BIGINT(20) NOT NULL,
`detaliu1` VARCHAR(255) NOT NULL,
`detaliu2` VARCHAR(255) NOT NULL,
CONSTRAINT fk_categ FOREIGN KEY (Idcateg) REFERENCES categorii(Idcateg)
);
CREATE TABLE `lang` (
`Idlang` BIGINT(20) NOT NULL AUTO_INCREMENT,
`Limba` VARCHAR(255) NOT NULL,
PRIMARY KEY (`Idlang`)
);
CREATE TABLE `langfiltre` (
`Idlf` BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`Idfiltru` BIGINT(20) NOT NULL,
`Idlang` BIGINT(20) NOT NULL,
`culoare` VARCHAR(255) NOT NULL,
`marime` BIGINT(20) NOT NULL,
`detaliu1` VARCHAR(255) NOT NULL,
`detaliu2` VARCHAR(255) NOT NULL,
CONSTRAINT fk_categ FOREIGN KEY (Idfiltru) REFERENCES filtrecateg(Idfiltru),
CONSTRAINT fk_lang FOREIGN KEY (Idlang) REFERENCES lang(Idlang)
);
CREATE TABLE `produse` (
`Idprod` BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`Idcateg` BIGINT(20) NOT NULL,
`Idfiltru` BIGINT(20) NOT NULL,
`numeprod` VARCHAR(255) NOT NULL,
`cantitate` BIGINT(20) NOT NULL,
`pret`BIGINT(20) NOT NULL,
CONSTRAINT fk_categorii FOREIGN KEY (Idcateg) REFERENCES categorii(Idcateg),
CONSTRAINT fk_filtrecateg FOREIGN KEY (Idfiltru) REFERENCES filtrecateg(Idfiltru)
);
CREATE TABLE `langproduse` (
`Idlp` BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`Idprod` BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`Idlang` BIGINT(20) NOT NULL,
`numeprod` VARCHAR(255) NOT NULL,
`cantitate` BIGINT(20) NOT NULL,
`pret`BIGINT(20) NOT NULL,
CONSTRAINT fk_categ FOREIGN KEY (Idprod) REFERENCES produse(Idprod),
CONSTRAINT fk_lang FOREIGN KEY (Idlang) REFERENCES lang(Idlang)
);
Astfel, faci o tabela-parinte in care retii doar categoriile(categorii), apoi una copil in care retii filtrele(filtrecateg). Din ce am inteles, filtrele ar putea fi personalizate pentru fiecare produs din categorie. Astfel, creezi o alta tabela copil pentru tabelele categorii si filtrecateg, unde stochezi produsele(produse). Deoarece este magazin multilingv, am introdus o tabela parinte pentru limbile necesare magazinului(lang) si alte doua tabele copil pentru filtre(langfiltre) si produse(langproduse) in care se stocheaza variantele in alta limba ale produsului/filtrului introdus
Cand se introduc filtrele la o categorie,campul "principal" va primi valoarea 1, altfel, 0 va fi pentru filtrele pe produse din categoria respectiva
Cand vizitatorul va accesa o categorie, va primi filtrele aferente acelei categorii(vor fi citite din filtrecateg), iar daca se va alege alta limba se va alege corespondentul respectivei categorii din langproduse. La fel e si pt produse.
PS: sper ca am inteles bine cerintele.
Ultima oară modificat Vin Sep 19, 2014 6:30 pm de către Meckmaniack, modificat 1 dată în total.
STIU CA SUNT PROST, DAR, CAND MA UIT IN JUR, PRIND CURAJ
- Birkoff
- Senior Member
- Mesaje: 6380
- Membru din: Joi Mar 18, 2004 2:34 pm
- Localitate: Bucuresti
- Contact:
Re: Tema de gandire - concurs
@Meckmaniack da, provocarea e de atunci, dar pana acum nu sa mai bagat nimeni (e destul de complexa pentru incepatori)
varianta ta e ok, dar se poate si mai bine
uite o sugestie (o problema de care m-am lovit) - unele produse pot avea acelasi cod dar gramaje (si preturi/stocuri) diferite ce faci in situatia asta le bagi la filtre sau separat? (aceeasi problema pentru culori la acelasi produs)
daca nu mai participa nimeni in urmatoarele zile cred ca ar fi ok sa preiei tu controlul si sa pui urmatoarea provocare
varianta ta e ok, dar se poate si mai bine
uite o sugestie (o problema de care m-am lovit) - unele produse pot avea acelasi cod dar gramaje (si preturi/stocuri) diferite ce faci in situatia asta le bagi la filtre sau separat? (aceeasi problema pentru culori la acelasi produs)
daca nu mai participa nimeni in urmatoarele zile cred ca ar fi ok sa preiei tu controlul si sa pui urmatoarea provocare
1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.
-
- PHPRomania Supporter
- Mesaje: 15
- Membru din: Mar Oct 17, 2006 12:46 pm
- Contact:
Re: Tema de gandire - concurs
Birkoff scrie:@Meckmaniack da, provocarea e de atunci, dar pana acum nu sa mai bagat nimeni (e destul de complexa pentru incepatori)
varianta ta e ok, dar se poate si mai bine
uite o sugestie (o problema de care m-am lovit) - unele produse pot avea acelasi cod dar gramaje (si preturi/stocuri) diferite ce faci in situatia asta le bagi la filtre sau separat? (aceeasi problema pentru culori la acelasi produs)
daca nu mai participa nimeni in urmatoarele zile cred ca ar fi ok sa preiei tu controlul si sa pui urmatoarea provocare
In cazul propus de mine, nu bagi nimic la filtre, pt ca tabela produse e tabela copil pt filtre. Din experienta, pot spune ca un produs, teoretic, va avea alt cod daca va avea o serie de caracteristici schimbate, deoarece schimbarile tale de stoc trebuie sa se reflecte si in contabilitate. Astfel, pt orice produs asemanator dar cu caracteristici diferite, eu voi introduce o noua inregistrare.
(Ex. : pastilele NoSpa de 80 sunt aproape la fel cu NoSpa de 100, dar au concentratii diferite si preturi, posibil, la fel. Astfel, ele tb introduse separat, pt ca tu sa poti vedea mereu starea stocului tau, in vederea completarii/aplicarii de reduceri/etc.).
In ceea ce priveste provocarea, eu sunt inca incepator in PHP. Lucrul meu cu mediul asta e mai mult un hobby, nu un modus vivendis. Daca imi va veni vreo idee, te anunt pe tine si daca va fi ok, o vom propune ca tema de concurs
STIU CA SUNT PROST, DAR, CAND MA UIT IN JUR, PRIND CURAJ
Re: Tema de gandire - concurs
Provocare nouă.
Tip: Find and fix( află şi repară ).
Cerinţe:
Tip: Find and fix( află şi repară ).
Cerinţe:
- Cand cod-ul este încarcat să afişeze meşteri de meserie fierar betonist din firma 'SC Constructori lu Vasile SRL'.
- Să se creeze o bază de date pentru a funcţiona corect cod-ul
- Reîncărcaţi cod-ul de 3-4 ori.
Cod: Selectaţi tot
<?php
$connection = mysqli_connect( "localhost", "root", "", "test" );
$result = mysqli_query( $connection, "'Insert into `db` (Nume,Meserie) VALUES ('Vasile, 'Fierar Betonist')" );
if( $result )
{
$result = mysqli_query( $connection, "SELECT Nume FROM `db` WHERE 'Meserie' = 'Fierar Betonist' LIMIT 1;" );
$betonisti = mysqli_num_rows( $result );
echo 'Fierari betonisti = '.$betonisti.' in firma SC Constructori lu Vasile SRL';
}
?>
Cine este conectat
Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 101 vizitatori