Permalänk

Php/Mysql multipla värden

Hejsan!

Har en fråga angående multipla värden i ett mysql fält.
Min tabell ser ut som följande( / avgränsar varje kolumn i demonstrationssyfte ):
id / kategori / plats / rubrik / text
1 / 1,2,3 / 1,2,3 / Testrubrik / Massa text
2 / 1 / 3 / Testrubrik / Massa text
3 / 1,3 / 1,2 / Testrubrik / Massa text

Och nu till frågan:
Jag vill mer eller mindre bryta upp kategorierna och platserna i arrayer, jämföra arrayerna mot vad som finns i databasen och sen skicka ut det som matchar.
Säg att kategorin är 1 och platsen är 3 då vill jag bara ha upp rad 1 och om jag vill ha kategori 1 och plats 2 så får jag upp rad 3 enbart.

Min kod ser ut som följande(Dock lite nerbantad så den inte tar så mkt plats, dvs html-tabellen är borta):

$result = $database->query("SELECT * FROM mintabell WHERE kategori='$main_cat_id'");

while($line = $database->to_array($result))
{
?>
<a href="index.php?cat=1&main_cat=<?php echo $main_cat_id; ?>&item=<?php echo $id; ?>"><?php echo $line["rubrik"]; ?></a><br />
<?php echo $line["text"]; ?>

<?php
}

Som ni ser är inte kategori och plats nerstoppad i en array just i denna kod men den kod jag testat var ändå katastrofal.

Visa signatur

AMD Ryzen 5800X3D | Corsair Hydro H115i RGB Platinum | 32gb G.Skill DDR4 @ 3600mhz | Asus X570-F | PowerColor RX6900XT RedDevil Ultimate | 1TB m.2 SSD gen 4 | 256gb m.2 SSD gen 4 | 1TB HDD | Phanteks Revolt Pro 1000W | Phanteks Eclipse P500A

Permalänk
Medlem

Jag vet inte riktigt om jag förstår vad du vill göra men jag vill påpeka att det är mycket bättre att koppla samman en text med kategorier med en ihopkopplingstabell. där du lagrar alla kategorier till varje text på en separat rad.

Permalänk

Ja, det låter inte så dumt kanske, nu till en följdfråga.
Hur gör jag det?

Visa signatur

AMD Ryzen 5800X3D | Corsair Hydro H115i RGB Platinum | 32gb G.Skill DDR4 @ 3600mhz | Asus X570-F | PowerColor RX6900XT RedDevil Ultimate | 1TB m.2 SSD gen 4 | 256gb m.2 SSD gen 4 | 1TB HDD | Phanteks Revolt Pro 1000W | Phanteks Eclipse P500A

Permalänk
Medlem

ja, exempelvis har du en tabell som heter acrticelcategories

med columnerna

id articelid category

så sparar du en artikel som har tre kategorier såhär

1 1 3
2 1 7
3 1 9

Sedan får du göra en selectsats där du hämtar alla artikelkategorier som har samma artikelid som artikeln du är intresserad av

Permalänk
Citat:

Ursprungligen inskrivet av mega_bra
ja, exempelvis har du en tabell som heter acrticelcategories

med columnerna

id articelid category

så sparar du en artikel som har tre kategorier såhär

1 1 3
2 1 7
3 1 9

Sedan får du göra en selectsats där du hämtar alla artikelkategorier som har samma artikelid som artikeln du är intresserad av

Skippa "id". de två andra kolumnerna är en sammansatt primärnyckel.

Visa signatur

Nikon D90, Nikon D7000, SB-600, 2xYN-460, Nikkor 18-105mm/3.5-5.6 VR, Nikkor 35mm/1.8, Nikkor 50mm/1.8D, Tamron 70-200/2.8, Tokina 11-16/2.8, Nikon 85/3.5 Macro
Flickr

Permalänk
Medlem

kom på att det borde vara så, men görs det automatiskt?

Permalänk

Det får man nog definiera när man skapar databasen.

Visa signatur

Nikon D90, Nikon D7000, SB-600, 2xYN-460, Nikkor 18-105mm/3.5-5.6 VR, Nikkor 35mm/1.8, Nikkor 50mm/1.8D, Tamron 70-200/2.8, Tokina 11-16/2.8, Nikon 85/3.5 Macro
Flickr

Permalänk

Bumpar denna igen då jag har en följdfråga.

Har lagt upp databasen som ni tipsade.
Dvs id, artikelid, category
Och min tabell som innehåller själva informationen har sin id så den matchar referenstabellens artikelid
Min query ser ut som följande:
SELECT DISTINCT id FROM rp_ref WHERE id IN (SELECT id FROM rp_articles WHERE id='$main_type_id');

Det som händer när jag har frågan där är att jag får upp en enda tom rad om $main_type_id är 1 men är den något annat värde så händer inget alls.

Har dock en till fråga nu som följer:
Hur lägger man in multipla värden i fältet category i min referenstabell?
Så en rad får exempelvis värdena 1,3,5 och en annan rad får värdena 1,2,4?

Tack för svar!

Edit: Glömde skriva vad som händer.

Visa signatur

AMD Ryzen 5800X3D | Corsair Hydro H115i RGB Platinum | 32gb G.Skill DDR4 @ 3600mhz | Asus X570-F | PowerColor RX6900XT RedDevil Ultimate | 1TB m.2 SSD gen 4 | 256gb m.2 SSD gen 4 | 1TB HDD | Phanteks Revolt Pro 1000W | Phanteks Eclipse P500A

Permalänk
Medlem

http://www.w3schools.com/Sql/sql_join.asp
Läs om inner join, om jag har fattat dig rätt så är det den funktionen som du letar efter.

Permalänk

Tack!

Har nästan fått det att fungera som det är tänkt nu.
Dock så får jag inte rätt info när jag kör min inner join sats av någon skum anledning, får inga fel eller något bara att jag får rätt antal rader men inte rätt information.

Edit: Nu fungerar det helt och hållet.
Tack för allt!

Visa signatur

AMD Ryzen 5800X3D | Corsair Hydro H115i RGB Platinum | 32gb G.Skill DDR4 @ 3600mhz | Asus X570-F | PowerColor RX6900XT RedDevil Ultimate | 1TB m.2 SSD gen 4 | 256gb m.2 SSD gen 4 | 1TB HDD | Phanteks Revolt Pro 1000W | Phanteks Eclipse P500A