Avatar billede stoiss Nybegynder
21. april 2006 - 16:24 Der er 19 kommentarer og
2 løsninger

insert into indsætter ikke noget

hejsa.
nu har jeg i lang tid siddet og bøvlet med et lille script:

<html>
<head>
    <title>Nyt dokument</title>
</head>

<body>
Opret bruger.
<form ACTION="login.php" METHOD="POST">
<input type="text" name="bruger" value="Brugernavn"><br>
<input type="password" name="kode" value="Kodeord"><br>
<input type="text" name="navn" value="Navn"><br>
<input type="text" name="efternavn" value="Efternavn"><br>
<input name="submit" type="submit" value="Opret!">
</form>
<?PHP
//connecter til databasen
include('conf.php');

//indsætter data i databasen
$insertSQL = "insert into brugere (bruger, kode, navn, efternavn)
values ('$_POST[bruger]', '$_POST[kode]', '$_POST[navn]', '$_POST[efternavn]')";
mysql_query($insertSQL) or die(mysql_error());


?>


</body>
</html>

Den sætter ikke "værdierne" ind i databasen, laver bare 4 tomme felter og giver den et id .. havde samme problem i går, og det er den samme insert ting jeg har brugt idag
Avatar billede yHec Novice
21. april 2006 - 16:35 #1
prøv at bruge denne her istedet:

$insertSQL = sprintf("insert into brugere (bruger, kode, navn, efternavn)
values (%s, %s, %s, %s)", $_POST['bruger'], $_POST['kode'], $_POST['navn'], $_POST['efternavn']);
mysql_query($insertSQL) or die(mysql_error());

mvh

/y
Avatar billede erikjacobsen Ekspert
21. april 2006 - 16:36 #2
Sæt noget udenom:

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

    ...din sql kode

  }
Avatar billede sw_red_6 Nybegynder
21. april 2006 - 16:36 #3
øh, jeg går ud fra at det ikke er al koden du har givet os der er det rigtigt?
Hmm ang. problemet har du forsøgt at udskrive $_POST[bruger], $_POST[kode], $_POST[navn] og $_POST[efternavn] for at se om der rent faktisk står noget i variablerne?
Hvis det gør det så kan det være fordi du mangler ' eller " inde i [], men det er jeg absolut ikke sikker på...
Avatar billede olebole Juniormester
22. april 2006 - 20:58 #4
<ole>

Når dokumentet loades, vil der uden tvivl blive oprettet en række med tomme felter.
Når formen submittes, bør der derimod oprettes en række med de korrekte værdier - dersom databasen altså passer med det, du har skrevet (feltnavne).
Det første undgår du ved at gøre, som Erik skriver.

Derudover må du _aldrig_ sætte bruger-input direkte i databasen - eller foretage dig andet med databasen på baggrund af uvalideret bruger-input.
Check _altid_, om det input, du får, svarer til det input, du forventer. Ellers er det så let som ingenting at tømme hele din DB!

/mvh
</bole>
Avatar billede stoiss Nybegynder
23. april 2006 - 17:49 #5
Jeg har nu prøvet med Y's kode og med erik's, kode uden om, men dette birker ikke :-/
olebole -> Hvordan ville du sikre det så?

MvH Stoiss
Avatar billede yHec Novice
23. april 2006 - 17:59 #6
Så må vil hellere prøve forfra...
Prøv dette:

<?PHP
//connecter til databasen
include('conf.php');

//indsætter data i databasen
if(isset($_POST['submit'])) {
    $insertSQL = sprintf("insert into brugere (bruger, kode, navn, efternavn)
    values (%s, %s, %s, %s)", $_POST['bruger'], $_POST['kode'], $_POST['navn'], $_POST['efternavn']);
    mysql_query($insertSQL) or die(mysql_error());
}

?>
<html>
<head>
    <title>Nyt dokument</title>
</head>

<body>
Opret bruger.
<form ACTION="<?php echo $PHP_SELF ?>" METHOD="POST">
<input type="text" name="bruger" value="Brugernavn"><br>
<input type="password" name="kode" value="Kodeord"><br>
<input type="text" name="navn" value="Navn"><br>
<input type="text" name="efternavn" value="Efternavn"><br>
<input name="submit" type="submit" value="Opret!">
</form>


</body>
</html>
Det virker hos  mig

/y
Avatar billede stoiss Nybegynder
23. april 2006 - 18:02 #7
Når jeg prøver at oprette en bruger får jeg følg. fejl:

Unknown column 'test' in 'field list'

Hvad gør den der "<?php echo $PHP_SELF ?>"  egentlig?:)
Avatar billede duejensen Nybegynder
23. april 2006 - 18:34 #8
Ja, der mangler lidt 'glyffer'

