---
title: "En enda felaktig rad..."
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/157693-en-enda-felaktig-rad"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "PollyJuice"
published: "2007-03-01T14:12:54.000Z"
updated: "2007-03-07T14:22:23.000Z"
replies: 23
views: 859
page: 1
pages: 2
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/157693-en-enda-felaktig-rad"
---

# En enda felaktig rad...

_Sida 1 av 2._

## #1 — PollyJuice, 2007-03-01T14:12Z

Håller på med en skoluppgift där jag skapat ett formulär som ger en användare möjlighet att prenumerera på ett nyhetsbrev. Jag använder en databas för att lagra användarens uppgifter, och två php-script, ett för att lagra saker i databasen och ett för att hämta saker ur databasen. 

Formuläret och lagra-in-scriptet verkar funka bra, men hämta-ur-scriptet hoppar över if-satsen och går direkt till else. Vad har jag missat? Kan någon ge ett tips på hur jag kan rätta till problemet?
(Har markerat den misstänkta raden med blått.)

uturdatabasen.php:

> \<?php
> 
> **if(!empty($\_POST\["send"\])){ //om submitknappen med id=send trycks ned, fortsätt köra scriptet**
>   $connect = odbc_connect( "databas", "", "");  //ansluter till databasen
> 	$query = "SELECT \* FROM uppgifter"; //väljer att hämta alla porter från tabellen uppgifter i databasen
> 	$result = odbc_exec($connect, $query); //utför förfrågan
> 	
> 	print("\<table\>");
> 	print("\<th\>Förnamn\</th\>\<th\>Efternamn\</th\>\<th\>E-postadress\</th\>\<th\>Intresse\</th\>\<th\>Hur ofta vill du ha ditt nyhetsbrev?\</th\>");
> 	
> 	while(odbc_fetch_row($result)){//hämtar datat från databasen
> 		$Fornamn=odbc_result($result, 'Fornamn');														 
> 		$Efternamn=odbc_result($result, 'Efternamn');
> 		$Epostadress=odbc_result($result, 'Epostadress');
> 	  $Intresse=odbc_result($result, 'Intresse');
> 		$Frequency=odbc_result($result,'Frequency');
> 		
> 		print("\<tr\>\<td\>$Fornamn\</td\>\<td\>$Eftername\</td\>\<td\>$Epostadress\</td\>\<td\>$Intresse\</td\>\<td\>$Frequency\</td\>\</tr\>");
> 	}
> 	
> 	odbc_close($connect); //avslutar kopplingen
> 	print("\</table\>");
> }  
> else	{
> include ("Lab4.html"); // ta med ursprungsfilen
> }
> ?\>

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

## #2 — Pedda, 2007-03-01T14:26Z

Testa att använda isset istället

if(isset($\_POST\["send"\])){

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

## #3 — Fredde Mannen, 2007-03-01T14:28Z

Knappen som du postar med, den heter **send** , dvs name="send" ? Och du har inställt i formuläret **method="post"** ?

```php
<?php
if(!empty($_POST["send"])){ //om submitknappen med id=send trycks ned, fortsätt köra scriptet
$connect = odbc_connect( "databas", "", ""); //ansluter till databasen
$query = "SELECT * FROM uppgifter"; //väljer att hämta alla porter från tabellen uppgifter i databasen
$result = odbc_exec($connect, $query); //utför förfrågan

print("<table>");
print("<th>Förnamn</th><th>Efternamn</th><th>E-postadress</th><th>Intresse</th><th>Hur ofta vill du ha ditt nyhetsbrev?</th>");

while(odbc_fetch_row($result)){//hämtar datat från databasen
$Fornamn=odbc_result($result, 'Fornamn'); 
$Efternamn=odbc_result($result, 'Efternamn');
$Epostadress=odbc_result($result, 'Epostadress');
$Intresse=odbc_result($result, 'Intresse');
$Frequency=odbc_result($result,'Frequency');

print("<tr><td>$Fornamn</td><td>$Eftername</td><td>$Epostadress</td><td>$Intresse</td><td>$Frequency</td></tr>");
}

odbc_close($connect); //avslutar kopplingen
print("</table>");
} 
else {
include ("Lab4.html"); // ta med ursprungsfilen
}
?>
```

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

## #4 — Fredde Mannen, 2007-03-01T14:30Z

> **Pedda skrev:**
>
> Testa att använda isset istället
> 
> if(isset($\_POST\["send"\])){

!empty() och isset() är väl i stort sett samma sak. Den ena kollar så att den inte är tom, den andra kollar så att den inte är tom. 

:)

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

## #5 — The_Hulk, 2007-03-01T15:12Z

> **Fredde Mannen skrev:**
>
> !empty() och isset() är väl i stort sett samma sak. Den ena kollar så att den inte är tom, den andra kollar så att den inte är tom. 
> 
> :)

