Problema Explode Array

Buna dimineata !
Dupa cum spune si titlul, am obaza de date cu filme am setat categoria la filme asa

ID NFILM CATEGORIA DATAADD
1 Spectre Filme Noi, Actiune, Aventura 23-01-2016
2 Spider-Man Actiune, Aventura, Drama 23-01-2016

Lista poate continua foarteee mult…

Ideea e alta vreau sa fac un meniu de categorii si vreau sa explode la categorii :slightly_smiling:

$query = “SELECT categoria, COUNT(id) FROM cotos_filme GROUP BY categoria”;
$result = mysql_query($query) or die(mysql_error());
// Print out result
while($row = mysql_fetch_array($result)){
$categoria2=$row[‘categoria’];
$categoria=explode(",",$categoria2);

print_r($categoria);
}

am incercat toate metodele gasite pe net pentru a face unice arrayul … reusesc sa fac 1…dar acolo sunt grupuri din toate alea vreau sa afiseze doar 1 grup array … sper sa intelegeti ceva… Daca nu revin cu detalii mai explicite !

Baza asta de date a ta

  1. a fost construita initial normalizata (3rd normal form), si apoi ai denormalizat-o cu buna stiinta? sau
  2. nu ai auzit de database normalization si a construit schema DB la intamplare?

In functie de raspuns, vei primi ajutor.

Am pus doar cateva detalii din ea…nu cred ca are imp baza de date cat mai mult cum pot face un totul ceea ce este acolo :frowning:

Asa crezi? Exceptional rationament.

Deci 1. sau 2.?

Array
(
[0] => Actiune
[1] => Filme Online
[2] => Horror
[3] => Sf
)
Array
(
[0] => Actiune
[1] => Filme Online
[2] => Indiene
[3] => Istoric
)
Array
(
[0] => Actiune
[1] => Filme Online
[2] => Sf
[3] => Thriller
)
Array
(
[0] => Actiune
[1] => Filme Online
[2] => Sf
[3] => Western
)
Array
(
[0] => Biografie
[1] => Drama
[2] => Filme Online
)
Array
(
[0] => Biografie
[1] => Drama
[2] => Filme Online
[3] => Istoric
)
Array
(
[0] => Comedie
[1] => Drama
[2] => Filme Online
)
Array
(
[0] => Comedie
[1] => Filme Online
)
Array
(
[0] => Crima
[1] => Drama
[2] => Filme Online
[3] => Indiene
)
Array
(
[0] => Drama
[1] => Filme Online
)
Array
(
[0] => Drama
[1] => Filme Online
[2] => Horror
[3] => Thriller
)
Array
(
[0] => Drama
[1] => Filme Online
[2] => Razboi
)
Array
(
[0] => Drama
[1] => Filme Online
[2] => Razboi
[3] => Thriller
)
Array
(
[0] => Drama
[1] => Filme Online
[2] => Thriller
)
Array
(
[0] => Filme Online
[1] => Horror
[2] => Sf
)
Array
(
[0] => Filme Online
[1] => Thriller
)

Ai de gand sa ma ajuti sau ? ca nu inteleg sincer la ce te referi

Eu am de gand sa te ajut, dar nu te pot ajuta cu forta. Trebuie ca si tu sa participi la discutie de ca si cum ai fi ajutabil.

Atunci fi un pic mai explicit… dau sql de la tabele ? sa vezi despre ce este vorba ?

Te-am intrebat ceva: 1. sau 2.?

$query = “SELECT categoria, COUNT(id) FROM cotos_filme GROUP BY categoria”;
$result = mysql_query($query) or die(mysql_error());
// Print out result
while($row = mysql_fetch_array($result)){
$categoria2=$row[‘categoria’];
$categoria=explode(",",$categoria2);
foreach ($categoria as $val)
{

if(strlen($val)>3)
echo “” . trim($val) . “”;
}
}

Acesta este un cod final prin care am obtinut

ActiuneFilme OnlineHorrorActiuneFilme OnlineIndieneIstoricActiuneFilme OnlineThrillerActiuneFilme OnlineWesternBiografieDramaFilme OnlineBiografieDramaFilme OnlineIstoricComedieDramaFilme OnlineComedieFilme OnlineCrimaDramaFilme OnlineIndieneDramaFilme OnlineDramaFilme OnlineHorrorThrillerDramaFilme OnlineRazboiDramaFilme OnlineRazboiThrillerDramaFilme OnlineThrillerFilme OnlineHorrorFilme OnlineThriller

