Avatar billede starf Nybegynder
11. oktober 2005 - 19:48 Der er 12 kommentarer og
2 løsninger

gem forms til en tabel problem

har lidt problemer med at få gemt noget fra nogle forms til min database, kan nogle se hva jeg gør galt? (og ja jeg er ny til php)

fil: admin_profil_ny.php

<?php
require('config.php');
?>
<form action="admin_profil_ny_save.php" method="get">
<br>
<b>Navn</b>

<input type="text" value="skriv dit Navn" name="navn" size="30"><br>

<b>By</b>

<input type="text" value="skriv din by" name="by" size="30"><br>

<b>Alder</b>

<input type="text" value="skriv din alder" name="alder" size="30"><br>

<b>Interesser</b>

<input type="text" value="skriv dine interesser" name="interesser" size="30"><br>

<b>Profil tekst</b>

<input type="text" value="Skriv Profil tekst" name="txt" size="30"><br>

<input type="submit" value="Send">
</form>

fil: admin_profil_ny_save.php

<?php
require('config.php');
?>

<?php
mysql_query ("INSERT INTO birthdays (navn, by, alder, interesser, txt) VALUES ('$navn','$by','$alder','$interesser','$txt')");
mysql_close($link);

?>
Avatar billede jaw Nybegynder
11. oktober 2005 - 19:50 #1
Ja, by er et reserveret ord (by på engelsk) i MySQL, så derfor vil du få en fejl.

Skift til:
mysql_query ("INSERT INTO birthdays (navn, `by`, alder, interesser, txt) VALUES ('$navn','$by','$alder','$interesser','$txt')");

Og prøv igen. Evt.:
mysql_query ("INSERT INTO birthdays (navn, `by`, alder, interesser, txt) VALUES ('$navn','$by','$alder','$interesser','$txt')") or die(mysql_error());

Ved at tilføje or die(mysql_error()); vil du nemlig få returneret fejlmeddelelsen fra databasen, som du så kan bruge til at fejlsøge med.
Avatar billede saucer Nybegynder
11. oktober 2005 - 19:58 #2
Nu hvor dit method er GET så skal dine links også hentes fra GET..


Altså :

<?php
mysql_query ("INSERT INTO birthdays (navn, by, alder, interesser, txt) VALUES ('$_GET[navn]','$_GET[by]','$_GET[alder]','$_GET[interesser]','$_GET[txt]')");
mysql_close($link);
?>

Du skal dog ændre cellen BY til Bynavn eller noget andet efter at man ikke må bruge BY.

Hvis dit form method var POST skulle dine links self hentes fra post.
Avatar billede saucer Nybegynder
11. oktober 2005 - 19:59 #3
Ps. Det er dog smartest at bruge POST til at sende data frem og tilbage som skal gemmes i en DB..
Avatar billede jaw Nybegynder
11. oktober 2005 - 20:01 #4
Nå ja, det så jeg ikke lige.

Men for så lige at få syntaxen helt på plads:
mysql_query ("INSERT INTO birthdays (navn, `by`, alder, interesser, txt) VALUES ('".$_GET['navn']."','".$_GET['by']."','".$_GET['alder']."','".$_GET['interesser']."','".$_GET['txt']."')");
Avatar billede starf Nybegynder
11. oktober 2005 - 20:05 #5
hva er fordelen ved at bruge post? istedet for get? og kan jeg bare ændre alle de steder der står get til post?
Avatar billede jaw Nybegynder
11. oktober 2005 - 20:08 #6
Forskellen på get og post er jo, at post er "gemt" og get er vist i adresselinien. Fordelen ved post er derfor netop at det er gemt for brugeren, og når først han har trykken send kan han ikke umiddelbart ændre eller påvirke værdierne mere - det kan han principielt med get. Og så er det måske det skønhedsmæssige ved at skulle vise måske 300 tegn i adresselinien :)
Avatar billede starf Nybegynder
11. oktober 2005 - 20:09 #7
ahhh kan jeg så godt bare ændre alle de steder der står get til post eller?
Avatar billede jaw Nybegynder
11. oktober 2005 - 20:11 #8
Den:
<form action="admin_profil_ny_save.php" method="get">
ændrer du til:
<form action="admin_profil_ny_save.php" method="post">

og så ja, alle $_GET ændrer du bare til $_POST.
Avatar billede starf Nybegynder
11. oktober 2005 - 20:17 #9
oki tkaker har fået det til at virke.. hvordan skal jeg dele pointene?

ps. JAW med det andet du hjalp mig med... den når den skal vise et id, så virker den det hele du kan evt se det her:
http://www.evilsun.dk/skole/profil_list.php
Avatar billede jaw Nybegynder
11. oktober 2005 - 20:20 #10
Nå, det var også dig, ok :) Men nu hvor du viser linket, så kan jeg se at det faktisk alligevel ikke virker helt, men tæt på.

Udskift lige linien:
  $q = mysql_query("SELECT * FROM profil") or die(mysql_error());
med:
  $q = mysql_query("SELECT * FROM profil WHERE id = ".$_GET['id']) or die(mysql_error());
i vis.php, så skulle det gerne spille max.

Men hvordan du deler point er jo sådan set op til dig, afhængig af hvem du mener hjalp og gav dig det du søgte.
Avatar billede starf Nybegynder
11. oktober 2005 - 20:24 #11
mente nok der skulle noget id ind.. damn må vist heller få skaffet mig nogle lær php bøger *suk* tak for hjælpen begge
Avatar billede saucer Nybegynder
11. oktober 2005 - 20:33 #12
Tak for points..

Nu ved jeg ikke om det er blivet sagt men der er også sikkerheds mæssige grunde til hvorfor man skal bruge POST frem for GET..

Eks..

sender.php  = Inder holder en alm form

modtager.php = Indeholder et kode der skal modtage fra form.

Hvis jeg bruger GET så sender  form data over adresselinje og scriptet under modtager.php læser der fra... 

Men hvis man nu har et felt som ikke må ses i adresselinjen så som password eller noget mere figrigt så kan jeg faktisk snyde mig uden om sender.php ved at gå direkte til  modtager.php og selv tilføje mine egne variabler som måske skulle checkes under sender.php..  eks.  modtager.php?user=123&pass=tedt

Men ved at bruge POST så vil scriptet kun acceptere data som er sendt fra en FORM ;)  smart ikke ?
Avatar billede starf Nybegynder
11. oktober 2005 - 20:53 #13
Jo smart.. takker for forklaringen.. holder mig til post fremover :)
Avatar billede saucer Nybegynder
11. oktober 2005 - 21:00 #14
np. held og lykke med kodning..
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