---
title: "Problem med svarsinlägg till forum"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/105132-problem-med-svarsinlägg-till-forum/page2"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "addeweb"
published: "2004-06-06T17:29:14.000Z"
updated: "2004-07-06T22:42:10.000Z"
replies: 56
views: 1108
page: 2
pages: 3
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/105132-problem-med-svarsinlägg-till-forum"
---

# Problem med svarsinlägg till forum

_Sida 2 av 3._

## #21 — Matte, 2004-06-10T05:20Z

Hur ser rad 38 och rad 40 ut ?

Permalänk: https://www.webforum.nu/p/1366769

## #22 — addeweb, 2004-06-10T19:17Z

Raderna   **mssql_query($msquery);** som finns på rad 38 och 40. 

```php
$msquery = "SELECT FROM forum WHERE id = '$id'";
		if ($ref_id == 0)
		{
		$msquery = "DELETE FROM forum WHERE id = '$id'";
		mssql_query($msquery);
		$msquery2 = "DELETE FROM forum WHERE ref_id = '$id'";
		mssql_query($msquery2);
mssql_close();
$msquery = "DELETE FROM forum WHERE id = '$id'";
		mssql_query($msquery);
```

Permalänk: https://www.webforum.nu/p/1367171

## #23 — Matte, 2004-06-12T06:20Z

Är \`id\` av numeriskt format får du inte ha några apostrofer/fnuttar runtom $id:

```php
$msquery = "DELETE FROM forum WHERE id = $id";
```

Permalänk: https://www.webforum.nu/p/1367886

## #24 — addeweb, 2004-06-12T13:20Z

Nya problem! Kan inte ta bort inlägg längre. Det händer ingenting hur mycket jag klickar på tabort-knappen. :( 

Så här ser koden ut nu i **tabort.php**: 
 

```php
<?php
// Kollar statusen 
if($status >= 1 && isset($_SESSION['Loginname'])) { 

    // Körs om du har status 1 (sysop) 

	if(isset($_GET['amne'])){
	$amne = $_GET['amne'];

	$msquery = "SELECT FROM forum WHERE id = $id";
		if ($ref_id == 0)
		{
		$msquery = "DELETE FROM forum WHERE id = $id";
		mssql_query($msquery);
		$msquery2 = "DELETE FROM forum WHERE ref_id = $id";
		mssql_query($msquery2);
		mssql_close();
		//echo "<script type=\"text/JavaScript\">location=\"index.php\"</script>";
		header ("Location: index.php");
		}else{
		$msquery = "DELETE FROM forum WHERE id = $id";
		mssql_query($msquery);
		mssql_close();
		//echo "<script type=\"text/JavaScript\">location=\"svar.php?id=$ref_id\"</script>";
		header ("Location: svar.php?id=$ref_id");		
		} 
	}
	?>
		<h3 style="font-family:Verdana">Radering av inlägg</h3>
		<p style="font-family:Verdana; font-size: 11px">Ta bort rubriken: <b><?=$amne?></b></p>
		<form action="<?=$PHP_SELF?>" method="post">
		<input type="hidden" name="id" value="<?=$id?>">
		<input type="Submit" value="Ta bort" style="font-weight: bold" />
		</form>
	<?php } else { ?>

	<h4>Endast administratören har tillträde till den här sidan!</h4> 

<?php } ?>
```

 
Raden "Ta bort rubriken $amne" fungerar inte heller och tar inte emot värdet trots att jag har $amne längre upp i koden. Vad gör jag då åt detta?

Andra problem som också dykt upp...
Warning: Cannot modify header information - headers already sent by (output started at C:\\Ex-jobb\\teqla\\forum\\dbmanager.php:10) in C:\\Ex-jobb\\teqla\\forum\\skicka.php on line 102

Den rad som gäller är  den första headern i filen  **skicka.php**:.

```php
if ($id == "main")
	{
		header ("Location: index.php");
	}
	else
	{
		header ("Location: svar.php?id=$id");
	}
