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?
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.
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.