Tema de gandire - concurs

Secţiune dedicată începatorilor.

Moderatori: Moderatori, Start Moderator

Avatar utilizator
socu
Senior Member
Mesaje: 470
Membru din: Mie Apr 22, 2009 11:05 pm
Localitate: Marghita

Re: Tema de gandire - concurs

Mesajde socu » Lun Noi 04, 2013 12:48 pm

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.



starlays
PHPRomania Supporter
Mesaje: 26
Membru din: Joi Aug 25, 2011 3:00 pm

Re: Tema de gandire - concurs

Mesajde starlays » Lun Noi 04, 2013 10:25 pm

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.
Imagine 100% Linux

ewsjobs
New Member
Mesaje: 3
Membru din: Joi Feb 06, 2014 3:54 pm

Re: Tema de gandire - concurs

Mesajde ewsjobs » Joi Feb 06, 2014 4:00 pm

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...

Avatar utilizator
Birkoff
Senior Member
Mesaje: 6378
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Re: Tema de gandire - concurs

Mesajde Birkoff » Joi Feb 06, 2014 11:15 pm

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 :D

Se cere:
sa se genereze structura de tabele (tabelele si coloanele lor) necesare pentru toate cerintele specificate mai sus :D
(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.

pjanooo
PHPRomania Supporter
Mesaje: 5
Membru din: Lun Aug 19, 2013 8:23 pm

Re: Tema de gandire - concurs

Mesajde pjanooo » Vin Mai 23, 2014 4:50 pm

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 :D



Stiu ca e cam tarziu, dar nu m-am putut abtine :lol:

$url = "http://subdomeniu.domeniu.ext/dir1/dir2/";
$p = ereg("^(http://subdomeniu)\.([[:alnum:]]+)\.([[:alnum:]]+)", $url, $reg);
echo ".",$reg[2],".",$reg[3];

E bine?

Avatar utilizator
socu
Senior Member
Mesaje: 470
Membru din: Mie Apr 22, 2009 11:05 pm
Localitate: Marghita

Re: Tema de gandire - concurs

Mesajde socu » Vin Iun 13, 2014 1:26 am

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

Meckmaniack
PHPRomania Supporter
Mesaje: 15
Membru din: Mar Oct 17, 2006 12:46 pm
Contact:

Re: Tema de gandire - concurs

Mesajde Meckmaniack » Mie Sep 17, 2014 11:51 pm

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

Meckmaniack
PHPRomania Supporter
Mesaje: 15
Membru din: Mar Oct 17, 2006 12:46 pm
Contact:

Re: Tema de gandire - concurs

Mesajde Meckmaniack » Joi Sep 18, 2014 10:12 pm

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 :D

Se cere:
sa se genereze structura de tabele (tabelele si coloanele lor) necesare pentru toate cerintele specificate mai sus :D
(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

Avatar utilizator
Birkoff
Senior Member
Mesaje: 6378
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Re: Tema de gandire - concurs

Mesajde Birkoff » Joi Sep 18, 2014 10:25 pm

@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 :D ce faci in situatia asta le bagi la filtre sau separat? (aceeasi problema pentru culori la acelasi produs) :D

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.

Meckmaniack
PHPRomania Supporter
Mesaje: 15
Membru din: Mar Oct 17, 2006 12:46 pm
Contact:

Re: Tema de gandire - concurs

Mesajde Meckmaniack » Vin Sep 19, 2014 6:36 pm

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 :D ce faci in situatia asta le bagi la filtre sau separat? (aceeasi problema pentru culori la acelasi produs) :D

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

TheRoW
PHPRomania Supporter
Mesaje: 13
Membru din: Mar Dec 24, 2013 9:53 pm

Re: Tema de gandire - concurs

Mesajde TheRoW » Vin Oct 10, 2014 1:55 pm

Provocare nouă.
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';
    
}
?>


Înapoi la “PHP Incepători”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Bing [Bot] și 1 vizitator