Avatar billede xhtml Nybegynder
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.
Avatar billede nielle Nybegynder
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 ..."
Avatar billede xhtml Nybegynder
09. september 2005 - 21:47 #2
Ja ligesom man indsætte data i sin database
Avatar billede nielle Nybegynder
09. september 2005 - 21:53 #3
Jeg mener ... hvordan vil du sætte data ind i din database UDEN at bruge din database?
Avatar billede xhtml Nybegynder
09. september 2005 - 21:54 #4
Jeg bruger min database men gør det ikke inde i phpmyadmin
Avatar billede nielle Nybegynder
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?
Avatar billede xhtml Nybegynder
09. september 2005 - 22:03 #6
Vil du se direkte link ?
Avatar billede xhtml Nybegynder
09. september 2005 - 22:06 #7
http://www.go.frac.dk/community/index.php

Brugernavn: test
Password: test
Avatar billede nielle Nybegynder
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();
Avatar billede xhtml Nybegynder
09. september 2005 - 22:12 #9
ok
Avatar billede xhtml Nybegynder
09. september 2005 - 22:14 #10
Nu dur det ikke.
Avatar billede nielle Nybegynder
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();
Avatar billede xhtml Nybegynder
09. september 2005 - 22:24 #12
Nej det behøves ikke. Nu dur det... Men det er kun passwordet der ikke dur. ?
Avatar billede nielle Nybegynder
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"];
Avatar billede jakobdo Ekspert
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)
Avatar billede nielle Nybegynder
10. september 2005 - 07:57 #15
Een ting af gangen - man kan også drukne folk i information. :^)
Avatar billede xhtml Nybegynder
10. september 2005 - 22:24 #16
Prøv at se mit community ?

Det dur ikke, så skal have hjælp.
Avatar billede jakobdo Ekspert
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; ?>">
Avatar billede xhtml Nybegynder
10. september 2005 - 22:28 #18
Jeg prøver. :)
Avatar billede xhtml Nybegynder
10. september 2005 - 22:31 #19
Du kan selv prøve at logge ind. - Brugernavn: test password: test
Avatar billede nielle Nybegynder
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.
Avatar billede jakobdo Ekspert
10. september 2005 - 22:33 #21
Ret linien: email = '" . $_POST["email"] . "', WHERE id=" . $_POST["id"];
til:
email = '" . $_POST["email"] . "' WHERE id=" . $_POST["id"];
Avatar billede xhtml Nybegynder
10. september 2005 - 22:35 #22
Prøver  lige nielle's forslag først. :)
Avatar billede xhtml Nybegynder
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
Avatar billede nielle Nybegynder
10. september 2005 - 22:36 #24
Du kan lige så godt fjerne kommaet med det samme ... ellers fejler den bare :^)
Avatar billede xhtml Nybegynder
10. september 2005 - 22:37 #25
Til begge:
http://myhtml.frac.dk/community/ prøv at logge ind der:
brugernavn: test
password: test
Avatar billede nielle Nybegynder
10. september 2005 - 22:37 #26
... og så prøv lige at poste din nuværende version af din kode.
Avatar billede xhtml Nybegynder
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>
Avatar billede jakobdo Ekspert
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'];
Avatar billede xhtml Nybegynder
10. september 2005 - 22:43 #29
dur ikke.
Avatar billede jakobdo Ekspert
10. september 2005 - 22:45 #30
Hvad mener du med det ikke dur?
Avatar billede nielle Nybegynder
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"];
Avatar billede nielle Nybegynder
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'
Avatar billede jakobdo Ekspert
10. september 2005 - 22:52 #33
I bunden af din kode, skriv da:

<?
echo "<hr>";
show_source(__FILE__);
?>
Avatar billede nielle Nybegynder
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>
Avatar billede xhtml Nybegynder
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. :-)
Avatar billede nielle Nybegynder
10. september 2005 - 22:57 #36
Cool, så skal jakobdo og jeg vel bare lægge et svar? :^)
Avatar billede jakobdo Ekspert
10. september 2005 - 22:59 #37
Svar! (synes nu du skal give Nielle flest point)
Avatar billede jakobdo Ekspert
10. september 2005 - 23:01 #38
Jeg takker for point! ;o)
Avatar billede nielle Nybegynder
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
Avatar billede xhtml Nybegynder
10. september 2005 - 23:09 #40
Tak for oplysningen. ;)
Avatar billede jakobdo Ekspert
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.
Avatar billede xhtml Nybegynder
10. september 2005 - 23:15 #42
Tak for oplysningen. ;)
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