webForumDet fria alternativet

Checkboxar och UPDATE

4 svar · 443 visningar · startad av Melea

MeleaMedlem sedan juli 20033 147 inlägg
#1

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
#2

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
#3

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
#4

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
#5

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());
	
	}
}
128 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)