webForumDet fria alternativet

update i form

3 svar · 460 visningar · startad av 1228

1228Medlem sedan jan. 20083 inlägg
#1

Hej, jag har gjort en gästbok och nu håller jag på med en administratörssida av administratörer för gästboken. Att lägga till och ta bort fungerar men jag har problem med att updatera administratörer. Skydd mot SQL-injections lägger jag till senare, vill bara få det här att funka nu.

min delete.php ser ut såhär (fungerar)

 
<?php
session_start();
if (!isset($_SESSION['sess_user'])){
  header("Location: login.php");
  exit;
}

mysql_connect("localhost", "xxx", "xxx")
or die ("could not connect to server");

mysql_select_db("xxx")
or die ("could not connect to database");

if(isset($_POST['submit']))
{
  	$anvandarnamn = $_POST['anvandarnamn'];
   	mysql_query("DELETE FROM tbladmin WHERE anvandarnamn='$anvandarnamn'");
   	header("location: adminadmin.php");
   	}

	$anvandarnamn=$_GET['anvandarnamn'];
	$result=mysql_query("select * from tbladmin where anvandarnamn='$anvandarnamn'");
	$row=mysql_fetch_assoc($result);
	mysql_close();
?>

<form id="deleteform" name="deleteform" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
Användarnamn: <input name="anvandarnamn" type="text" id="anvandarnamn" value="<? echo $row['anvandarnamn']; ?>"/><br>
<input type="submit" name="submit" value="Ta bort" id="submit" />
</form>

Jag trodde att det skulle vara enkelt att göra en liknande för update.php

<?php
session_start();
if (!isset($_SESSION['sess_user'])){
  header("Location: login.php");
  exit;
}

mysql_connect("localhost", "xxx", "xxx")
or die ("could not connect to server");

mysql_select_db("xx")
or die ("could not connect to database");

if(isset($_POST['submit']))
{
$anvandarnamn=$_POST['anvandarnamn'];
$fornamn=$_POST['fornamn'];
$efternamn=$_POST['efternamn'];

mysql_query("UPDATE tbladmin SET fornamn='$fornamn', efternamn='$efternamn', anvandarnamn='$anvandarnamn' WHERE anvandarnamn='$anvandarnamn'");
header("Location: adminadmin.php");
}

	$anvandarnamn=$_GET['anvandarnamn'];
	$result=mysql_query("SELECT * FROM tbladmin WHERE anvandarnamn='$anvandarnamn'");
	$row=mysql_fetch_assoc($result);

?>

<form id="updateform" name="updateform" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

Användarnamn: <input name="anvandarnamn" type="text" id="anvandarnamn" value="<? echo $row['anvandarnamn']; ?>"/><br>
Förnamn: <input name="fornamn" type="text" id="fornamn" value="<? echo $row['fornamn']; ?>"/><br>
Efternamn: <input name="efternamn" type="text" id="efternamn" value="<? echo $row['efternamn']; ?>"/><br>
<input type="submit" name="Submit" value="Ändra" />
</form>

felet blir när jag trycker på submit
Notice: Undefined index: anvandarnamn in /home/informatik/distk11/public_html/update.php on line 25

( $anvandarnamn=$_GET['anvandarnamn']; )

När jag tryckt på submit ska den inte köra sql-satsen och sen hoppa till adminadmin.php, inte köra rad 25 igen?

Peter SMedlem sedan dec. 20025 483 inlägg
#2

Välkommen till wF!

Du använder GET utan att skicka med någon nyckel 'anvandarnamn' i frågesträngen. Av koden att döma (method="post") gissar jag att du vill använda $_POST['anvandarnamn'] i stället.

1228Medlem sedan jan. 20083 inlägg
#3

Peter S skrev:

Välkommen till wF!

Du använder GET utan att skicka med någon nyckel 'anvandarnamn' i frågesträngen. Av koden att döma (method="post") gissar jag att du vill använda $_POST['anvandarnamn'] i stället.

Tack tack.

GET använder jag ju för att fylla de labels jag har i formuläret med info om administratören, kommer från adminadmin.php med länken <a href=\"update.php?anvandarnamn=".$row['anvandarnamn']."\"> Redigera</a> i en tabell med alla administratörer. Jag vill sedan kunna skriva in ett annat efternamn om jag skrivit fel eller liknande. Med "post" vill jag spara det nya jag skrivit in.

Reserverar mig för att jag har missuppfattat dig nu.

1228Medlem sedan jan. 20083 inlägg
#4

det hela var ju ganska lätt egentligen...
Jag fick inte till det och sen snöade jag in mig och testade 100 saker på måfå när lösningen är så logisk som den kan bli. Fick en blixt från klar himmel eller vad man ska säga.

Det blir ju lite fel med
"anvandarnamn='$anvandarnamn' WHERE anvandarnamn='$anvandarnamn'");"

och

Användarnamn: <input name="anvandarnamn" type="text" id="anvandarnamn" value="<? echo $row['anvandarnamn']; ?>"/><br>

säg att användaren heter morgan och jag vill ändra till peter, skriver jag in peter så blir ju satsen användarnamn=peter where användarnamn=peter, men användaren heter ju morgan innan uppdateringen.

löste det med <input type="hidden" name="user" id="user" value="<? echo $row['anvandarnamn']; ?>"/> i formuläret och sen

$user=$_POST['user'];

$update=mysql_query("UPDATE tbladmin SET fornamn='$fornamn', efternamn='$efternamn', anvandarnamn='$anvandarnamn', losenord=MD5('$losenord') WHERE anvandarnamn='$user'");

132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)