Hämta ut kategorier

PHPportalen Forum Index » PHP Mjukstart
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
extra-c



Medlem i: 3374 dagar

Status: Offline



#740787
Inlägg Skrivet: 2016-05-26 15:14      Ämne: Hämta ut kategorier Citera

Tjena!

Har försökt lösa detta problem utan framgång så söker mig till er som är mer kunniga!

Har en funktion där en användare kan posta en artikel till min databas samt ange kategorier för denna artikeln. Kategorier lagras i databasen under fältet kategorier , exempel:

Artikelid, titel, kategorier, av

Kategorierna lagras efter varandra med "," mellan, alltså: sverige,europa,utvecklas

Mitt problem är att kunna visa dessa kategorier för alla användard genom att visa varje kategori för sig själv samt med egen länk.
Alltså försöker jag få det att se ut som:

KOD:
1:
 
2:
<a href="?kategori=sverige">Sverige</a>
3:
<a href="?kategori=europa">Europa</a>
4:
<a href="?kategori=utvecklas">Utvecklas</a>
5:
 


Uppskattar tips och hjälp!
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Azreal
Administratör



Medlem i: 5179 dagar
Från: Uppsala, bor i Göteborg
Status: Offline



#740788
Inlägg Skrivet: 2016-05-26 15:33      Ämne: Citera

Hej,

Dålig design på databasen, att klumpa ihop värden kommaseparetat ger dig exakt det problemet du upplever nu.
Bästa tipset är att designa om databasen och ha kategorier i en egen tabell och ha en kopplingstabell mellan de olika tabellerna.

Om du ska jobba vidare med det du redan har blir det att köra någon form av sökning i den kolumen efter strängen.
Typ SELECT kategorier FROM tabell WHERE kategorier LIKE %sträng%.

Dålig prestanda är vad du kan vänta dig av lösningen.
 

_________________
Konsultation via PM, inte gratis.
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
extra-c



Medlem i: 3374 dagar

Status: Offline



#740789
Inlägg Skrivet: 2016-05-26 17:12      Ämne: Citera

Azreal skrev:
Hej,

Dålig design på databasen, att klumpa ihop värden kommaseparetat ger dig exakt det problemet du upplever nu.
Bästa tipset är att designa om databasen och ha kategorier i en egen tabell och ha en kopplingstabell mellan de olika tabellerna.

Om du ska jobba vidare med det du redan har blir det att köra någon form av sökning i den kolumen efter strängen.
Typ SELECT kategorier FROM tabell WHERE kategorier LIKE %sträng%.

Dålig prestanda är vad du kan vänta dig av lösningen.


Det jag hade tänkt mig var ifall man lägger in kategorierna i en tabell och plockar ut varje kategori för sig själv ,genom att skapa en funktion som läser av att före varje "," så finns en egen kategori.

Annars kan jag hålla med dig, dock blev det så eftersom jag använder mig av jquery tags, där användaren kan skriva in olika kategorier i en och samma fält sedan när dom skickas vidare skickar dom som Kategori1,kategori2,kategori3.

Vet inte hur jag bör lösa det annars?

exempel: http://xoxco.com/projects/code/tagsinput/example.html
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
webbhelp



Medlem i: 4677 dagar
Från: Sverige
Status: Offline



#740792
Inlägg Skrivet: 2016-05-27 08:31      Ämne: Citera

Innan du skickar in kategorierna/taggarna i databasen så kör du en explode taggarna:

KOD:
1:
explode(',', $tags);

Då får du en array med alla kategorier utan kommatecken.

Nu kan du loopa igenom alla kategorier och lägga in de i enskilda rader i databasen.

Du kan göra det i en databasfråga genom att skriva något liknande:

KOD:
1:
INSERT INTO tabell_med_kategorier(kategori)VALUES('kat1')VALUES('kat2')VALUES('kat3')


Det finns många sätt att göra, men att ha kategorierna på samma rad, kommaseparerade. Det förstör hela tanken med att ha en databas.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Skicka e-post Besök användarens hemsida MSN Messenger
extra-c



Medlem i: 3374 dagar

Status: Offline



#740805
Inlägg Skrivet: 2016-05-29 15:42      Ämne: Citera

Tack för svaret!

Nu har jag löst det, dock har jag något annat jag behöver hjälp med.

När man söker efter artiklar så kan man skriva in olika kategorier som jag nämnt ovanför. Dessa hamnar som kat1,kat2,kat3 och löser det genom att använda denna koden:


PHP:
1:
<?php
2:
if($tags=="0") { } else { 
3:
 
4:
$mymotives$tags;
5:
      $ExplodeMotives explode(","$mymotives);
6:
        foreach ($ExplodeMotives as  $value)
7:
        {
8:
           
9:
           // Get all the data from the "example" table
10:
                $result mysql_query("SELECT id FROM artiklar WHERE kategori = '$value'"
11:
                or die(mysql_error());  
12:
 
13:
             
14:
                // keeps getting the next row until there are no more to get
15:
                while($row mysql_fetch_array$result )) {
16:
                    // Print out the contents of each row into a table
17:
                    echo $row['id']; echo "<br>";
18:
                } 
19:
 
20:
 
21:
        }
22:
 
23:
}
24:
?>



Söker man då efter utveckling och sverige

Och har 3 artiklar med olika kategorier, exempel:
KOD:
1:
 
2:
--id-------Kategori------------
3:
Artikel1   sverige
4:
Artikel1   utveckling
5:
Artikel2   sverige
6:
Artikel3   utveckling
7:
 


Resultatet blir då:
KOD:
1:
 
2:
Artikel1
3:
Artikel1
4:
Artikel2
5:
Artikel3
6:
 


Frågan är då, hur kan jag göra så att Artikel1 endast visas en gång och behöver visas flera gånger?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
webbhelp



Medlem i: 4677 dagar
Från: Sverige
Status: Offline



#740818
Inlägg Skrivet: 2016-05-30 13:01      Ämne: Citera

Ett ID är något som identifierar en rad.
Ett ID måste därför vara unikt.

ID ska vara en:
Primary key
Och oftast är det satt som auto_increment, vilket gör att, vid varje ny rad blir ID:et automatiskt ett nytt ID.
T.ex:
1 a
2 b
3 c
4 a
5 b
6 c

Id: är sifforna till vänster och de är alltid unika medan kolumnen höger om kan innehålla samma värde flera gånger men de tillhör unika ID:n.

Till din fråga:
För att få ut Sverige och utveckling endast en gång så kan du köra: DISTINCT eller GROUP BY

GROUP BY category tror jag det blir Smile
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Skicka e-post Besök användarens hemsida MSN Messenger
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » PHP Mjukstart
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic