Rezultate 1 la 8 din 8

Subiect: Interogare baza de date

  1. #1
    Avatarul lui Cornelius
    Cornelius este deconectat Membru SeoPedia
    Reputatie:
    26
    Data înscrierii
    5th March 2009
    Locaţie
    Bucuresti
    Vârstă
    41
    Posturi
    102
    Putere Rep
    26


    Implicit Interogare baza de date

    Salut,

    am si eu o problema cu interogarea unui tabel dintr-o baza de date, am vazut ca sunt cunoscatori prin zona si m-am gandit ca poate ma ajuta si pe mine cineva!

    Am un tabel intr-o baza de date care contine date sumare despre articole printre care si metakeyword-urile aferente articolului, fiecare articol are keyword-uri diferite dar la unele se mai si repeta; sa zicem ca primul articol are 3 keyword-uri separate prin virgula "aunturi bmw, bmw 320d, bmw diesel" iar cel de-al doilea "anunturi bmw, bmw 318i, bmw benzina", acum vine si intrebarea mea, cum ar trebui sa arate query-ul care face trimitere catre coloana respectiva din baza de date pentru a-mi intoarce numai valorile unice "anunturi bmw, bmw 320d, bmw 318i, ....."?

    Orice idee este bine venita , ms anticipat!

  2. #2
    Avatarul lui laufer
    laufer este deconectat Ambasador
    Reputatie:
    31
    Data înscrierii
    10th February 2006
    Locaţie
    Constanta
    Vârstă
    39
    Posturi
    398
    Putere Rep
    31


    Implicit

    Pai rezultatele le bagi intr-un array si apoi cu array_unique extragi valorile distincte.

  3. #3
    Avatarul lui Gabriel Puscuta
    Gabriel Puscuta este deconectat Ambasador
    Reputatie:
    32
    Data înscrierii
    7th September 2006
    Locaţie
    Sibiu
    Posturi
    786
    Putere Rep
    32


    Implicit

    Salutare,

    O solutie simpla ar fi:
    Cod PHP:
    $keywords = array();
    $result mysql_query("SELECT keywords FROM tabel");
    while(
    $row mysql_fetch_object($result)){
        
    $kwds explode(',',$row->keywords);
        if(
    is_array($kwds)){
            foreach(
    $kwds as $k){
                
    $keywords[] = trim($k);
            }
        }
        else{
            
    $keywords[] = $kwds;
        }
    }
    $keywords array_unique($keywords); 
    Ma rog... daca e vorba de un singur articol atunci mai pui si "WHERE x = y". Codul ce l-am scris mai sus iti va reda toate cuvintele cheie unice din tabela si poti sa renunti la bucla while. (ex: $row = mysql_fetch_object($result)); Daca nu te descurci da un reply sau da mai multe detalii. Ce am scris e un fel de tag cloud.

    Pentru a face direct pe query iti trebuie o procedura stocata.
    Ultima modificare făcută de Gabriel Puscuta; 17th January 2011 la 20:55.

  4. #4
    Avatarul lui Netul
    Netul este deconectat Ambasador
    Reputatie:
    43
    Data înscrierii
    5th January 2006
    Locaţie
    Iasi
    Vârstă
    44
    Posturi
    1.065
    Putere Rep
    43


    Implicit

    Pai fiecare inregistrare (rand din tabel) corespunde unui articol, deci nu inteleg ce vrei sa zici..

    Sau vrei sa faci ceva gen Tag Clod, si sa extragi toate keywordurile si sa elimini pe cele duplicat?
    Edit: Daca da, solutiile s-au dat mai sus, cu adaugare intr-un array si apoi cu array_unique.

  5. #5
    Avatarul lui Cornelius
    Cornelius este deconectat Membru SeoPedia
    Reputatie:
    26
    Data înscrierii
    5th March 2009
    Locaţie
    Bucuresti
    Vârstă
    41
    Posturi
    102
    Putere Rep
    26


    Implicit

    ms mult tuturor pentru raspunsurile prompte!

    imi dare rau dar sunt cam "noob" motiv pentru care raspunsul destul de detaliat dat de Gabriel nu mi-a rezolvat problema, iata de ce revin cu mai multe detalii.

    Folosesc joomla pentru site si am urmatorul query:
    Cod PHP:
        $db = &JFactory::getDBO();
        
    $db->setQuery($query);
        
    $query " SELECT metakey FROM #__sobi2_item WHERE published = 1 ";
            
    $db->setQuery($query);
            
    $column$db->loadResultArray();
            
    print_r($column); 
    acesta imi intoarce urmatoarele rezultate:
    Cod:
    Array ( [0] => aunturi bmw, bmw 320d, bmw diesel [1] => anunturi bmw, bmw 318i, bmw benzina )
    pana aici toate bune si frumoase, de aici mai departe nu mai reusesc sa iau valorile din Array si sa le elimin pe cele duplicate .

    @netul, da vreau ceva de gen Tag Clod!

  6. #6
    Avatarul lui ant7
    ant7 este deconectat Membru SeoPedia
    Reputatie:
    23
    Data înscrierii
    10th September 2010
    Locaţie
    bucuresti / constanta
    Posturi
    91
    Putere Rep
    23


    1 out of 1 members found this post helpful.

    Implicit

    daca grupezi toate rezultatele intr-unul singur, lucrurile se simplifica un pic:
    interogarea ta s-ar schimba in "SELECT GROUP_CONCAT(metakey) AS cuvinteCheie FROM #__sobi2_item WHERE published = 1"
    restul (pot fi grupate toate intr-un singur rand de cod, dar asa e mai pe citibil):
    Cod:
    $cuvinteCheie=explode(',',$column);
    $cuvinteCheie=array_map('trim',$cuvinteCheie);
    $cuvinteCheie=array_unique($cuvinteCheie);
    daca nu doresti sa schimbi interogarea, poti face asa:
    Cod:
    $cuvinteCheie=implode(',',$column);
    $cuvinteCheie=explode(',',$cuvinteCheie);
    $cuvinteCheie=array_map('trim',$cuvinteCheie);
    $cuvinteCheie=array_unique($cuvinteCheie);
    am presupus ca $column este array si contine intotdeauna cel putin un element... ar fi bine sa verifici intai...
    Ultima modificare făcută de ant7; 17th January 2011 la 23:26.

  7. #7
    Avatarul lui Gabriel Puscuta
    Gabriel Puscuta este deconectat Ambasador
    Reputatie:
    32
    Data înscrierii
    7th September 2006
    Locaţie
    Sibiu
    Posturi
    786
    Putere Rep
    32


    1 out of 1 members found this post helpful.

    Implicit

    @Cornelius: Exact acelasi rezultat ar fi trebuit sa scoata si interogarea care am scris-o.

    Pune asa acolo:
    Cod PHP:
    $db = &JFactory::getDBO();
    $db->setQuery($query);
    $query " SELECT metakey FROM #__sobi2_item WHERE published = 1 ";
    $db->setQuery($query);
    $column$db->loadResultArray();

    //$column = array( 0 => 'anunturi bmw, bmw 320d, bmw diesel', 1 => 'anunturi bmw, bmw 318i, bmw benzina');
    foreach($column as $key => $kwds){
        
    $kwds explode(',',$kwds);
        if(
    is_array($kwds)){
            foreach(
    $kwds as $k){
                
    $keywords[] = trim($k);
            }
        }
        else{
            
    $keywords[] = $kwds;
        }
    }

    //keyworduri unice
    $unique_keywords array_unique($keywords);
    print_r($keywords);
    //@return: Array ( [0] => aunturi bmw [1] => bmw 320d [2] => bmw diesel [3] => anunturi bmw [4] => bmw 318i [5] => bmw benzina ) 

    //pentru tag cloud
    //unde valoarea = numarul de cuvinte gasite
    $tags array_count_values($keywords);
    print_r($tags);
    //@return: Array ( [anunturi bmw] => 2 [bmw 320d] => 1 [bmw diesel] => 1 [bmw 318i] => 1 [bmw benzina] => 1 ) 

  8. #8
    Avatarul lui Cornelius
    Cornelius este deconectat Membru SeoPedia
    Reputatie:
    26
    Data înscrierii
    5th March 2009
    Locaţie
    Bucuresti
    Vârstă
    41
    Posturi
    102
    Putere Rep
    26


    Implicit

    ms mult celor care au postat, am rezolvat problema si dupa cum spune si @Gabriel acelasi rezultat scotea si prima varianta data de el numai ca nu o vedeam de "nas" !

Informații subiect

Utilizatori care navighează în acest subiect

Momentan este/sunt 1 utilizator(i) care navighează în acest subiect. (0 membrii și 1 vizitatori)

Thread-uri Similare

  1. Baza de date clienti - PC
    De Dragos Nicu în forumul Bar, lobby...
    Răspunsuri: 6
    Ultimul Post: 6th February 2010, 14:19
  2. Link din baza de date
    De Federals în forumul Server side
    Răspunsuri: 15
    Ultimul Post: 28th June 2009, 21:58
  3. Integrare baza de date.
    De superbus în forumul Servicii web / Jobs
    Răspunsuri: 4
    Ultimul Post: 14th October 2008, 22:27
  4. Baza de date :)
    De Sebastian în forumul Bar, lobby...
    Răspunsuri: 3
    Ultimul Post: 10th September 2008, 00:05
  5. Baza de date
    De eRwin în forumul Server side
    Răspunsuri: 5
    Ultimul Post: 26th August 2005, 10:10

Etichete pentru acest subiect

Permisiuni postare

  • Nu puteţi posta subiecte noi.
  • Nu puteţi răspunde la subiecte
  • Nu puteţi adăuga ataşamente
  • Nu puteţi modifica posturile proprii
  •