njae inte ritkigt. empty() räknar 0, "", "0" som tom men det gör inte isset();

finns beskrivet på php.net
<http://se2.php.net/manual/sv/function.empty.php>
<http://se2.php.net/manual/sv/function.isset.php>

visa gärna lite kod från själv html-sidan med formuläret.

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

## #6 — Fredde Mannen, 2007-03-01T16:48Z

> **The_Hulk skrev:**
>
> njae inte ritkigt. empty() räknar 0, "", "0" som tom men det gör inte isset();
> 
> finns beskrivet på php.net
> <http://se2.php.net/manual/sv/function.empty.php>
> <http://se2.php.net/manual/sv/function.isset.php>
> 
> visa gärna lite kod från själv html-sidan med formuläret.

i stort sett skrev jag :P 
Men i hans fall så skall det inte spela någon roll, vare han använder isset eller !empty. :)

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

## #7 — PollyJuice, 2007-03-05T10:11Z

Method = post, isset har ersatt !empty, och id för knappen är send... Såhär ser formulärkoden ut:

\<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"\>
\<html xmlns="http://www.w3.org/1999/xhtml"\>
\<head\>
\<title\>Laboration 4\</title\>
\</head\>
\<style type="text/css"\>
\<!--
\#sida2{
  display:none;
}
\--\>
\</style\>

\<script type="text/javascript"\>
//\<!\[CDATA\[
function fixElement(element, message){
alert(message);
element.focus();
}

function check(){

var passed=false;
var fn = document.getElementById("fornamn");
var en = document.getElementById("efternamn");
var ep = document.getElementById("epost");
if(fn.value =="")
{
fixElement(fn, "Fyll i ditt förnamn");
}
else if(en.value == "")
{
fixElement(en, "Fyll i ditt efternamn");
}
 else if(ep.value.indexOf("@") == -1 \|\| ep.value.indexOf(".") == -1)
 {
 fixElement(ep, "Felaktig e-post adress, skriv in rätt adress")
 }
else
{
passed=true;
}
return passed;
}

