webForumDet fria alternativet

Update via form

PHP

17 svar · 361 visningar · startad av Webslave

Medlem sedan maj 2002647 inlägg
Frågan#1

Detta kanske passar sig bättre i MySql kom jag på... :l Jaja... ni får flytta mig i så fall :)

Jag försöker och försöker att skriva en funktion som updaterar användarinformationen via ett formulär men jag lyckas inte. Boken som jag sitter med hjälper mig inte heller så nu vänder jag mig till eliten (smörar lite)

Så här ser min sida ut, man kommer till den via ett inloggnings form som sätter igång sessionen.

<?
session_register("username");
session_register("password");
session_register("user_id");
if(isset($Submit)){
	UpdateProfile();
	}
else{
	MinaSidor();
	}
?>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF">
<?
function MinaSidor(){
global $username,$password,$user_id;
$connect = mysql_connect("localhost", "","");
$sql = "SELECT * FROM users WHERE username='$username' AND password='$password'";
$result = mysql_db_query("webblitteratur_com","$sql");
$rad=mysql_fetch_array($result);
?> 
      
<form name="change" action="<?=$PHP_SELF?>" method="post">
  <table width="400" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td align="right">Anv&auml;ndarnamn: </td>
      <td width="60%">&nbsp;<?=$rad["username"]?> </td>
  </tr>
  <tr>
      <td align="right">L&ouml;senord: </td>
      <td width="60%">
        <input type="password" name="password" value="<?=$rad["password"]?>">
      </td>
  </tr>
  <tr>
      <td align="right">Epost: </td>
      <td width="60%">
        <input type="text" name="user_epost" value="<?=$rad["user_epost"]?>">
      </td>
  </tr>
  <tr>
    <td>&nbsp;</td>
      <td width="60%">
        <input type="image" value="Submit" name="Submit" src="images/main/buttonskicka1.gif" width="35" height="13">
      </td>
  </tr>
</table>
      </form>
<?=$rad["username"]?> <?=$rad["user_epost"]?> <?=$rad["password"]?>
<?

mysql_close($connect);
}
?>
</body>
</html>
<?
function UpdateProfile(){
global $username,$password,$user_id;
$connect = mysql_connect("localhost", "","");
$sql = "UPDATE users SET password='$password',user_epost='$user_epost' WHERE user_id='$user_id'";
$result = mysql_db_query("webblitteratur_com","$sql");
echo "Dina uppgifter har ändrats!";
mysql_close($connect);
}
?>

Någon som ser vart jag har fastnat med skägget? All hjälp uppskattas... tackar =)

Medlem sedan maj 2002647 inlägg
#2

Bump... ingen som har någon idé?

Medlem sedan jan. 2000372 inlägg
#3

Du skulle ju kunna berätta vad det är som inte funkar? Får du nåt felmeddelande?

Medlem sedan maj 2002647 inlägg
#4

Mitt problem är att databasen inte uppdateras, jag vet inte om det är för sessionen eller om jag har kodat fel.

Medlem sedan juli 200173 inlägg
#5

Ta reda på vad som blir fel

Hej,

du måste leta själv!

Börja med att skriva ut $sql på skärmen, då ser du ju vad som skickas till mySql. Sedan kan du ju alltid kontrollera $result. Om det är något fel så tar du reda på detta via mysql_errno()

Medlem sedan nov. 2000857 inlägg
#6

Vad lefien menar är att du kan kolla varför queryn misslyckas.. ;)

$result = mysql_db_query("webblitteratur_com","$sql") or die(mysql_error());
Medlem sedan maj 2002647 inlägg
#7

ok, jag ska testa

Medlem sedan maj 2002647 inlägg
#8

Det händer ingetnting... jag tror inte ens funktionen "UpdateProfile" startas... suck... jag måste bli bättre på detta :D

HJÄLP!

Medlem sedan nov. 2000857 inlägg
#9

Flytta upp funktionerna ovanför if (isset....

Medlem sedan maj 2002647 inlägg
#10

Funkar inte... :\

Medlem sedan maj 2002647 inlägg
#11

Jag testar att skriva om hela kalaset så hör jag av mig om det fortsätter att krångla.

Medlem sedan juli 200173 inlägg
#12

Vadå tror? Det får man göra någon annanstans ("Livet är någon annanstans" är för övrigt en mycket bra bok). Men i programmering gäller det att ta reda på fakta. Om nu inte någon, som är lite snällare än vad jag är, talar om vad som är felet i din kod så ska man göra så här:

Koda en liten del av koden, testa om det fungerar. (Att programmera allting på en gång och sedan testa har inte fungerat de senaste 25 åren och kommer inte göra det de kommande 15 åren heller. Sedan går jag i pension.)

Nähe, det fungerar inte!? Då får man ta reda på varför och vad det är som inte fungerar. Då är en bra debugger till stor hjälp. Har man inte det så får man köra fattigmans-debugger. För PHP blir det då ett antal echo() eller printf(). Då hittar man var det är som blir fel i 95% av fallen. Kanske behöver man då kolla i manualen (PHP eller mysql) eller, om man kör helt fast, så frågar man i ett fora.

Vad jag upptäckt de senaste åren är att allt fler bara letar efter kod som man kan kopiera och sedan försöker använda. Utan att lära sig teori och grunder. Det är inget jag rekommenderar. Däremot rekommenderar jag att leta kod för att få bra ideér, men det är en helt annan femma.

Ja ja, mossiga råd från en mossig gammal gube...

Medlem sedan maj 2002647 inlägg
#13

Heh... alla råd är bra råd beroende på hur man tar dem ;)

Medlem sedan juli 200173 inlägg
#14

Bra!, tyckte jag lät lite knarrig och gnällig...

Men imorgon blir det andra tag, och utan dator, för då åker vi till O-Ringen.

Medlem sedan maj 2002647 inlägg
#15

Vad är det? Tycker att jag känner igen det som en orienteringstävling... men jag har säkert helt fel :D

Medlem sedan maj 2002647 inlägg
#16

Jag löste problemet men nu dök ett annat upp =)

När jag har ändrat mitt lösenord etc. så måste ju lösenordet i sessionen ändras osså annars så kan ju inte koden returnera något för det finns ingen användare med det gamla lösenordet

function UpdateProfile(){
global $username,$password,$new_password,$new_user_epost;
$connect = mysql_connect("localhost", "","");
$sql = "UPDATE users SET password='$new_password',user_epost='$new_user_epost'
WHERE username='$username' AND password='$password'";
$result = mysql_db_query("webblitteratur_com","$sql");
mysql_close($connect);
	echo "Dina uppgifter har uppdaterats!";
	MinaSidor();
}
Medlem sedan maj 2002647 inlägg
#17

Någon som vet?

Medlem sedan aug. 20002 975 inlägg
#18

Prova med:

 session_register("password");
$password = $new_password;
267 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
143 ms — hämta tråd, inlägg och bilagor (db)
117 ms — ändringar (db)