```

 
Det är också  likadant när man skriver ett svarsinlägg, då blir det den andra headern. 

Trots felet ovan har jag också lagt märke till att svarsinlägg med SVAR: i ämnesraden också listas på forumets första sida. Så var det inte förut.

Permalänk: https://www.webforum.nu/p/1368024

## #25 — addeweb, 2004-06-14T06:58Z

Kanske det är konsekvensen av att ta bort apostrofer??  :(

Permalänk: https://www.webforum.nu/p/1368040

## #26 — Matte, 2004-06-16T17:19Z

Har du någon $\_GET\['amne'\] ?

Denna if-sats måste vara sann för att du överhuvudtaget ska komma till koden som tar bort:

```php
if(isset($_GET['amne'])){
```

 

Har du något värde på $id ?

Permalänk: https://www.webforum.nu/p/1368094

## #27 — addeweb, 2004-06-16T18:35Z

Har funderat och insett att det är ingen idé att använda $\_GET\['amne'\] på tabort-sidan eftersom tabort-länken på svarssidan har istället \[ \<a href="tabort.php?id=\<?=$id?\>"\>\<u\>Ta bort\</u\>\</a\> \]. Bättre att använda $\_GET\['id'\]. 

Tänker kanske skriva nånting sånt här istället på tabort-sidan. 

```php
 
<?php
$msquery = "SELECT * FROM forum WHERE ref_id = '".$_GET['id']."';
$result = mssql_query($msquery, $connection);
while ($r = mssql_fetch_array($result))
{
$id = $r['id'];
$ref_id = $r['ref_id'];
$amne = $r['amne'];
}
if(!isset($_POST['tabort'])){
?>
<h5 style="font-family:Verdana">Radering av inlägg</h5>
		<p style="font-family:Verdana; font-size: 11px">Ta bort rubriken: <b><?=$amne?></b></p>
		<form action="<?=$PHP_SELF?>" method="post">
		<input type="hidden" name="id" value="<?=$id?>">
		<input type="Submit" value="Ta bort" name="tabort" style="font-weight: bold" />
		</form>
<?php }

if (isset($_POST['tabort'])){
    if ($ref_id == 0){
		$msquery = "DELETE FROM forum WHERE id = $id";
		mssql_query($msquery);
		$msquery2 = "DELETE FROM forum WHERE ref_id = $id";
		mssql_query($msquery2);
		mssql_close();		
		header ("Location: index.php");
		}else{
		$msquery = "DELETE FROM forum WHERE id = $id";
		mssql_query($msquery);
		mssql_close();
		header ("Location: svar.php?id=$ref_id");
    } 
} 
?>
```

 
Kanske det kan funka....

Permalänk: https://www.webforum.nu/p/1368121

## #28 — addeweb, 2004-06-19T15:06Z

Fortfarande problem med tabort-sidan. Så här ser sidan ut nu. Borttag av inlägg fungerar, liksom visning av aktuell ämne. 

```php
<?php
if(!isset($_POST['tabort'])){

	$msquery = "SELECT id, amne FROM forum WHERE id = '".$_GET['id']."'";
	$result = mssql_query($msquery,$connection);
	//echo $result;
	//echo $amne;
	while ($n = mssql_fetch_array($result))
	{
	$id = $n["id"];
	$ref_id = $n["ref_id"];
	$amne = $n["amne"];
	}
	?>
		<h5>Radering av inlägg</h5>
		<p>Ta bort rubriken: <b><?=$amne?></b></p>
		<form action="<?=$PHP_SELF?>" method="post">
		<input type="hidden" name="id" value="<?=$id?>">
		<input type="Submit" name="tabort" value="Ta bort" class="button" />
		</form>
	<?php } 
 
	if(isset($_POST['tabort'])){

	if ($ref_id == 0){
		$msquery = "DELETE FROM forum WHERE id = $id";
		mssql_query($msquery);
		$msquery1 = "DELETE FROM forum WHERE ref_id = $id";
		mssql_query($msquery1);
		mssql_close();
		header ("Location: index.php");
	}else{
		$msquery = "DELETE FROM forum WHERE id = $id";
		mssql_query($msquery);
		mssql_close();
		header ("Location: svar.php?id=$ref_id");
		} 
	}
```

 
På sidan får jag felmeddelandet: 
**Warning: Cannot modify header information - headers already sent by (output started at C:\\Ex-jobb\\teqla\\forum\\dbmanager.php:10) in C:\\Ex-jobb\\teqla\\forum\\tabort.php on line 66**
 
Raden 66 gäller **header ("Location: index.php");** 

Jag har också problem med att skicka ett inlägg från huvudformuläret på forumets första sida. Får då felmeddelandet:
**Warning: Cannot modify header information - headers already sent by (output started at C:\\Ex-jobb\\teqla\\forum\\dbmanager.php:10) in C:\\Ex-jobb\\teqla\\forum\\skicka.php on line 105** 
Felet finns på sidan **skicka.php** i följande del: 

```php
if ($id == "main")
{
		header ("Location: index.php");
	}
	else
	{
		header ("Location: svar.php?id=$id");
	}
```

 
Raden 105 som felet finns på: **header ("Location: index.php");**. Samma header-problem som tabort-sidan har. Jag får också samma problem om jag skriver svarsinlägg, fast då med den andra headern efter else-satsen. "main" finns som värde i hidden-fält i huvudformuläret. Problem som också hör till är att svarsinlägg hamnar som en rad i listan på forumets första sida, inte som antal svar. Jag har tagit upp det här tidigare men fick inget svar om detta. Vet inte hur jag ska lösa det här. Finns det nån som kan hjälpa mig? 

Om man bara gör ett enda litet ynka fel, då är det lätt hänt att man inte hittar tillbaka till det som fungerade förut. Det är jag inte ensam om.... eller har jag fel?  :h

Permalänk: https://www.webforum.nu/p/1369453

## #29 — Matte, 2004-06-19T17:45Z

Före en header får man inte ha någon output till webbläsaren.
Med output menas HTML-kod, echo eller print. Även ett mellanslag eller radbrytning utanför PHP-taggarna ger ett output.

Ditt felmeddelande säger att du har output till webbläsaren på rad 10 i dbmanager.php.
Hur ser koden ut där ?

Permalänk: https://www.webforum.nu/p/1369559

## #30 — addeweb, 2004-06-21T20:25Z

Jag förstod inte ditt svar till men har kollat vad som var felet i dbmanager.php. Har inte kunnat se vad som var fel där så jag istället kopierade koden som jag lade in i tidigare inlägg. Sedan funderade forumet som det ska.  Bara ett fel återstår med forumet, nämligen i själva tabort-sidan. Felmeddelandet som jag får när jag tar bort ett inlägg: 
**Warning: Cannot modify header information - headers already sent by (output started at C:\\Ex-jobb\\teqla\\forum\\tabort.php:33) in C:\\Ex-jobb\\teqla\\forum\\tabort.php on line 66**

Samma meddelande får jag också när jag tar bort andra inlägg.
**header ("Location: index.php");** finns på raden 66.

Men "tabort.php:33"? Vad menas med detta? Har inte kunnat se vad som är fel.  Allt som finns där på rad 33 är \<?php under body-taggen.

Permalänk: https://www.webforum.nu/p/1370467

## #31 — Matte, 2004-06-22T01:06Z

Som jag skrev i tidigare inlägg får du inte skicka något till en webbsida före en header.
Du får alltså inte ha någon HTML-kod före header.
Ej heller echo eller print som skickar till webbläsaren.
Även ett mellanslag eller en radbrytning utanför PHP-taggarna ger en output som skickas till webbläsaren.

Lägg därför koden som tar hand om ditt postade formulär överst på sidan innan du skickar något till webbläsaren.

Du ska alltså flytta upp följande if-sats:

```php
if(isset($_POST['tabort'])){
.
.
.
}
```

Permalänk: https://www.webforum.nu/p/1370730

## #32 — addeweb, 2004-06-22T15:55Z

Det fungerar nu bra med tabort-sidan. Har lagt upp så här:

```php
<?php
// Kollar statusen 
if($status >= 1 && isset($_SESSION['Loginname'])) {

if(isset($_POST['tabort'])){

	if ($ref_id == 0){
		$msquery = "DELETE FROM forum WHERE id = $id";
		mssql_query($msquery);
		$msquery1 = "DELETE FROM forum WHERE ref_id = $id";
		mssql_query($msquery1,$connection);
		mssql_close($connection);
		header ("Location: index.php");
	}else{
		$msquery = "DELETE FROM forum WHERE id = $id";
		mssql_query($msquery,$connection);
		mssql_close($connection);
		header ("Location: svar.php?id=$ref_id");		
		} 
	} 
		
	if(!isset($_POST['tabort'])){

	$msquery = "SELECT id, amne FROM forum WHERE id = '".$_GET['id']."'";
	$result = mssql_query($msquery,$connection);
	//echo $result;
	//echo $amne;
	while ($n = mssql_fetch_array($result))
	{
	$id = $n["id"];
	$ref_id = $n["ref_id"];
	$amne = $n["amne"];
	}
	?>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="../style/style_main.css">
</head>
<body bgcolor="#C2C287" text="#000000" id="all" leftmargin="10" topmargin="10" marginwidth="10" marginheight="10" link="#660000" vlink="#660000" alink="#660000">
		<h5>Radering av inlägg</h5>
		<p>Ta bort rubriken: <b><?=$amne?></b></p>
		<form action="<?=$PHP_SELF?>" method="post">
		<input type="hidden" name="id" value="<?=$id?>">
		<input type="Submit" name="tabort" value="Ta bort" class="button" />
		</form>
	<?php } 

 } else { ?>
	<h5>Endast administratören har tillträde till den här sidan!</h5> 
<?php } ?>
</body>
</html>
```

Permalänk: https://www.webforum.nu/p/1371034

## #33 — addeweb, 2004-06-23T20:01Z

Nåja, forumet är nästan klar, bara paging som återstår och ska snart fixas. Men innan jag går vidare, har jag lagt märke till att felmedddelandet. **CGI Error 
The specified CGI application misbehaved by not returning a complete set of HTTP headers.**  dyker upp ibland när jag skickar ett nytt inlägg, svarsinlägg eller ta bort inlägg. Jag har också sökt i Webforum om andra hade samma problem med ett sådant liknande meddelande. Lade också märke till att **"The headers it did return are: "**  saknas på slutet i mitt felmeddelande jämfört med andras problem. Jag hade förut problem med variabler som inte ska ha apostrofer men det ska jag inte ta upp igen eftersom det är löst. Det som förvånar mig att att jag fortfarande får ett sådant felmeddelande ibland, som om slumpen avgör.  Beror felmeddelandet på vilken version av PHP som används? Jag fick veta av den som ansvarar för servern att PHP5 används. Det finns fortfarande en del grejer som jag inte känner till än.

Permalänk: https://www.webforum.nu/p/1374856

## #34 — Matte, 2004-06-24T07:13Z

Är ganska osäker på detta, men har för mig att detta kan uppstå om du använder en POST/GET-variabel som inte finns.

T.ex om du använder

```php
if ($_POST['variabel'] == 'värde') {
```

Skriv då istället:

```php
if (isset($_POST['variabel']) && $_POST['variabel'] == 'värde') {
```

Är som sagt osäker på detta, men värt att prova i vilket fall då du samtidigt snyggar till koden och plockar bort notiser.

Permalänk: https://www.webforum.nu/p/1375081

## #35 — addeweb, 2004-06-30T21:32Z

Jag funderar fortfarande på vad jag ska göra med POST/GET-variabler som inte finns. 

En annan sak som jag har lagt märke till är datumet för startinlägg i listan på första sidan. Datumet ändras inte när ett svarsinlägg har skrivits, bara startinläggets datum gäller. Man kan bara se datumet för senaste svarsinlägg om man öppnar startinläggets länkrubrik i listan. Det är något fel med det. Vad gör man åt detta?

Permalänk: https://www.webforum.nu/p/1377791

## #36 — addeweb, 2004-07-01T09:47Z

Jag glömde att lägga in delen om datumet på första sidan i tidigare inlägg. Här är den: 

```php
		// Ladda in rader
		while($f=mssql_fetch_array($result))
		{
			$namn = $f["namn"];
			$epost = $f["epost"];
			$amne = $f["amne"];
			$text = $f["text"];
			$id = $f["id"];
			$ref_id = $f["ref_id"];
			$datum = $f["datum"];

			$raknasvar = mssql_num_rows( mssql_query("SELECT * FROM forum where ref_id = $id"));

			$dat = date('j/n H:i', strtotime($datum));

			// Varannan färg
			echo "<tr bgcolor='";
			if( $i++ % 2 == 0 ){
				echo $bg1;
			}else{
				echo $bg2;
			}
			echo "' valign=\"top\">\n";
			echo "<td><a href=\"svar.php?id=$id\"><u>$amne</u></a></td>\n";
			echo "<td>$namn</td>\n";
			echo "<td>$dat</td>\n";
			echo "<td align=\"center\">$raknasvar</td>\n";
			echo "</tr>\n";
		}
```

Vad kan det vara för fel med att datum för senaste svarsinlägg inte visas istället för startinläggets datum på första sidan? Jag har sökt här i forumet om liknande datumproblem men tyvärr inte kunnat hitta det. Finns det nån här som känner igen problemet?

Permalänk: https://www.webforum.nu/p/1377926

## #37 — Matte, 2004-07-01T09:53Z

Och hur ser SQL-frågan ut som du loopar resultatet av ?

Permalänk: https://www.webforum.nu/p/1377928

## #38 — addeweb, 2004-07-01T10:00Z

Så här ser SQL-frågan ut för att resultatet ska loopas ut. 

```php
// Med MSSQL
$query = "SELECT TOP $row_max * FROM forum WHERE id NOT IN
 (SELECT TOP $row_start id FROM forum ORDER BY datum DESC)
AND ref_id = 0 
ORDER BY datum DESC";
```

Jag har gjort så för att paging-funktionen ska fungera eftersom
 jag inte kan använda LIMIT i frågan pga MSSQL. Den fungerar men det har väl inte med datumet att göra?

Permalänk: https://www.webforum.nu/p/1377932

## #39 — Matte, 2004-07-01T10:20Z

Du har "WHERE ref_id = 0". Innebär inte det att du hämtar just startinläggen ?

Borde vara något på det här hållet istället (utan paging):

```php
$query = "
   SELECT id, MAX(datum) AS datum 
   FROM forum 
   GROUP BY id
   ORDER BY datum DESC
";
```

Permalänk: https://www.webforum.nu/p/1377935

## #40 — addeweb, 2004-07-01T10:33Z

Ja, startinlägg hämtas till listan när ref_id = 0.  Annat värde gäller
svarsinlägg. Jag ska titta på MAX sen men paging måste iallafall
finnas med i frågan för att fungera.

Permalänk: https://www.webforum.nu/p/1377938

---

Tråden på webben: https://www.webforum.nu/amne/php/105132-problem-med-svarsinlägg-till-forum/page2  
Föregående sida: https://www.webforum.nu/amne/php/105132-problem-med-svarsinlägg-till-forum.md  
Nästa sida: https://www.webforum.nu/amne/php/105132-problem-med-svarsinlägg-till-forum/page3.md
