Inlogscript
Ik maak gebruik van een prachtig inlogscript,
waarbij de gebruiker ook zijn profiel kan aanpassen.
Helaas is het nog niet gelukt het script zo te krijgen,
dan het ook helemaal goed werkt.
Wie kan mij helpen?
Het gaat om het volgende script:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
ob_start();
//include the header
require("top.php");
//check if the session Uname is in use
if($_SESSION['Uname'] == '' || $_SESSION['lp'] == '')
{
header("Location: login.php");
exit;
}
echo "<br><br>";
//get the users profile
$result = mysql_query("SELECT * FROM ***
WHERE Uname='{$_SESSION['Uname']}'") or die(mysql_error());
?>
ob_start();
//include the header
require("top.php");
//check if the session Uname is in use
if($_SESSION['Uname'] == '' || $_SESSION['lp'] == '')
{
header("Location: login.php");
exit;
}
echo "<br><br>";
//get the users profile
$result = mysql_query("SELECT * FROM ***
WHERE Uname='{$_SESSION['Uname']}'") or die(mysql_error());
?>
Het veranderen gaat helaas nog niet helemaal goed.<br />
De veranderde gegevens worden niet gelijk gewijzigd weergegeven,<br />
je moet deze pagina eerst opnieuw openen, daarna zijn de gegevens wel aangepast.<br />
Bedankt voor de moeite.<br />
<br />
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
$row = mysql_fetch_array( $result );
$Email = $row['2'];
$Fname = $row['3'];
$Lname = $row['4'];
echo "<table><form method=post action=profile.php?action=update>";
echo "<tr><td><font size=2>Voornaam:</td><td><input type=text name=Fname value=" . $Fname . "></td></tr>";
echo "<tr><td><font size=2>Achternaam:</td><td><input type=text name=Lname value=" . $Lname . "></td></tr>";
echo "<tr><td><font size=2>Gebruikersnaam:</td><td><b>" . $Uname . "</b></td></tr>";
echo "<tr><td><font size=2>Email:</td><td><input type=text name=Email value=" . $Email . "></td></tr>";
echo "<tr><td><a href=changepass.php><i>Verander wachtwoord</i></a></td><td></td></tr>";
echo "<tr><td></td><td><input type=submit value=Verander></td></tr>";
echo "</form></table>";
if($_GET['action'] == 'update')
{
if($_POST['Fname'] == '' || $_POST['Lname'] == '' || $_POST['Email'] == '')
{
echo error('blank');
exit;
}
else
{
//update
$Fname = str_replace(" ", "%20", $_POST['Fname']);
$Lname = str_replace(" ", "%20", $_POST['Lname']);
$Email = str_replace(" ", "%20", $_POST['Email']);
$result = mysql_query("UPDATE *** SET Fname='" . $Fname . "' WHERE Uname='{$_SESSION['Uname']}'")
or die(mysql_error());
$result = mysql_query("UPDATE *** SET Lname='" . $Lname . "' WHERE Uname='{$_SESSION['Uname']}'")
or die(mysql_error());
$result = mysql_query("UPDATE *** SET Email='" . $Email . "' WHERE Uname='{$_SESSION['Uname']}'")
or die(mysql_error());
echo error("updated");
}
}
function error($error)
{
if($error == 'blank')
{
echo "<b>Vult u a.u.b. alle velden in</b>";
}
if($error == 'updated')
{
echo "<b>Het veranderen is gelukt</b>";
}
}
include("../footer.php");
?>
$row = mysql_fetch_array( $result );
$Email = $row['2'];
$Fname = $row['3'];
$Lname = $row['4'];
echo "<table><form method=post action=profile.php?action=update>";
echo "<tr><td><font size=2>Voornaam:</td><td><input type=text name=Fname value=" . $Fname . "></td></tr>";
echo "<tr><td><font size=2>Achternaam:</td><td><input type=text name=Lname value=" . $Lname . "></td></tr>";
echo "<tr><td><font size=2>Gebruikersnaam:</td><td><b>" . $Uname . "</b></td></tr>";
echo "<tr><td><font size=2>Email:</td><td><input type=text name=Email value=" . $Email . "></td></tr>";
echo "<tr><td><a href=changepass.php><i>Verander wachtwoord</i></a></td><td></td></tr>";
echo "<tr><td></td><td><input type=submit value=Verander></td></tr>";
echo "</form></table>";
if($_GET['action'] == 'update')
{
if($_POST['Fname'] == '' || $_POST['Lname'] == '' || $_POST['Email'] == '')
{
echo error('blank');
exit;
}
else
{
//update
$Fname = str_replace(" ", "%20", $_POST['Fname']);
$Lname = str_replace(" ", "%20", $_POST['Lname']);
$Email = str_replace(" ", "%20", $_POST['Email']);
$result = mysql_query("UPDATE *** SET Fname='" . $Fname . "' WHERE Uname='{$_SESSION['Uname']}'")
or die(mysql_error());
$result = mysql_query("UPDATE *** SET Lname='" . $Lname . "' WHERE Uname='{$_SESSION['Uname']}'")
or die(mysql_error());
$result = mysql_query("UPDATE *** SET Email='" . $Email . "' WHERE Uname='{$_SESSION['Uname']}'")
or die(mysql_error());
echo error("updated");
}
}
function error($error)
{
if($error == 'blank')
{
echo "<b>Vult u a.u.b. alle velden in</b>";
}
if($error == 'updated')
{
echo "<b>Het veranderen is gelukt</b>";
}
}
include("../footer.php");
?>
Als ik de pagina opent,
zie ik netjes alle goeie, up to date, gegevens.
Als ik vervolgens de gegevens verander
en op de knop veranderen klik,
gaan de weergegeven gegevens weer terug naar de oude gegevens.
In de database zijn ze wel veranderd, maar ze worden nog niet weergegeven.
Vandaar mijn vraag,
hoe krijg ik het voor mekaar,
dat als ik op de knop veranderen klik,
de gegevens up-to-date worden weergegeven?
Alvast bedankt voor de hulp
P.s.: de naam van de database klopt wel, hier alleen even vervangend door ***
P.s.: het middengedeelte maakt ook deel uit van het script
Gewijzigd op 01/01/1970 01:00:00 door Jan Veenstra
Moeten de variabelen misschien halverwege een andere naam krijgen?
je gaat waarschijnlijk (ook) de fout in door de combinatie van $_GET en $_POST doorelkaar te gebruiken.
Er word eerst gekeken of er op de knop wordt gedrukt,
(tenminste, volgens mij is dat in dit geval de update action,
mocht dat niet zo zijn dan hoor ik het graag ;)
vervolgens wordt er gekeken of de velden zijn ingevuld.
Het ligt volgens mij aan het vernieuwen van de pagina,
maar ik kom er niet helemaal uit.
Iemand nog suggesties?
Heeft er iemand nog een betere oplossing?
Waarom wil je weer op je formulier terrecht komen? Mooiste is natuurlijk om naar een overzicht gestuurd te worden als bevestiging.