Ret
  $insertSQL = sprintf("insert into brugere (bruger, kode, navn, efternavn)
    values (%s, %s, %s, %s)", $_POST['bruger'], $_POST['kode'], $_POST['navn'], $_POST['efternavn']);

til
  $insertSQL = sprintf("insert into brugere (bruger, kode, navn, efternavn)
    values ('%s', '%s', '%s', '%s')", $_POST['bruger'], $_POST['kode'], $_POST['navn'], $_POST['efternavn']);




<?php echo $PHP_SELF ?>  skriver bare navnen på scriptet selv - en nem måde at sikre at, selvom man senere beslutter sig for at rename sit script, så henviser formen stadig til det rigtige script.
Avatar billede stoiss Nybegynder
23. april 2006 - 19:02 #9
Nu er det som om at den bare reloader siden opret.php, uden at smide noget i databasen ..

koden ser sådan ud nu:
<?PHP
//connecter til databasen
include('conf.php');

//indsætter data i databasen
if(isset($_POST['submit'])) {
  $insertSQL = sprintf("insert into brugere (bruger, kode, navn, efternavn)
    values ('%s', '%s', '%s', '%s')", $_POST['bruger'], $_POST['kode'], $_POST['navn'], $_POST['efternavn']);


}

?>
<html>
<head>
    <title>Nyt dokument</title>
</head>

<body>
Opret bruger.
<form ACTION="<?php echo $PHP_SELF ?>" METHOD="POST">
<input type="text" name="bruger" value="Brugernavn"><br>
<input type="password" name="kode" value="Kodeord"><br>
<input type="text" name="navn" value="Navn"><br>
<input type="text" name="efternavn" value="Efternavn"><br>
<input name="submit" type="submit" value="Opret!">
</form>


</body>
</html>
Avatar billede duejensen Nybegynder
23. april 2006 - 19:08 #10
Jeg tror den faktisk indsætter i databasen, men at du bare ikke kan se det, i browseren. Kigger du efter i mysqladmin vil du sikkert se det.

Du skulle nok udvide lidt, og give en information om at brugeren er oprettet:



<html>
<head>
    <title>Nyt dokument</title>
</head>

<body>
<?PHP
//connecter til databasen
include('conf.php');

//indsætter data i databasen
if(isset($_POST['submit'])) {
  $insertSQL = sprintf("insert into brugere (bruger, kode, navn, efternavn)
    values ('%s', '%s', '%s', '%s')", $_POST['bruger'], $_POST['kode'], $_POST['navn'], $_POST['efternavn']);
?>
    Du er nu oprettet som bruger<p> 

<?php
}
else
{
?>
Opret bruger.
<form ACTION="<?php echo $PHP_SELF ?>" METHOD="POST">
<input type="text" name="bruger" value="Brugernavn"><br>
<input type="password" name="kode" value="Kodeord"><br>
<input type="text" name="navn" value="Navn"><br>
<input type="text" name="efternavn" value="Efternavn"><br>
<input name="submit" type="submit" value="Opret!">
</form>


<?php
}
?>


</body>
</html>
Avatar billede stoiss Nybegynder
23. april 2006 - 19:10 #11
Jeg kigger i phpmyadmin ja, men der er ikke indsat noget :-/

Det er kun mig der skal kunne oprette bruger, så det er jo i bund og grund ikke nødvendigt med alle de små snedige fiduser endnu :D nu skal systemet først op at køre :)
Avatar billede duejensen Nybegynder
23. april 2006 - 19:14 #12
Ok, nu ser jeg hvad der er galt.
Ved den sidste ændring af
$insertSQL=    osv,
fik du samtidigt lige fjernet linien

mysql_query($insertSQL) or die(mysql_error());

Den skal selvfølgelig ind igen.
Avatar billede stoiss Nybegynder
23. april 2006 - 19:16 #13
Det er da rigtigt ja! lagde jeg ikke lige mærke til :)
Nu indsætter den også det hele, kan du forklare mig hvorfor det jeg havde lavet først ikke virkede? :-)
Avatar billede duejensen Nybegynder
23. april 2006 - 19:22 #14
Dit første forsøg indsatte i databasen, før du trykkede på opret, og før du fik lov til at indtaste noget i felterne - derfor fik du tomme records.

Hvis det alligevel kun er dig, der skal oprette brugere, kunne du vel ligeså godt bare have indsat i phpmyadmin - men så havde du selvfølgelig ikke fået gennemført programmeringsøvelsen her.
Avatar billede yHec Novice
23. april 2006 - 19:23 #15
svar
Avatar billede stoiss Nybegynder
23. april 2006 - 19:23 #16
Hvorfor indsatte den i databasen før der var trykket opret?

Det er nemlig for at få øvelsen i at programere :) ellers havde det andet været nemmere ja :)
Avatar billede stoiss Nybegynder
23. april 2006 - 19:24 #17
folk der vil ha points, smid et svar :)
Avatar billede duejensen Nybegynder
23. april 2006 - 19:27 #18
Fordi (som erikjacobsen skrev)
du manglede

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

    ...din sql kode

  }

Nu har du godt nok brugt (isset($_POST[´submit'])) i stedet, men princippet er det samme.
Avatar billede stoiss Nybegynder
23. april 2006 - 19:27 #19
>Okay, skal jeg huske en anden god gang så :) Tak for hjælpen :) venter lige på erik :)
Avatar billede erikjacobsen Ekspert
23. april 2006 - 19:30 #20
Jeg samler slet ikke på point, tak.
Avatar billede stoiss Nybegynder
23. april 2006 - 19:30 #21
Okay i orden :)
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