function kontroll()
{
  var fn = document.getElementById("fornamn");
var en = document.getElementById("efternamn");
  var ep = document.getElementById("epost");
  var res = document.getElementById("resultat");

var a1 = document.getElementById("intresse");
  var a2 = document.getElementById("intresse2");
  var a3 = document.getElementById("intresse3");
  var a4 = document.getElementById("intresse4");
var a5 = document.getElementById("intresse5");
var a6 = document.getElementById("intresse6");
  var extra = document.getElementById("valfritt");

  var v1 = document.getElementById("dag");
  var v2 = document.getElementById("vecka");
  var v3 = document.getElementById("manfre");
  var v4 = document.getElementById("helg");

res.innerHTML = "\<p\>Dina Personuppgifter: \<br /\>\<\\/p\>" + "\\n";
res.innerHTML += "\<p\>Förnamn: \<br /\>\<\\/p\>" + fn.value + "\\n";
res.innerHTML += "\<p\>Efternamn: \<br /\>\<\\/p\>" + en.value + "\\n";
res.innerHTML += "\<p\>E-post: \<br /\>\<\\/p\>" + ep.value + "\\n";

res.innerHTML += "\<p\>Dina Prenumerationer: \<br /\>\<\\/p\>" + "\\n";
if(a1.checked) res.innerHTML += "\<p\>Världen\<br /\>\<\\/p\>" + "\\n";
if(a2.checked) res.innerHTML += "\<p\>Politik\<br /\>\<\\/p\>" + "\\n";
if(a3.checked) res.innerHTML += "\<p\>Sport\<br /\>\<\\/p\>" + "\\n";
if(a4.checked) res.innerHTML += "\<p\>Nöje\<br /\>\<\\/p\>" + "\\n";
if(a5.checked) res.innerHTML += "\<p\>Ekonomi\<br /\>\<\\/p\>" + "\\n";
if(a6.checked) res.innerHTML += extra.value; + "\\n";
        

res.innerHTML += "\<p\>Du vill ha ditt brev: \<br /\>\<\\/p\>"
if(v1.checked) res.innerHTML += "\<p\>Dagligen\<br /\>\<\\/p\>"
if(v2.checked) res.innerHTML += "\<p\>Veckovis\<br /\>\<\\/p\>"
if(v3.checked) res.innerHTML += "\<p\>Mån-Fre\<br /\>\<\\/p\>"
if(v4.checked) res.innerHTML += "\<p\>Helgdagar\<br /\>\<\\/p\>"

  sida1.style.display='none';
	sida2.style.display='block';
}
//\]\]\>
\</script\>
\<body bgcolor="E8C2EF"\>
\<form id="inmatning" method="post" enctype="" action="inidatabasen.php" name="inmatning"\>
\<div id="sida1"\>
\<h1\>Prenumerera p&aring; v&aring;rt nyhetsbrev!\</h1\>
\<h3\>Anm&auml;l ditt intresse h&auml;r:\</h3\>
\<table bgcolor="#FFFFEF"\>
\<tr\>
\<td width="90"\>\<label\>F&ouml;rnamn\</label\>\</td\>
\<td\>\<input type="TEXT" id="fornamn" value=
"Skriv ditt f&ouml;rnamn h&auml;r" size="50" name=
"textruta" /\>\</td\>
\</tr\>
\<tr\>
\<td width="90"\>\<label\>Efternamn\</label\>\</td\>
\<td\>\<input type="TEXT" id="efternamn" value=
"Skriv ditt efternamn h&auml;r" size="50" name="textruta" /\>\</td\>
\</tr\>
\<tr\>
\<td width="90"\>\<label\>E-postadress\</label\>\</td\>
\<td\>\<input type="TEXT" id="epost" value=
"Skriv din e-postadress h&auml;r" size="50" name=
"textruta2" /\>\</td\>
\</tr\>
\<tr\>
\<td colspan="2"\>\<font color="white"\>.\</font\>\</td\>
\</tr\>
\<tr\>
\<td colspan="2"\>\<b\>Vad vill du f&aring; nyheter om?\</b\>\<br /\>
\<input type="checkbox" id="intresse" value="V&auml;rlden" name=
"varlden" /\>V&auml;rlden\<br /\>
\<input type="checkbox" id="intresse2" value="Politik" name=
"politik" /\>Politik\<br /\>
\<input type="checkbox" id="intresse3" value="Sport" name=
"sport" /\>Sport\<br /\>
\<input type="checkbox" id="intresse4" value="Ekonomi" name=
"ekonomi" /\>Ekonomi\<br /\>
\<input type="checkbox" id="intresse5" value="N&ouml;je" name=
"noje" /\>N&ouml;je\<br /\>
\<input type="checkbox" id="intresse6" value="Annat" name=
"annat" /\>\<input type="TEXT" id="valfritt" value=
"Skriv vilket &auml;mne du &auml;r intresserad av" size="50"
name="textruta3" /\>\<br /\>\</td\>
\</tr\>
\<tr\>
\<td colspan="2"\>\<font color="white"\>.\</font\>\</td\>
\</tr\>
\<tr\>
\<td colspan="2"\>\<b\>Hur ofta vill du f&aring; ditt nyhetsbrev
utskickat?\</b\>\</td\>
\</tr\>
\<tr\>
\<td\>\<input type="radio" id="dag" name="ofta" /\>Dagligen\</td\>
\<td\>\<input type="radio" id="vecka" name="ofta" /\>Veckovis\</td\>
\</tr\>
\<tr\>
\<td\>\<input type="radio" id="manfre" name=
"ofta" /\>M&aring;n-fre\</td\>
\<td\>\<input type="radio" id="helg" name="ofta" /\>Helgdagar\</td\>
\</tr\>
\<tr\>
\<td\>\<input type="reset" id="rensa" value=
"Redigera" /\>\<input type="button" id="skicka" value=
"Bekr&auml;fta" onclick=
"if(check()== true)kontroll();" /\>\</td\>
\</tr\>
\</table\>
\<p\>\<a href="http://validator.w3.org/check?uri=referer"\>\<img src=
"http://www.w3.org/Icons/valid-html401" alt=
"Valid HTML 4.01 Transitional" height="31" width="88" /\>\</a\>\</p\>
\</div\>

\<div id="sida2"\>
\<h3\>Kontrollera dina uppgifter:\</h3\>
\<span id="resultat"\>\</span\>
\<p\>

