Avatar billede fjorbak Forsker
18. oktober 2005 - 09:05 Der er 15 kommentarer og
1 løsning

Fejl i PHP formular

Hej gutter
Jeg er ikke så stiv i at programere og har derfor indtastet dette fra et hæfte. jeg får denne fejl nogle gange og kan godt se at det er et udefineret index fejl, men hvad gør jeg for at løse problemet. Hele scriptet har jeg lagt efter disse fejl linier.

Notice: Undefined index: navn in g:\www\malka\svarskema.php on line 18
Notice: Undefined index: natbord in g:\www\malka\svarskema.php on line 19
Notice: Undefined index: favoritmad in g:\www\malka\svarskema.php on line 20

HER ER Scriptet.

<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
      <title>Svarskema malka</title>
</head>
<body>

<!-- Her er formularen -->
<form name="svarskema" method="post" action="svarskema.php">
<p>Skriv dit navn her: <input type="text" name="navn" size="50" maxlength="50"></p>
<p>Hvilken bog ligger på dit natbord lige nu? <textarea name="natbord"></textarea></p>
<p>Favoritmad for tiden? <textarea name="favoritmad"></textarea></p>
<input type="submit" name="send" value="Del dine oplysninger med andre">
</form>

<?php
// Hent indholdet af formularens felter
$navn = $_REQUEST['navn'];
$natbord = $_REQUEST["natbord"];
$favoritmad = $_REQUEST["favoritmad"];

// Skab forbindelse til databasen her
mysql_connect("localhost", "malka", "libris") or die(mysql_error());
mysql_select_db("mindb") or die(mysql_error());

//Indsæt indholdet af formularfelterne i databasen
mysql_query("INSERT INTO svarskema(svarID, navn, natbord, favoritmad) values(0, '$navn', '$natbord', '$favoritmad')");
?>
</body>
</html>

er der en der lige vil hjælpe
Jan
Avatar billede fjorbak Forsker
18. oktober 2005 - 09:06 #1
NB.: glemte at sige at det gemmer godt nok i DB, det har jeg kontroleret

Jan
Avatar billede showsource Seniormester
18. oktober 2005 - 09:13 #2
Du kan tjekke om "navn" m.m. er sat, inden du begynder på noget.

<?php
if(isset($_POST["navn"], $_POST["natbord"], $_POST["favoritmad"])) {

// Hent indholdet af formularens felter
$navn = $_REQUEST['navn'];
$natbord = $_REQUEST["natbord"];
$favoritmad = $_REQUEST["favoritmad"];

// Skab forbindelse til databasen her
mysql_connect("localhost", "malka", "libris") or die(mysql_error());
mysql_select_db("mindb") or die(mysql_error());

//Indsæt indholdet af formularfelterne i databasen
mysql_query("INSERT INTO svarskema(svarID, navn, natbord, favoritmad) values(0, '$navn', '$natbord', '$favoritmad')");

}
?>
Avatar billede showsource Seniormester
18. oktober 2005 - 09:14 #3
I stedet for REQUEST, synes jeg du bør bruge $_POST, eller $_GET
Og du bør også tjekke for sql-injection, så der ikke er nogen som laver "halløj" med din DB via formularen.
Avatar billede fjorbak Forsker
18. oktober 2005 - 09:16 #4
Hejsa

Alt dette kører i et arbejdsmiljø lige nu

if(isset($_POST["navn"], $_POST["natbord"], $_POST["favoritmad"])) {

jeg har ret i at du har indsat en ny linie lige her ;-)

jan
Avatar billede showsource Seniormester
18. oktober 2005 - 09:16 #5
Avatar billede showsource Seniormester
18. oktober 2005 - 09:17 #6
jow, og en afsluttende }
Avatar billede fjorbak Forsker
18. oktober 2005 - 09:17 #7
gik for hurtigt, har du ændret andet ??

;-)
Jan
Avatar billede showsource Seniormester
18. oktober 2005 - 09:23 #8
næh, men jeg for nu at komme med en løsning jeg finder bedst:

