Avatar billede mp Nybegynder
17. november 2000 - 03:19 Der er 20 kommentarer og
1 løsning

Input fra form til Mysql dba

Hvorfor virker det ikke ?

<html>

<form action=\"input.php4\" method=\"post\">
  <input name=\"$enavn\">
  <input name=\"$fnavn\">
  <input name=\"$adr\">
  <input type=\"submit\">
  </form>
</html>

<?php
$connection = mysql_connect(\"localhost\", \"root\");
mysql_select_db(\"test_db\", $connection);

$insertSQL = \"insert into medlemmer (fornavn, efternavn, adresse)
              values (\'$fnavn\', \'$enavn\', \'$adr\')\";
mysql_query($insertSQL);

mysql_close();
?>
Avatar billede retep Nybegynder
17. november 2000 - 03:53 #1
Fordi dine inputs ikke skal hedde $variabel. Prøv med:
<form action=\"input.php4\" method=\"post\">
  <input name=\"enavn\">
  <input name=\"fnavn\">
  <input name=\"adr\">
  <input type=\"submit\">
  </form>
</html>

i stedet :)
Avatar billede retep Nybegynder
17. november 2000 - 03:57 #2
Desuden køres dit php-script hver gang, og det er ikke hensigtsmessigt, da ikke er noget i formen første gang brugeren går ind på siden. Prøv at gøre sådan her i stedet:

<html>

<form action=\"input.php4\" method=\"post\">
  <input type=\"text\" name=\"enavn\">
  <input type=\"text\" name=\"fnavn\">
  <input type=\"text\" name=\"adr\">
  <input type=\"hidden\" name=\"sendt\">
  <input type=\"submit\">
  </form>
</html>

<?php
  if ($sendt){
$connection = mysql_connect(\"localhost\", \"root\");
mysql_select_db(\"test_db\", $connection);

$insertSQL = \"insert into medlemmer (fornavn, efternavn, adresse)
              values (\'$fnavn\', \'$enavn\', \'$adr\')\";
mysql_query($insertSQL);

mysql_close();
}
?>

Du manglede også at definere type på dine inputs :)
Avatar billede retep Nybegynder
17. november 2000 - 04:06 #3
Derudover burde du også sætte <BODY> ind lige efter <HTML> og </BODY> lige før </HTML>
Avatar billede disky Nybegynder
17. november 2000 - 08:20 #4
I stedet for Retep\'s måde at se om den er sendt på.

Hved at kigge på en hidden variabel, skulle du hellere kigge på om siden er blevet kørt med en \'POST\' istedet for den normale \'GET\'.
Det er den pæne måde at gøre det på :-)

Hilsen Søren
Avatar billede emulatorspil.dk Nybegynder
17. november 2000 - 13:36 #5
du skal da også kalde din fil for .php eller .php3
Avatar billede disky Nybegynder
17. november 2000 - 13:51 #6
Hvorfor skulle man dog kalde den for .php3 hvis man bruger php4 ????
Avatar billede emulatorspil.dk Nybegynder
17. november 2000 - 14:19 #7
jeg kalder den for .php men jeg viste bare ikke at man kan kalde dem .php4 men nu ved jeg noget mere
Avatar billede disky Nybegynder
17. november 2000 - 14:21 #8
det kan man godt, du kan også sagtens kalde med for .fgfh4ncj forudsat Apache er sat korrekt op til det.

Men jeg vil give dig ret .php ser pænere ud
Avatar billede mp Nybegynder
17. november 2000 - 14:30 #9
Jeg kan stadig ikke se mine data med flg. forespørgelse:

<?php
    $connection = mysql_connect(\"localhost\", \"root\");
    $db = \"test_db\";

    $result = mysql_db_query($db, \"SELECT * FROM medlemmer\", $connection);

    while($row = mysql_fetch_array($result)) {
      echo $row[\"fornavn\"].\"<br>\";
      echo $row[\"efternavn\"].\"<br>\";
      echo $row[\"adresse\"].\"<br>\";
      echo \"<br>\\n\";
    }
    mysql_free_result($result);
?>

Er er databasen:
CREATE TABLE medlemmer
  (id tinyint(4) DEFAULT \'0\' NOT NULL AUTO_INCREMENT,
  fornavn varchar(20),
  efternavn varchar(20),
  adresse varchar(255),
  PRIMARY KEY (id), UNIQUE id (id));
Avatar billede mp Nybegynder
17. november 2000 - 14:32 #10
Det er fuldstændigt rigtigt Disky.
Avatar billede retep Nybegynder
17. november 2000 - 14:33 #11
disky>> Hvad mener du med at kigge på om der er sendt med post istedet for get? Kan du give et eksempel?
Avatar billede mp Nybegynder
17. november 2000 - 14:34 #12
Jeg fatter heller ikke disky !
Avatar billede disky Nybegynder
17. november 2000 - 14:46 #13
I selve spørgsmålet, kan man se data kommer fra en FORM.

For at sikre at der ikke blvier lavet database opslag, uden der er trykket på SUBMIT. Gør man klogt i at checke om der er blevet \'POST\' eller \'GET\'
Aner ikke hvad man gør i PHP men i JSP checker man resultatet fra en getMethod() som man kalder på HttpServletRequest klassen
Avatar billede retep Nybegynder
17. november 2000 - 14:51 #14
Prøv sådan her:
<?php
    $connection = mysql_connect(\"localhost\", \"root\");
    $db = \"test_db\";

    $result = mysql_db_query($db, \"SELECT * FROM medlemmer\");

    while ($row = mysql_fetch_row($result)) {
      echo \"Fornavn: \".$row[0].\"<br>\";
      echo \"Efternavn: \".$row[1].\"<br>\";
      echo \"Adresse: \".$row[2].\"<br>\";
      echo \"<br>\\n\";
    }
    mysql_free_result($result);
?>


Må dog ærligt indrømme at jeg ikke kan se hvad der er galt med dit...
Har du phpMyAdmin? Ellers kan jeg klart anbefale det! Du kan hente det hér: http://www.phpwizard.net/projects/phpMyAdmin/
Avatar billede retep Nybegynder
17. november 2000 - 14:57 #15
Kan det være fordi du skal sætte en tom streng ind i din connection som password? :

    $connection = mysql_connect(\"localhost\", \"\", \"\");
Sådan plejer jeg at connecte til en localhost DB uden password.
Avatar billede retep Nybegynder
17. november 2000 - 15:04 #16
Disky>> Øhhhh, ja, og det gør man med:
if ($sendt){ } i PHP. Og enten spørger man på et hiddenfelt, hvis man vil give brugeren mulighed for at trykke enter i et input-felt og derved komme videre. Ellers checker man på submit-knappen...

:)
Avatar billede mp Nybegynder
17. november 2000 - 15:05 #17
Data der lægges \"manuelt\" ind via dosprompten kan ses med min forespørgelse. Så der må være noget galt med input.php4
Avatar billede disky Nybegynder
17. november 2000 - 15:06 #18
wow, endnu en god grund til jeg ikke roder med PHP :-)

Før det første er det at bruge en Hidden variabel til det da en meget grim møde at gøre det på.

En form der bliver sendt lige gyldigt, om der blvier trykket på \'Enter\' i et felt, eller folk trykker på Submit bliver sendt med \'POST\' og så checker man på det istedet.
Synes jeg er meget mere korrekt end de andre svinkeærinder :-)
Avatar billede retep Nybegynder
17. november 2000 - 15:16 #19
disky>> He he... okay :)

mp>> Ja, jeg er lige ved at kigge på det... Vender tilbage med en løsning om få minutter...
Avatar billede retep Nybegynder
17. november 2000 - 15:28 #20
Dette virker på min maskine:
input.php4:

<html>
<BODY>
<form action=\"input.php4\" method=\"post\" name=\"FormName\">
  <input type=\"text\" name=\"enavn\">
  <input type=\"text\" name=\"fnavn\">
  <input type=\"text\" name=\"adr\">
  <input type=\"hidden\" name=\"sendt\" value=\"true\">
  <input type=\"submit\">
  </form>



<?php
 
if ($sendt){


echo \"sendt\" ;
$connection = mysql_connect(\"localhost\", \"root\");

$insertSQL = \"insert into medlemmer (fornavn, efternavn, adresse) values(\'$fnavn\', \'$enavn\', \'$adr\')\";
mysql_db_query(\"test_db\", $insertSQL);

mysql_close();
}
?>
</BODY>
</html>
------------------------------

Og din server forstår godt filendelsen: .php4 ?
Avatar billede mp Nybegynder
17. november 2000 - 15:39 #21
Mange tak for hjælpen
Det var  select_db der gjorde den store forskel

jojo selvf.. kan den fatte php4
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
Computerworld tilbyder specialiserede kurser i database-management

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