09. september 2005 - 21:32
Der er
40 kommentarer og 2 løsninger
UPDATE - opdater - ret
Hej.. Er der nogle der ved hvordan man retter - opdater data i sin database, uden at bruge sin database men kun ved hjælp ar formulare.. Koden til scriptet ser sådan ud: (Skrive den rigtige selv) <? session_start(); ?> <html> <head> <title>Brugersystem</title> <meta name="Generator" content="Maguma Studio"> </head> <body> <? // Tjek om brugeren er logget ind if ($s_navn && $s_password) { ?> <? // Opdater oplysningerne if ($mode == yes) { include ("config.php"); mysql_connect($host,$user,$pass); mysql_select_db($db); $query = mysql_query("UPDATE community SET hjemmeside = '$hjemmeside' password = '$password' alder = '$alder' email = '$email' WHERE id =$id") or print mysql_error(); echo "<font color=\"darkgreen\" face=\"verdana\" style=\"font-size: 11px\">Dine oplysninger er blevet opdateret"; } ?> <? include ("config.php"); mysql_connect($host,$user,$pass); mysql_select_db($db); $query = mysql_query("SELECT * FROM community WHERE navn='$s_navn' AND password='$s_password'") or print mysql_error(); while($r = mysql_fetch_array($query)) { $id = $r["id"]; $navn = $r["navn"]; $password = $r["password"]; $email = $r["email"]; $alder = $r["alder"]; $hjemmeside = $r["hjemmeside"]; } ?> <form method="post" action="ret.php?mode=yes"> <input type="hidden" name="id" value="$id"> <table width="300"> <tr> <td width="300" colspan="2"><b>Ret oplysninger</b></td> </tr><tr> <td width="150">Brugernavn:</td> <td width="150"><? echo "$navn" ?></td> </tr><tr> <td width="150">Kodeord:</td> <td width="150"><input type="text" name="kodeord" value="<? echo "$password"; ?>" style="width: 152px"></td> </tr><tr> <td width="150">Email:</td> <td width="150"><input type="text" name="email" value="<? echo "$email"; ?>" style="width: 152px"></td> </tr><tr> <td width="150">Alder:</td> <td width="150"><input type="text" name="alder" value="<? echo "$alder"; ?>" style="width: 152px"></td> </tr><tr> <td width="150">Hjemmeside:</td> <td width="150"><input type="text" name="hjemmeside" value="<? echo "$hjemmeside"; ?>" style="width: 152px"></td> </tr><tr> <td width="300" colspan="2" align="right"><input type="submit" name="update" value="Udfør"></td> </tr> </table> </form> <? // Hvis brugeren ikke er logget ind } else { ?> <center><font color="red">Kun for medlemmer</font></center> <? } ?> </body> </html> Det er til et brugersystem.
Annonceindlæg fra itavis
09. september 2005 - 21:44
#1
Den bliver du altså lige nødt til at uddybe: "... hvordan man retter - opdater data i sin database, uden at bruge sin database ..."
09. september 2005 - 21:47
#2
Ja ligesom man indsætte data i sin database
09. september 2005 - 21:53
#3
Jeg mener ... hvordan vil du sætte data ind i din database UDEN at bruge din database?
09. september 2005 - 21:54
#4
Jeg bruger min database men gør det ikke inde i phpmyadmin
09. september 2005 - 22:02
#5
Ok, det giver jo mere mening så... :^) Men jeg undre mig; Du har jo allerede en UPDATE-sætning: $query = mysql_query("UPDATE community SET hjemmeside = '$hjemmeside' password = '$password' alder = '$alder' email = '$email' WHERE id =$id") or print mysql_error(); - så hvad er det du har problemer med i den sammenhæng?
09. september 2005 - 22:03
#6
Vil du se direkte link ?
09. september 2005 - 22:06
#7
09. september 2005 - 22:10
#8
Du skal rette din UPDate fra: $query = mysql_query("UPDATE community SET hjemmeside = '$hjemmeside' password = '$password' alder = '$alder' email = '$email' WHERE id =$id") or print mysql_error(); - til; $query = mysql_query("UPDATE community SET hjemmeside = '$hjemmeside', password = '$password', alder = '$alder', email = '$email' WHERE id=$id") or print mysql_error();
09. september 2005 - 22:12
#9
ok
09. september 2005 - 22:14
#10
Nu dur det ikke.
09. september 2005 - 22:22
#11
Prøv at rette din UPDATE-sql til dette: $sql = "UPDATE community SET hjemmeside = '" $_POST["hjemmeside"] . "', password = '" . $_POST["password"] . "', alder = '" . $_POST["alder"] . "', email = '" . $_POST["email"] . "', WHERE id=" . $_POST["id"]; echo "DEBUG: " . $sql . "<br>"; $query = mysql_query($sql) or print mysql_error();
09. september 2005 - 22:24
#12
Nej det behøves ikke. Nu dur det... Men det er kun passwordet der ikke dur. ?
09. september 2005 - 22:27
#13
Det er fordi at du kalder den for "kodeord" i din form. Ret til: $sql = "UPDATE community SET hjemmeside = '" $_POST["hjemmeside"] . "', password = '" . $_POST["kodeord"] . "', alder = '" . $_POST["alder"] . "', email = '" . $_POST["email"] . "', WHERE id=" . $_POST["id"];
09. september 2005 - 23:24
#14
Nielle: husk også lige at anbefal vores kære bruger funktionen: mysql_escape_string() eller addslashes() (hvis altså ikke magic_quotes er enabled) :o)
10. september 2005 - 07:57
#15
Een ting af gangen - man kan også drukne folk i information. :^)
10. september 2005 - 22:24
#16
Prøv at se mit community ? Det dur ikke, så skal have hjælp.
10. september 2005 - 22:27
#17
Din linie: <input type="hidden" name="id" value="$id"> Skal rettes til: <input type="hidden" name="id" value="<? echo $id; ?>">
10. september 2005 - 22:28
#18
Jeg prøver. :)
10. september 2005 - 22:31
#19
Du kan selv prøve at logge ind. - Brugernavn: test password: test
10. september 2005 - 22:33
#20
Prøv lige med den kode jeg viset 09/09-2005 22:22:12 - sådan at vi kan se hvordan SQL'en ser ud.
10. september 2005 - 22:33
#21
Ret linien: email = '" . $_POST["email"] . "', WHERE id=" . $_POST["id"]; til: email = '" . $_POST["email"] . "' WHERE id=" . $_POST["id"];
10. september 2005 - 22:35
#22
Prøver lige nielle's forslag først. :)
10. september 2005 - 22:36
#23
Der står: Parse error: parse error, unexpected T_VARIABLE in /web/www/frac/users/myhtml/community/ret.php on line 22
10. september 2005 - 22:36
#24
Du kan lige så godt fjerne kommaet med det samme ... ellers fejler den bare :^)
10. september 2005 - 22:37
#26
... og så prøv lige at poste din nuværende version af din kode.
10. september 2005 - 22:39
#27
<? session_start(); ?> <html> <head> <title>Brugersystem</title> <meta name="Generator" content="Maguma Studio"> </head> <body> <? // Tjek om brugeren er logget ind if ($s_brugernavn && $s_password) { ?> <? // Opdater oplysningerne if ($update) { include ("config.php"); mysql_connect($host,$user,$pass); mysql_select_db($db); $sql = "UPDATE community SET hjemmeside = '" $_POST["hjemmeside"] . "' password = '" . $_POST["password"] . "' alder = '" . $_POST["alder"] . "' email = '" . $_POST["email"] . "' WHERE id=" . $_POST["id"]; echo "DEBUG: " . $sql . "<br>"; $query = mysql_query($sql) or print mysql_error(); echo "<font color=\"darkgreen\" face=\"verdana\" style=\"font-size: 11px\">Dine oplysninger er blevet opdateret"; } ?> <? include ("config.php"); mysql_connect($host,$user,$pass); mysql_select_db($db); $query = mysql_query("SELECT * FROM community WHERE brugernavn='$s_brugernavn' AND password='$s_password'") or print mysql_error(); while($r = mysql_fetch_array($query)) { $id = $r["id"]; $brugernavn = $r["brugernavn"]; $password = $r["password"]; $email = $r["email"]; $alder = $r["alder"]; $hjemmeside = $r["hjemmeside"]; } ?> <form method="post" action="ret.php"> <input type="hidden" name="id" value="<? echo $id; ?>"> <table width="300"> <tr> <td width="300" colspan="2"><b>Ret oplysninger</b></td> </tr><tr> <td width="150">Brugernavn:</td> <td width="150"><? echo "$brugernavn" ?></td> </tr><tr> <td width="150">Kodeord:</td> <td width="150"><input type="text" name="password" value="<? echo "$password"; ?>" style="width: 152px"></td> </tr><tr> <td width="150">Email:</td> <td width="150"><input type="text" name="email" value="<? echo "$email"; ?>" style="width: 152px"></td> </tr><tr> <td width="150">Alder:</td> <td width="150"><input type="text" name="alder" value="<? echo "$alder"; ?>" style="width: 152px"></td> </tr><tr> <td width="150">Hjemmeside:</td> <td width="150"><input type="text" name="hjemmeside" value="<? echo "$hjemmeside"; ?>" style="width: 152px"></td> </tr><tr> <td width="300" colspan="2" align="right"><input type="submit" name="update" value="Udfør"></td> </tr> </table> </form> <? // Hvis brugeren ikke er logget ind } else { ?> <center><font color="red">Kun for medlemmer</font></center> <? } ?> </body> </html>
10. september 2005 - 22:41
#28
ret linie 22 til: $sql = "UPDATE community SET hjemmeside = '" . $_POST['hjemmeside'] . "' password = '" . $_POST['password'] . "' alder = '" . $_POST['alder'] . "' email = '" . $_POST['email'] . "' WHERE id=" . $_POST['id'];
10. september 2005 - 22:43
#29
dur ikke.
10. september 2005 - 22:45
#30
Hvad mener du med det ikke dur?
10. september 2005 - 22:45
#31
Det var kun det sidste af kommaerne som skulle slettes: $sql = "UPDATE community SET hjemmeside = '" $_POST["hjemmeside"] . "', password = '" . $_POST["password"] . "', alder = '" . $_POST["alder"] . "', email = '" . $_POST["email"] . "' WHERE id=" . $_POST["id"];
10. september 2005 - 22:47
#32
Den fejlbesked vi får: ... MySQL server version for the right syntax to use near 'WHERE id=$id' - stemmer ikke sammen med at det er denne her kode som fejler. Der er nemlig ikke nogen SQL hvor i der står: 'WHERE id=$id'
10. september 2005 - 22:52
#33
I bunden af din kode, skriv da: <? echo "<hr>"; show_source(__FILE__); ?>
10. september 2005 - 22:52
#34
Prøv denne variation af din kode: <? session_start(); ?> <html> <head> <title>Brugersystem</title> <meta name="Generator" content="Maguma Studio"> </head> <body> <? // Tjek om brugeren er logget ind if ($s_brugernavn && $s_password) { // Opdater oplysningerne if (isset($_POST["update"])) { include ("config.php"); mysql_connect($host,$user,$pass); mysql_select_db($db); $sql = "UPDATE community SET hjemmeside = '" $_POST["hjemmeside"] . "', password = '" . $_POST["password"] . "', alder = '" . $_POST["alder"] . "', email = '" . $_POST["email"] . "' WHERE id=" . $_POST["id"]; echo "DEBUG: " . $sql . "<br>"; $query = mysql_query($sql) or die(mysql_error()); echo "<font color=\"darkgreen\" face=\"verdana\" style=\"font-size: 11px\">Dine oplysninger er blevet opdateret"; } include ("config.php"); mysql_connect($host,$user,$pass); mysql_select_db($db); $sql = "SELECT * FROM community WHERE brugernavn='$s_brugernavn' AND password='$s_password'"; $query = mysql_query($sql) or die(mysql_error()); while ($r = mysql_fetch_array($query)) { $id = $r["id"]; $brugernavn = $r["brugernavn"]; $password = $r["password"]; $email = $r["email"]; $alder = $r["alder"]; $hjemmeside = $r["hjemmeside"]; } ?> <form method="post" action="ret.php"> <input type="hidden" name="id" value="<? echo $id; ?>"> <table width="300"> <tr> <td width="300" colspan="2"><b>Ret oplysninger</b></td> </tr> <tr> <td width="150">Brugernavn:</td> <td width="150"><? echo "$brugernavn" ?></td> </tr> <tr> <td width="150">Kodeord:</td> <td width="150"><input type="text" name="password" value="<? echo "$password"; ?>" style="width: 152px"></td> </tr> <tr> <td width="150">Email:</td> <td width="150"><input type="text" name="email" value="<? echo "$email"; ?>" style="width: 152px"></td> </tr> <tr> <td width="150">Alder:</td> <td width="150"><input type="text" name="alder" value="<? echo "$alder"; ?>" style="width: 152px"></td> </tr> <tr> <td width="150">Hjemmeside:</td> <td width="150"><input type="text" name="hjemmeside" value="<? echo "$hjemmeside"; ?>" style="width: 152px"></td> </tr> <tr> <td width="300" colspan="2" align="right"> <input type="submit" name="update" value="Udfør"></td> </tr> </table> </form> <? // Hvis brugeren ikke er logget ind } else { ?> <center><font color="red">Kun for medlemmer</font></center> <? } ?> </body> </html>
10. september 2005 - 22:56
#35
Nu dur det. Prøvet at gøre det hele forfra i denne hjælp.. Hvor jeg kunne og nu dur det. :-)
10. september 2005 - 22:57
#36
Cool, så skal jakobdo og jeg vel bare lægge et svar? :^)
10. september 2005 - 22:59
#37
Svar! (synes nu du skal give Nielle flest point)
10. september 2005 - 23:01
#38
Jeg takker for point! ;o)
10. september 2005 - 23:07
#39
Takker for point :^)
... og dog, vi er faktisk ikke helt færdige endnu (09/09-2005 23:24:31).
Når du nu laver sådan noget som:
$sql = "UPDATE community SET hjemmeside = '" . $_POST["hjemmeside"] . "', password = '" . $_POST["password"] . "', alder = '" . $_POST["alder"] . "', email = '" . $_POST["email"] . "' WHERE id=" . $_POST["id"];
- så skal det kun være hvis man virkeligt stoler på folk! Der er nemlig åbent for et sikkerhedshul kaldet SQL injection i denne version. En mere sikker kode er denne:
$sql = "UPDATE community SET hjemmeside = '" . mysql_escape_string($_POST["hjemmeside"]) . "', password = '" . mysql_escape_string($_POST["password"]) . "', alder = '" . mysql_escape_string($_POST["alder"]) . "', email = '" . mysql_escape_string($_POST["email"]) . "' WHERE id=" . mysql_escape_string($_POST["id"]);
Mere info på:
http://dk2.php.net/mysql_escape_string
10. september 2005 - 23:09
#40
Tak for oplysningen. ;)
10. september 2005 - 23:13
#41
Og dine sessions bør i stedet for: $s_brugernavn, kaldes via: $_SESSION['brugernavn'] og $_SESSION['password'] jeg tænker på denne linie: if ($s_brugernavn && $s_password) Globale variabler er noget skidt.
10. september 2005 - 23:15
#42
Tak for oplysningen. ;)
Vi tilbyder markedets bedste kurser inden for webudvikling