Jag har en databas i MySQL som jag ansluter till med PHP. Jag vill att varje post ska kunna tillhöra flera kategorier, och därför har jag skapat en tabell som bara håller reda på relationen mellan kategorier och poster.
Vilken metod ska jag använda för att avgöra vilka kategorier som har valts på en webbsida, och hur läser jag av valen i PHP?
------------------ Gislaved.net - Ett roligare Internet!
Tack woodi, men är det inte stor risk att det blir krångligt att jobba med när man ska göra ändringar?
Det största problemet är väl egentligen inte hur jag ska spara indatan, utan hur jag ska få tag i den på ett enkelt sätt. Det är visserligen bara jag som ska ange kategorierna, men det blir lätt jobbigt att komma ihåg alla sifferkoder. Är det checkboxar som gäller?
------------------ Gislaved.net - Ett roligare Internet!
Gislaved
Aha, jag tolkade som att det var en "webshop" liknade sak med kategorier som Du ville ha.. Om nu så fortfarande är fallet så är detta det enklaste:
Som Du ser pekar KID fältet på ID värdet i Kategori tabellen..
Anledningen till att jag har lagt till ett kommatecken framför det första värdet och ett efter är för att det lättare ska gå att söka i fältet sedan (se nedan)!
På så sätt kan flera "artiklar" höra i hop med flera kategorier.
Magnus Uggla tillhör i exemplet ovan både Pop och Rock..
För att då lista alla produkter som till för Kategori Rock så använder man alltså följande select-sats:
$res=mysql_query("select * from produkt where kid like (%,1,%)");
Hmm... en annan grej: om jag har en SELECT-box med flerval i ett formulär så blir ju $kategori = det sista värdet, dvs om kategori 1 och 2 har valts så skickas informationen som filen.php?kategori=1&kategori=2
Hur gör man för att läsa av även det första värdet?
------------------ Gislaved.net - Ett roligare Internet!
Detta är min SQL:
$result = mysql_query("SELECT * FROM test WHERE Till LIKE (%,$ID,%)");
Till är en kolum i databasen test, den finns och innehåller värden ,2,3,4, osv. $ID är en variabel som är satt och värdet finns i Till. Följande felmess får jag
You have an error in your SQL syntax near '%,2,%)' at line 1
Jag kör allt på en win98 burk med PHP402 ,Apache och MySQL 3.22.34
Om man skulle vilja ändra kategori för någon post i databasen... hur bär man sig åt då? Just nu kör jag med följande kod, men det sparar bara de gamla kategorierna omringat av en massa kommatecken.
<FORM method="POST" action="<? echo("$PHP_SELF"); ?>?id=<? echo("$id"); ?>">
<SELECT name="kategorival[]" size=4 MULTIPLE>
<?
$fr_tva = mysql_query("SELECT * FROM kategorier");
while ($rad_tva = mysql_fetch_array($fr_tva)) {
$gk2 = $rad_tva["gk"];
$katnamn = $rad_tva["katnamn"];
// Markera de som var valda innan!
if (eregi(",$gk2,",$gk)) {
echo("<OPTION value=\"$gk\" SELECTED>$katnamn");
} else { echo("<OPTION value=\"$gk\">$katnamn"); }
}
?>
</SELECT>
</FORM>
Och när man sedan har klicka på okej, så ska de nya kategorierna sparas...
// Kolla vilka kategorier som har valts.
for($x=0; $x<count($kategorival); $x++){
$gk= "$gk,$kategorival[$x]";
}
$gk = "$gk,";
$datum = date ("YmdHis");
mysql_query("UPDATE tabell SET gk='$gk', titel='$titel', url='$url', artist='$artist', datum='$datum' WHERE id = '$id'");
Självklart är det lite mer kod, men det blir för långt att skriva allt här.