sunt duplicate grav si nu reusesc nici cum…

Si ti-am raspuns ca nu stiu despre ce vorbesti…posibil sa fie 2

Acum citesc despre normalizarea bazei de date… am creato eu asa cum o vezi asa cu buna stiinta…ca aveam deja codul care ma ajuta sa despachetez toate prostiile alea…dar mai nou am sters acel script…si nu mai stiu cum era codul si nici sa fac altul nu mai gasesc solutie !

Cum adica nu stii? Trebuie sa stii si tu ce stii, adica daca te intreaba cineva “stii ce inseamna abramburicesc”, dar tu nu ai auzit in viata ta de el, atunci raspunsul tau clar este “nu”, nu “nu stiu daca stiu sau nu”. E logica elementara.

Bun, deci nu stii ce e aia database normalization.

Bazele de date nu se concep dupa ureche, trebuie mai intai sa inveti despre asta, si apoi sa te apuci de conceptia schemei ei.

Altfel vei avea probleme grave de performanta si de functionalitate - cum vezi in cazul tau, “intrari duplicate”.

Tu ai acolo probleme pe care nici nu constientizezi ca le ai.

Ai nevoie de articole care iti explica cum e cu database normalization sau de carti? Sau te descurci singur?

In functie de raspuns, vei mai primi ajutor.

Mai ajutat foarte mult… Daca voiam sa impart baza de date in tabela categorii si filme si sa fac legatura intre ele o faceam… Dar nu asta urmaresc sa fac… vreau sa ramana exact asa cum e si sa separ acele duplicate… Stii sau nu, simplu !?

http://www.elth.pub.ro/~preda/teaching/BDE/BDE_5.pdf

Am gasti foarte detaliat despre ea… acum stiu ce este… ideea este ca stiu php la nivel de practiva… teorie si denumiri mai deloc…de aceea nu intelegeam ce vrei sa-mi spui…

Deci tu vrei sa calci in picioare mai toate principiile sanatoase de DB design, sa ramai cu probleme de performanta, sa ramai cu probleme de functionalitate pentru a caror rezolvare vei folosi mereu carpeli.

Imi pare rau, dar aceasta abordare este singura cu care nu te pot ajuta.

Succes!

Nu mai ajutatat tu foarte mult…dar m-ai facut sa zambesc : "Deci tu vrei sa calci in picioare mai toate principiile sanatoase de DB design "

Considera ca-ti dau un array atunci nu o baza de date si trebuie sa grupezi toate array-urile si sa le faci unice… la asta te pricepi ?

Eu ma pricep, dar asta e o carpeala, pentru ca nu adreseaza sursa problemei - the root cause.

Oricine poate lua un rahat si il modela in forma de tort si ii infige niste lumanari deasupra.

Asta nu inseamna ca va avea gust bun.

1 Like

Nu te contrazic ai perfecta dereptate… Ideea e ca eu toate filmele le preiau dupa alte site-uri si le iau cum le vezi…
$categoria = explode(‘Posted in ‘, $video);
$categoria = explode(’<img src=’,$categoria[1]);
$categoria = $categoria[0];
$categoria=strip_tags($categoria);
$categoria = trim($categoria);

Ca sa fac sa-mi adauge categoriile intr-un tabel separat as munci de 5x mai mult decat sa fac acel array fara duplicate… … ori nu stii ori chiar nu vrei sa ajuti … nu inteleg !

Bun, le iei anapoda, dar nu aici e problema.

Le iei anapoda, apoi le inserezi normalizat in baza TA de date - care, fiind a ta, e in controlul tau absolut - si apoi nu vei mai avea probleme la multe banalitati precum asta.

Vei face un JOIN si gata.

In general, e valabila ideea: cand rezolvi o problema cu o solutie rapida, INSA aceasta solutie genereaza multe alte probleme enervante in pasi ulteriori, atunci rezolvarea initiala e cauza primordiala a tuturor celorlalte probleme.

1 Like