<?php
// bruges ved indsættelse af data i DB
function my_addslashes($streng){
  return get_magic_quotes_gpc()?$streng:addslashes($streng);
}

// bruges ved output til browser
function my_stripslashes($streng){
  return get_magic_quotes_runtime()?stripslashes($streng):$streng;
}

if(isset($_POST["navn"], $_POST["natbord"], $_POST["favoritmad"])) {

// Skab forbindelse til databasen her
mysql_connect("localhost", "malka", "libris") or die(mysql_error());
mysql_select_db("mindb") or die(mysql_error());

//Indsæt indholdet af formularfelterne i databasen
mysql_query("INSERT INTO `svarskema` (`svarID`, `navn`, `natbord`, `favoritmad`) VALUES ('', '". my_addslashes($_POST["navn"]) ."', '". my_addslashes($_POST["natbord"]) ."', '". my_addslashes($_POST["favoritmad"]) ."')") or die (mysql_error());

}
?>
Avatar billede showsource Seniormester
18. oktober 2005 - 09:24 #9
Og faktisk, så gerne smide det i toppen af scriptet, inden du udskriver noget, og lav en header tilbage til filen som viser formularen.
Ellers vil man kunne trykke F5 og så bliver det gemt en gang mere :O)
Avatar billede showsource Seniormester
18. oktober 2005 - 09:28 #10
<?php
// bruges ved indsættelse af data i DB
function my_addslashes($streng){
  return get_magic_quotes_gpc()?$streng:addslashes($streng);
}

// bruges ved output til browser
function my_stripslashes($streng){
  return get_magic_quotes_runtime()?stripslashes($streng):$streng;
}

if(isset($_POST["navn"], $_POST["natbord"], $_POST["favoritmad"])) {

// Skab forbindelse til databasen her
mysql_connect("localhost", "malka", "libris") or die(mysql_error());
mysql_select_db("mindb") or die(mysql_error());

//Indsæt indholdet af formularfelterne i databasen
mysql_query("INSERT INTO `svarskema` (`svarID`, `navn`, `natbord`, `favoritmad`) VALUES ('', '". my_addslashes($_POST["navn"]) ."', '". my_addslashes($_POST["natbord"]) ."', '". my_addslashes($_POST["favoritmad"]) ."')") or die (mysql_error());

header("Location:". $_SERVER["PHP_SELF"]);
exit;

}
?><!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
      <title>Svarskema malka</title>
</head>
<body>

<!-- Her er formularen -->
<form name="svarskema" method="post" action="svarskema.php">
<p>Skriv dit navn her: <input type="text" name="navn" size="50" maxlength="50"></p>
<p>Hvilken bog ligger på dit natbord lige nu? <textarea name="natbord"></textarea></p>
<p>Favoritmad for tiden? <textarea name="favoritmad"></textarea></p>
<input type="submit" name="send" value="Del dine oplysninger med andre">
</form>
</body>
</html>
Avatar billede fjorbak Forsker
18. oktober 2005 - 09:31 #11
tak for alt vil lige afprøve scriptet, men giv et svar

Jan
Avatar billede fjorbak Forsker
18. oktober 2005 - 09:39 #12
Jeg har nu gennemlæst dine rettelser og fundet de 2 } som du har sat en i den linie som er indsat og en afsluttende forneden,meget mærkeligt at hun (Malka) ikke har lavet det.

Jan

Giv et svar
Avatar billede fjorbak Forsker
18. oktober 2005 - 09:43 #13
Når jeg starter scriptet kommer der stadig den fejl melding hvorfor??

jan
Avatar billede showsource Seniormester
18. oktober 2005 - 09:47 #14
Prøv at vise fejlmeldingen
Avatar billede showsource Seniormester
18. oktober 2005 - 09:49 #15
Umiddelbart, når jeg kopierer koden og loader i browseren, kommer der ingen fejl?
Avatar billede fjorbak Forsker
25. december 2005 - 11:05 #16
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester