Avatar billede kagejoe Nybegynder
15. januar 2006 - 02:29 Der er 3 kommentarer og
1 løsning

Tilføje data til MySql database

Jeg er helt nybegynder inde for PHP og MySql så jeg har været en tur på biblioteket og låne et par bøger. Men jeg er gået istå i en af guiderne. Jeg vil prøve og lave en hjemmeside hvor jeg kan indtaste mine dvdfilm i en database.

Der står at man først skal lave denne formular:
<form name="filmdb" method="post" action="addfilm.php">
<p>Titel: <input type="text" name="Titel" size="60" maxlength="60"></p>
<p>DKsub: <input type="checkbox" name="DKsub" value="valgt">
<p>UKsub: <input type="checkbox" name="UKsub" value="valgt">
<p>Bemaerk: <input type="text" name="Bemaerk" size="20" maxlength="20"></p>
<p>Udlaant: <input type="text" name="Udlaant" size="20" maxlength="20"></p>
<input type="submit" name="add" value="Tilføj"></form>

Derefter skal man lave funktionen der logger ind i databasen og tilføjer de indtastede dataer, men der står at man skal skrive det i samme fil som formularen.

Her er funktionen:
<?PHP
// Hent indholdet af formularens felter
$Titel = $_REQUEST["Titel"];
$DKsub = $_REQUEST["DKsub"];
$UKsub = $_REQUEST["UKsub"];
$Bemaerk = $_REQUEST["Bemaerk"];
$Udlaant = $_REQUEST["Udlaant"];

//Skaber forbindelse til databasen
mysql_connect("localhost","xxx","xxx") or die(mysql_error());
mysql_select_db("filmdb") or die(mysql_error());

//Indsæt indholdet af formularfelterne i databasen
mysql_query("INSERT INTO filmdb (Id, Titel, DKsub, UKsub, Bemaerk, Udlaant) values(0, '$Titel', '$DKsub', '$UKsub', '$Bemaerk', '$Udlaant')");
?>

Jeg har prøvet og sætte det samme på lidt forskellige måder men når jeg åbner siden kommer der de forskellige inputboxe og derunder står der følgende fejl:
Notice: Undefined index: Titel in c:\programmer\easyphp1-7\www\kagejoe\add.php on line 11

Notice: Undefined index: DKsub in c:\programmer\easyphp1-7\www\kagejoe\add.php on line 12

Notice: Undefined index: UKsub in c:\programmer\easyphp1-7\www\kagejoe\add.php on line 13

Notice: Undefined index: Bemaerk in c:\programmer\easyphp1-7\www\kagejoe\add.php on line 14

Notice: Undefined index: Udlaant in c:\programmer\easyphp1-7\www\kagejoe\add.php on line 15

Håber der er nogen der kan hjælpe mig med at sætte det sammen på den rigtige måde.

Hilsen Christoffer
Avatar billede Slettet bruger
15. januar 2006 - 07:02 #1
Når de skal være på samme side skal du have en metode til at finde ud af om det er første gang siden vises eller om det er fordi brugeren har trykket på Tilføj.

En simpel måde er som vist nedenfor, hvor man går ud fra at første kald er et HTTP-GET, det som sker når man skriver i adressefeltet eller man aktivere et a-element i HTML og at brugeren har trykket Tilføj når der er tale om et HTTP-POST, det der sker når method="post" i form-elementet.

Nedenstående er kun for at komme igang, du bør jo kontrollerer det input duår og se om brugeren har indtastet noget, men nu kommer du viderer.

if('POST' == $_SERVER['REQUEST_METHOD']) {
  // Hent indholdet af formularens felter
  $Titel = $_REQUEST["Titel"];
  $DKsub = $_REQUEST["DKsub"];
  $UKsub = $_REQUEST["UKsub"];
  $Bemaerk = $_REQUEST["Bemaerk"];
  $Udlaant = $_REQUEST["Udlaant"];

  //Skaber forbindelse til databasen
  mysql_connect("localhost","xxx","xxx") or die(mysql_error());
  mysql_select_db("filmdb") or die(mysql_error());

  //Indsæt indholdet af formularfelterne i databasen
  mysql_query("INSERT INTO filmdb (Id, Titel, DKsub, UKsub, Bemaerk, Udlaant) values(0, '$Titel', '$DKsub', '$UKsub', '$Bemaerk', '$Udlaant')");
}
Avatar billede showsource Seniormester
15. januar 2006 - 17:17 #2
umiddelbart, nu du er ved at komme igang, så tjek altid om en værdi er sat.
Og hvis du ved det er post så brug POST o.s.v
REQUEST kan bruges, men bruger den selv kun hvis der både kan være en post eller get.

Derudover er jeg selv til at adskille PHP og sql, samt bruge ` omkring navne i sql:

mysql_query("INSERT INTO `filmdb` (`Titel`, `DKsub`, `UKsub`, `Bemaerk`, `Udlaant`) Values ('". $Titel ."', '". $DKsub ."', '". $UKsub ."', '". $Bemaerk ."', '". $Udlaant ."')") or die (mysql_error());

Og lidt tjek for ikke at der bliver manipuleret med DB bør også gøres
Avatar billede showsource Seniormester
15. januar 2006 - 17:19 #3
Gik ud fra at Id er autoincrement i din DB? :O)

Og kik evt. her:

http://www.eksperten.dk/artikler/190
Avatar billede kagejoe Nybegynder
02. februar 2007 - 20:41 #4
hmm
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