MeleaMedlem sedan juli 20033 147 inlägg Tjenamors!
Har lite problem med ett nyhetsarkiv jag håller på att bygga.
På sidan har jag olika grupper, som det skrivs olika nyheter för.
När man skriver en nyhet loopas alla grupper ut med checkboxar, så man får fylla i till vilka nyheten ska skrivas.
Detta löste jag med att döpa inputfältet till "group[]" och sedan spara det såhär i en enskild tabell
INSERT INTO news ...
foreach ($_POST[group] as &$value) {
mysql_query("
INSERT INTO news_group (NewsID, GroupID)
VALUES ($insert_id, $value)
") or die(mysql_error());
}
So far, so good.
Men när jag nu ska fixa så man kan redigera en nyhet, vet jag inte riktigt hur jag ska gå till väga.
Eftersom jag ibland kan behöva ta bort nyheter från vissa grupper, och ibland lägga till, blir det problem.
Jag kan ju inte gärna skriva såhär:
foreach ($_POST[group] as &$value) {
mysql_query("
INSERT INTO news_group (NewsID, GroupID)
VALUES ($_POST[ID], $value)
") or die(mysql_error());
mysql_query("
DELETE FROM news_group
WHERE NewsID = $_POST[ID] AND GroupID = $value
") or die(mysql_error());
}
Eftersom en DELETE-sats tydligen inte klarar av ett AND villkor.
Någon som har tips på hur jag ska lösa detta?
Tacksam för alla svar
MVH
aasahMedlem sedan mars 20034 471 inlägg Jag har inte riktigt fattat vad dina grupper är och så, men... är $_POST[group] verkligen en array? I så fall borde det nog stå:
$_POST["group"] till att börja med i foreach.
Sedan:
"INSERT INTO news_group (NewsID, GroupID)
VALUES (".$_POST["ID"].", $value)"
"DELETE FROM news_group
WHERE NewsID = ".$_POST["ID"]." AND GroupID = $value"}
Har nog lite större chanser att funka som du vill. :)
MeleaMedlem sedan juli 20033 147 inlägg Eftersom $_POST[ID] endast innehåller en siffra är det inte nödvändigt.
Min kod genererar exakt samma sak som den du skrev. :)
MeleaMedlem sedan juli 20033 147 inlägg Okej, nu har jag iallafall förstått var problemet ligger.
När jag kör foreach-loopen och kollar igenom alla $_POST[group] så får den bara med alla värden jag kryssat i.
Så! Jag tänkte att jag kunde lösa det med en for($i = 1; $i < 20; $i++) { loop, eftersom det är 20 grupper.
Men hur får jag med värdet då? Med foreach-loopen blir det ju $value.
Tack på förhand
MVH
MeleaMedlem sedan juli 20033 147 inlägg Okej, har nu löst det. :)
mysql_query("
DELETE FROM news_group
WHERE NewsID = $_POST[ID]
") or die(mysql_error());
if(count($_POST[group]) > 0) {
foreach ($_POST[group] as $value) {
mysql_query("
INSERT INTO news_group (NewsID, GroupID)
VALUES ($_POST[ID], $value)
") or die(mysql_error());
}
}