//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
ø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å...
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!
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.
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>
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 :)
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? :-)
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.
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.