\<input type="button" id="redigera" value="Redigera" onclick=
"sida2.style.display='none'; sida1.style.display='block'" /\>

\<input type="submit" size="20" id="send" name="send" value="Skicka" /\>\</p\>

\<p\>\<a href="http://validator.w3.org/check?uri=referer"\>\<img src=
"http://www.w3.org/Icons/valid-html401" alt=
"Valid HTML 4.01 Transitional" height="31" width="88" /\>\</a\>\</p\>
\</div\>
\</form\>

\</body\>
\</html\>

Och en liten detalj... *Polly* Juice = kvinna...  ;)

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

## #8 — Fredde Mannen, 2007-03-05T10:47Z

Ursäkta.. höhö.. ;) men så funkar det nu då eller? Ger den samma fel?

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

## #9 — PollyJuice, 2007-03-05T10:58Z

Ingen fara...  :) 

Nej, det funkar fortfarande inte. Den hoppar över if-satsen och går direkt till else.

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

## #10 — Fredde Mannen, 2007-03-05T11:12Z

Och det funkade inte med isset() heller? Ja, undra om det kan ha något med detta att göra i form-taggen. **enctype=""**
För något i inidatabasen.php, ser jag inget med if-satsen. 
Och inte något med submitknappen heller. Så pröva med att ta bort enctype="". :)

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

## #11 — fiddler, 2007-03-05T11:26Z

Ditt formulär tar dig till inidatabasen.php, hur tar du dig till uturdatabasen.php?

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

## #12 — PollyJuice, 2007-03-05T11:27Z

Enctye borttaget, problemet kvarstår.

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

## #13 — PollyJuice, 2007-03-05T11:29Z

> **fiddler skrev:**
>
> Ditt formulär tar dig till inidatabasen.php, hur tar du dig till uturdatabasen.php?

Jo, i inidatabasen.php finns en länk:

\<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"\>
\<HTML\>
\<HEAD\>
\<TITLE\>Lägg in användaruppgifter i databasen\</TITLE
\</HEAD\>
\<BODY STYLE: "background-color=#DC22AF"\>
\<?php
$Fornamn = $\_POST\["Fornamn"\];
$Efternamn = $\_POST\["Efternamn"\];
$Epostadress = $\_POST\["Epostadress"\];
$Intresse="";
if(isset($\_POST\['Varlden'\]))
					$Intresse .="Världen";
if(isset($\_POST\['Politik'\]))
					$Intresse .="Politik";
if(isset($\_POST\['Sport'\]))
					$Intresse .="Sport";		
if(isset($\_POST\['Ekonomi'\]))
					$Intresse .="Ekonomi";
if(isset($\_POST\['Noje'\]))
					$Intresse .="Nöje";
if(isset($\_POST\['Annat'\]))
					$Intresse .="Annat";		
$Frequency = $\_POST\["Frequency"\];

/\* Öppnar databaskoppling \*/
$dB = odbc_connect("databas","","") or
		die("Kan inte öppna databasen.");
	

$sql=\<\<\<slutSql1
INSERT INTO Table1(Fornamn, Efternamn, Epostadress, Varlden, Politik, Sport, Ekonomi, Noje, Annat, Frequency)VALUES
('$Fornamn', '$Efternamn', '$Epostadress', '$Varlden', '$Politik', '$Sport', 
'$Ekonomi', '$Noje', '$Annat', '$Frequency')
slutSql1;

/\* Exekverar frågan mot databasen och lagrar resultatet i en variabel som får heta Status \*/
$Status = odbc_exec($dB,$sql);

	// Avslutar databaskopplingen
	odbc_close($dB); 
	
	/\* Om det gick bra att skriva in data i databasen, skrivs följande ut på skärmen: \*/
	if($Status){
	print("Posten har skrivits in i databasen. \<br /\>");
	print("För att kolla vad som står i databasen, klicka här:");
	}
	?\>
	**\<a href="uturdatabasen.php"\>Databasinnehåll\</a\>**\<br /\>
\<a href="Lab4.html"\>Tillbaka till formuläret\</a\>
\</BODY\>
\</HTML\>

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

## #14 — fiddler, 2007-03-05T11:39Z

Ok. Du får inte någon $\_POST-variabel med dig genom länken så därför hamnar du nere vid else-satsen.

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

## #15 — The_Hulk, 2007-03-05T12:04Z

