Har sökt runt och försökt komma på hur jag ska göra, men det står helt still, iofs ganska sent, men ändå.
Jag har en databas med massa information, och vill att besökaren ska kunna lämna en kommentar på varje ID.
Hur ska jag kunna det, måste jag skapa en tabell för varje ID typ kommentarer23 eller finns det nått enklare sett.
Låt säga att det i ID 7 finns ett field som heter information där det står
I går så åskade det i småland.
Sen ska besökaren kunna kommentera det
Kan det läggas i fältet kommentarer med nån sorts koppling till Id (7) ?
Jag kan ju skriva in det som html i kommentarer och sen när någon skriver så laddas det vad som står i kommentarer och sen läggs den nya kommentaren in. Men då blir det ju som när man skriver till en textfil i brist på databas.
Borde ju finnas en relativt simpel tankebana för detta, bara att jag inte kopplar hur jag ska göra.
När jag vill utnyttja kommentarer använder jag en ny tabell i databasen för varje typ av kommentar jag har, så att om jag t.ex. har nyheter och recensioner på en sida så har jag två tabeller, en för nyhetskommentarer och en för recensionskommentarer.
I kommentarerna har jag, förutom ett id för själva kommentaren och övriga fält (text, titel, vem som skrev, epost, url osv.), ett id parent_id som refererar tillbaka till den post som kommenterades. Som exempel kan jag ha en nyhet med id = 24, och alla kommentarer till den nyheten får då parent_id = 24. Det gör att om jag har id:t till nyheten för vilken jag vill ha kommentarerna så kan jag på ett lätt sätt hämta ut alla kommentarer som tillhör just den nyheten.
Hoppas jag förklarar mina tankar någorlunda klart, och att jag har förstått din fråga.
Tack för hjälpen, gjorde som ni sa och det funkade fin fint.
Använder cid liknande k_Id som i exemplet ovan.
Den visade kommentarerna precis som jag ville ända tills jag kom upp til id 10 (liknande i_Id i exemplet ovan) då visade den det som var skrivet i i_Id 1 och det som skrevs i id tabellen var 1.
Kanske är min insert som är fel:
mysql_query("INSERT into comment VALUES ('".$id["id"]." ()', '()', '$namn', '$datum', '$kommentar', '$epost', '$rubrik')") or die(mysql_error());
eller är det fältet som inte är rätt, använde från början int(255) då när allt fungerade så fint, nu har jag testat lite olika versioner men kan inte lista ut det.
cid är auto_increment och primary.
Vad är det som jag inte tänkt på?
CREATE TABLE `comment` (
`ID` int NOT NULL default 0,
`CID` int NOT NULL auto_increment,
`name` varchar(30) NOT NULL default '',
`Date` datetime ,
`Comment` text NOT NULL,
`epost` varchar(200) NOT NULL,
`rubrik` varchar(30) NOT NULL default '',
PRIMARY KEY (`CID`)
) TYPE=MyISAM PACK_KEYS=0 AUTO_INCREMENT=11 ;
Några kommentarer
Det finns ingen anledning att ange int(255).
Defaultvärden för en numerisk kolumn skall vara ett numeriskt värde och inte en sträng.
Varför skall date ha ett defaultvärde som inte ens är ett giltigt datum? Använd hellre null.
Att använda text för en epost-adress känns överflödigt. 200 tecken borde räcka.
Egentligen borde du definera ID som en foreign key till din andra tabell vilket innebär att du måste använda INNODB som tabelltyp.
Din insert borde se ut som.
INSERT into comment (id,namn,datum,kommentar,epost,rubrik)
VALUES ( <id från andra tabelllen>,
'$namn', '$datum', '$kommentar', '$epost', '$rubrik')