lägg gärna all kod i \[ html\] ... \[ /html\] eller \[ kod\] ... \[ /kod\] taggar (utan mellanrum i taggen)

när du klickar på länken uturdatabasen.php så skickar du inte med något i varken $\_POST eller $\_GET.
du kan skicka med värden till $\_GET genom att lägga till lite i länken

```
 <a href="uturdatabasen.php?send=send&mer=annat">Databasinnehåll</a><br />
```

ger

```
$_GET['send'] = "send";
$_GET['mer'] = "annat";
```

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

## #16 — PollyJuice, 2007-03-05T12:18Z

Jag kollade i min databas och ser att den 10ggr har registrerat att data ska läggas in - men varje rad är tom. Alltså har den lagt in ingenting alls i databasen, 10 ggr. 

Har lagt till  \<a href="uturdatabasen.php?send=send&mer=annat"\>Databasinnehåll\</a\>\<br /\>, men den hoppar fortfarande till else-satsen. Var ska jag lägga till get-koden?

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

## #17 — fiddler, 2007-03-05T12:23Z

Byt ut $\_POST mot $\_GET i övre raden i utur....

Det där med &mer=annat var bara ett exempel från The Hulk. Det kan du ta bort. :)

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

## #18 — PollyJuice, 2007-03-05T14:10Z

Okej, nu verkar uturdatabasen.php funka som den ska - problemet är bara att det inte finns något i databasen att skriva ut, för inidatabasen.php lägger bara in tomma rader i databasen!

Vad är felet NU? Bifogar koden ur inidatabasen.php:

\<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"\>
\<HTML\>
\<HEAD\>
\<TITLE\>Lägg in användaruppgifter i databasen\</TITLE
\</HEAD\>
\<BODY STYLE: "background-color=#DC22AF"\>
\<?php
$Fornamn = $\_POST\["Fornamn"\];
$Efternamn = $\_POST\["Efternamn"\];
$Epostadress = $\_POST\["Epostadress"\];
$Intresse="";
if(isset($\_POST\['Varlden'\]))
					$Intresse .="Världen";
if(isset($\_POST\['Politik'\]))
					$Intresse .="Politik";
if(isset($\_POST\['Sport'\]))
					$Intresse .="Sport";		
if(isset($\_POST\['Ekonomi'\]))
					$Intresse .="Ekonomi";
if(isset($\_POST\['Noje'\]))
					$Intresse .="Nöje";
if(isset($\_POST\['Annat'\]))
					$Intresse .="Annat";		
$Frequency = $\_POST\["Frequency"\];

/\* Öppnar databaskoppling \*/
$dB = odbc_connect("databas","","") or
		die("Kan inte öppna databasen.");
	

$sql="INSERT INTO Table1(Fornamn, Efternamn, Epostadress, Intresse, Frequency)VALUES
('$Fornamn', '$Efternamn', '$Epostadress', '$Intresse', '$Frequency')";

/\* Exekverar frågan mot databasen och lagrar resultatet i en variabel som får heta Status \*/
$Status = odbc_exec($dB,$sql);

	// Avslutar databaskopplingen
	odbc_close($dB); 
	
	/\* Om det gick bra att skriva in data i databasen, skrivs följande ut på skärmen: \*/
	if($Status){
	print("Posten har skrivits in i databasen. \<br /\>");
	print("För att kolla vad som står i databasen, klicka här:");
	}
	?\>
	 \<a href="uturdatabasen.php?send=send"\>Databasinnehåll\</a\>\<br /\>
\<a href="Lab4.html"\>Tillbaka till formuläret\</a\>
\</BODY\>
\</HTML\>

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

## #19 — fiddler, 2007-03-05T14:15Z

Det kan inte vara så att det du kallar "Table1" skulle heta "uppgifter"? Du har olika tabellnamn i "utur..." och "ini...".

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

## #20 — PollyJuice, 2007-03-05T14:17Z

> **fiddler skrev:**
>
> Det kan inte vara så att det du kallar "Table1" skulle heta "uppgifter"? Du har olika tabellnamn i "utur..." och "ini...".

Nej, det var en rest från en gammal uppgift... har uppdaterat bägge så att det står INSERT INTO Table1 resp. SELECT FROM Table1.

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

---

Tråden på webben: https://www.webforum.nu/amne/php/157693-en-enda-felaktig-rad  
Nästa sida: https://www.webforum.nu/amne/php/157693-en-enda-felaktig-rad/page2.md
