18. december 2004 - 22:45
Der er
48 kommentarer og 1 løsning
Hmm.. Ret profil..
Det er så nok sidste del i mit communnity dette her. Jeg skal have lavet så man kan rette i sin profil. Men jeg ved ikke helt hvordan jeg skal gøre det.. For når man logger ind sætter den kun en session og det er: $bruger. Så man kan jo ikke få den til at udskrive infoen fra de oplysninger. F.eks. email elign. Håber I forsåt mit spørgsmål.. Her er det jeg ikke kan finde ud af: - At få den til at udskrive de oplysninger man allerede har, f.eks. email, i et input felt. Og så kan man bare ændre det. - Og hvordan får man den til at rette oplysningerne når man har indtastet nogle nye? Synes jeg har set noget der hed UPDATE engang.. Venlig hilsen Kack
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
18. december 2004 - 22:51
#1
ala $bruger = $_SESSION['bruger']; $query = mysql_query("SELECT * FROM brugertabel WHERE brugernavn='$burger ") or die(mysql_error()); $row = mysql_fetch_array($query); echo "email: ".$row['email']; osv...
18. december 2004 - 22:59
#2
Som Morten allerede er inde på, så henter du brugerens info ud via hans SQL. Og så laver du en form: echo "<form action=\"". $_SERVER['PHP_SELF'] ."\" method=\"post\">"; echo "Email: <input type=\"text\" value=\"" . $row[email] . "\" name=\"email\">"; echo "<input type=\"submit\" name=\"update\" value=\"update\">"; echo "</form>"; if (isset($_POST[update]) { $sql = " UPDATE brugertabel SET email = " . $_POST['email'] . " WHERE brugernavn = " . $_SESSION['bruger'] . " LIMIT 1 "; $query = mysql_query($sql); }
18. december 2004 - 23:00
#3
jakobdo: Hvad er det der LIMIT 1? Hvad skal man bruge det til der?
18. december 2004 - 23:03
#4
så den kun henter info fra en bruger... bare en ekstra sikkerhed.
18. december 2004 - 23:04
#5
Du skal selvfølgelig lave tjek på det data som sendes til din database... PT kan man lave sql injections! Så du skal validere input! (men det gør du jo også som den gode koder du er) :o)
18. december 2004 - 23:05
#6
morteeart, brugernavn = burger :)
18. december 2004 - 23:05
#7
Ok :) Må lige prøve det :) Skal nok skrive hvis det virker, eller hvis det ikke virker :)
18. december 2004 - 23:06
#8
det jakobdo mener er at du bør køre det du sender til MySQL gennem mysql_escape_string f.eks. sådan: "SELECT * FROM brugertabel WHERE brugernavn='" . mysql_escape_string( $bruger ). "'
18. december 2004 - 23:06
#9
Jakobda: Jeg er skam ikke nogen gid koder :) ;)
18. december 2004 - 23:08
#10
coderdk , lol ja :)
18. december 2004 - 23:10
#11
btw. sql injections ??.. Hvor tit er folks brugernavne som ligger i en session, en sql kommando ?-) og specielt hvis det er et navn som er i en database, som de i forvejen loggede ind med :)
19. december 2004 - 00:11
#12
men hvad nu hvis folk vil ændre deres brugernavn?? Derfor er det en god ide at have en "id int(5) auto_increment unique primary key" på tabellen. Så kan du update ALT, selv brugernavnet :)
19. december 2004 - 00:41
#13
folk skal helst ikke kunne ændre deres brugernavn..
19. december 2004 - 10:33
#14
20. december 2004 - 20:37
#15
ok.. Jeg har nu denne kode: <? $connection = mysql_connect("lol","lol","lol"); mysql_select_db("lol", $connection); ?> <? $bruger = $_SESSION['bruger']; $query = mysql_query("SELECT * FROM brugere WHERE bruger='$bruger' ") or die(mysql_error()); $row = mysql_fetch_array($query); echo "<form action=\"". $_SERVER['PHP_SELF'] ."\" method=\"post\">"; echo "Email: <input type=\"text\" value=\"" . $row['email'] . "\" name=\"email\">"; echo "<input type=\"submit\" name=\"update\" value=\"update\">"; echo "</form>"; if (isset($_POST['update'])) { $sql = " UPDATE brugere SET email = " . $_POST['email'] . " WHERE bruger = " . $_SESSION['bruger'] . " LIMIT 1 "; $query = mysql_query($sql); } ?> Hvad er der galt med den? Den opdatere ikke den email man skriver i feltet.
20. december 2004 - 22:46
#16
Prøv at ret: $query = mysql_query($sql); til: $query = mysql_query($sql) or die('Invalid query: ' . mysql_error());
20. december 2004 - 22:48
#17
email = " . $_POST['email'] . " skal nok være: email = '" . mysql_escape_string( $_POST['email'] ) . "'
20. december 2004 - 22:49
#18
(bemærk apostroffer før/efter gåseøjne)
20. december 2004 - 22:57
#19
coderdk, du er altid så klog! :o)
20. december 2004 - 22:58
#20
jakobdo, lol :) jeg lægger dog mærke til ting af og til ;] Men nok de forkerte ting, vil min kæreste sige :P
21. december 2004 - 08:23
#21
Så sandt, så sandt... :o)
21. december 2004 - 10:37
#22
Hmm... Virker stadig ikke helt :( Har denne kode: <? Mysql connection osv ?> <? $bruger = $_SESSION['bruger']; $query = mysql_query("SELECT * FROM brugere WHERE bruger='$bruger' ") or die(mysql_error()); $row = mysql_fetch_array($query); echo "<form action=\"". $_SERVER['PHP_SELF'] ."\" method=\"post\">"; echo "Email: <input class=\"inp1\"type=\"text\" value=\"" . $row['email'] . "\" name=\"email\">"; echo "<br><br>"; echo "<input class=\"inp2\"type=\"submit\" name=\"update\" value=\"update\">"; echo "</form>"; if (isset($_POST['update'])) { $sql = " UPDATE brugere SET email = '" . mysql_escape_string( $_POST['email'] ) . "' WHERE bruger = " . $_SESSION['bruger'] . " LIMIT 1 "; $query = mysql_query($sql) or die('Invalid query: ' . mysql_error()); } ?>
21. december 2004 - 11:02
#23
Får du nogle fejl når scriptet køres?
21. december 2004 - 13:34
#24
Nej.. Det gør jeg ikke.
21. december 2004 - 14:00
#25
Du mangler en session_start(); i toppen af dit script?
21. december 2004 - 14:10
#26
Nej den har jeg i min idex.php fil. Og jeg bruger ?side=feks.php ..
Men tror det er noget med action="" for der sker jo ikke rigtig noget når man trykekr update, andet end man komemr til forsiden.
Du kan evt. prøve det her:
www.kack.dk/kackcommunity2
21. december 2004 - 14:16
#28
Hmm.. Skal det så bare så sådan her ud? : action=\""?side=profil/ret.php"\"
21. december 2004 - 14:31
#29
Prøv det ja!
21. december 2004 - 14:40
#30
Hmm.. Nu kommer der en fejl :( Invalid query: Unknown column 'kack' in 'where clause' Og dette er min kode: <? $bruger = $_SESSION['bruger']; $query = mysql_query("SELECT * FROM brugere WHERE bruger='$bruger' ") or die(mysql_error()); $row = mysql_fetch_array($query); echo "<form action=\"?side=profil/ret.php\" method=\"post\">"; echo "Email: <input class=\"inp1\"type=\"text\" value=\"" . $row['email'] . "\" name=\"email\">"; echo "<br><br>"; echo "<input class=\"inp2\"type=\"submit\" name=\"update\" value=\"update\">"; echo "</form>"; if (isset($_POST['update'])) { $sql = " UPDATE brugere SET email = '" . mysql_escape_string( $_POST['email'] ) . "' WHERE bruger = " . $_SESSION['bruger'] . " LIMIT 1 "; $query = mysql_query($sql) or die('Invalid query: ' . mysql_error()); } ?>
21. december 2004 - 14:43
#31
Prøv at ret: bruger='$bruger' til: bruger LIKE '$bruger'
21. december 2004 - 14:51
#32
Den siger stadig det samme :(
21. december 2004 - 14:53
#33
Ret: bruger = " . $_SESSION['bruger'] . " til: bruger LIKE '" . $_SESSION['bruger'] . "'
21. december 2004 - 14:58
#34
Så.. Nu virker det :D Men hvordan kan jeg få den til at rette det med det samme? Altså lige når den har refreshet ret.php ? Hvis du prøver at se det, så kan du se det ikke virker før man trykker å ret profil igen. Men mange gangr tak for hjælpen ind til vidre!
21. december 2004 - 15:05
#35
<?
$bruger = $_SESSION['bruger'];
if (isset($_POST['update']))
{
$sql = "
UPDATE
brugere
SET
email = '" . mysql_escape_string( $_POST['email'] ) . "'
WHERE
bruger = " . $_SESSION['bruger'] . "
LIMIT
1
";
$query = mysql_query($sql) or die('Invalid query: ' . mysql_error());
if (mysql_affected_rows() > 0)
header("Location:
http://www.kack.dk/kackcommunity2/?side=profil/bruger.php" );
else
header("Location:
http://www.kack.dk/kackcommunity2/?side=profil/ret.php" );
}
$query = mysql_query("SELECT * FROM brugere WHERE bruger='$bruger' ") or die(mysql_error());
$row = mysql_fetch_array($query);
echo "<form action=\"?side=profil/ret.php\" method=\"post\">";
echo "Email: <input class=\"inp1\"type=\"text\" value=\"" . $row['email'] . "\" name=\"email\">";
echo "<br><br>";
echo "<input class=\"inp2\"type=\"submit\" name=\"update\" value=\"update\">";
echo "</form>";
if (isset($_POST['update']))
{
$sql = "
UPDATE
brugere
SET
email = '" . mysql_escape_string( $_POST['email'] ) . "'
WHERE
bruger = " . $_SESSION['bruger'] . "
LIMIT
1
";
$query = mysql_query($sql) or die('Invalid query: ' . mysql_error());
}
?>
Og så kunne du lave bruger sådan, at hvis der ikke står et navn i GET, så tester den lige SESSION['bruger']
HUSK HEADER skal bruges inden der er sendt output til skærmen, så der vil du nok løbe ind i probs...
21. december 2004 - 15:11
#36
Hov, der er lidt for meget kode ibunden... Alternativ kan du prøv denne løsning: <? $bruger = $_SESSION['bruger']; if (isset($_POST['update'])) { $sql = " UPDATE brugere SET email = '" . mysql_escape_string( $_POST['email'] ) . "' WHERE bruger = " . $_SESSION['bruger'] . " LIMIT 1 "; $query = mysql_query($sql) or die('Invalid query: ' . mysql_error()); if (mysql_affected_rows() > 0) echo "Opdateringen er udført..."; else echo "Opdateringen mislykkedes, prøv igen eller kontakt WebMoster..."; } else { $query = mysql_query("SELECT * FROM brugere WHERE bruger='$bruger' ") or die(mysql_error()); $row = mysql_fetch_array($query); echo "<form action=\"?side=profil/ret.php\" method=\"post\">"; echo "Email: <input class=\"inp1\"type=\"text\" value=\"" . $row['email'] . "\" name=\"email\">"; echo "<br><br>"; echo "<input class=\"inp2\"type=\"submit\" name=\"update\" value=\"update\">"; echo "</form>"; } ?>
21. december 2004 - 15:21
#37
Nu siger den: Opdateringen mislykkedes <? $bruger = $_SESSION['bruger']; if (isset($_POST['update'])) { $sql = " UPDATE brugere SET email = '" . mysql_escape_string( $_POST['email'] ) . "' WHERE bruger LIKE '" . $_SESSION['bruger'] . "' LIMIT 1 "; $query = mysql_query($sql) or die('Invalid query: ' . mysql_error()); if (mysql_affected_rows() > 0) echo "Opdateringen er udført..."; else echo "Opdateringen mislykkedes, prøv igen eller kontakt <a href='?side=profil/bruger.php&bruger=kack'>Kack</a>"; } else { $query = mysql_query("SELECT * FROM brugere WHERE bruger LIKE '$bruger' ") or die(mysql_error()); $row = mysql_fetch_array($query); echo "<form action=\"?side=profil/ret.php\" method=\"post\">"; echo "Email: <input class=\"inp1\"type=\"text\" value=\"" . $row['email'] . "\" name=\"email\">"; echo "<br><br>"; echo "<input class=\"inp2\"type=\"submit\" name=\"update\" value=\"update\">"; echo "</form>"; } ?>
21. december 2004 - 15:24
#38
Jeg har lige rettet min email på din side, og den sagde: Opdateringen er udført.. Er det fordi du evt retter til en email som den allerede har? Dermed opdateres intet i databasen...
21. december 2004 - 15:31
#39
Hehe.. Det var det vidst.. min fejl :S Når man så også skal kunne rette andre ting, er det vel bare at gøre det samme?
21. december 2004 - 15:31
#40
Ja, så sætter du bare flere felter på! Og retter SQL'erne til...
21. december 2004 - 15:32
#41
Ok.. Jeg siger rigtig mange gange tak for hjælpen! Laver du ik lige et svar?
21. december 2004 - 15:52
#42
Hov.. Forresten.. Hvis man så kun retter en af tingene. Så komemr der en fejl med at man ikke har rettet den anden ting. Hvordan kan man lave så der ikke kommer den fejl når man kun har rettet en ting ud af f.eks to ting?
21. december 2004 - 15:53
#43
Hov, må jeg se din kode?
21. december 2004 - 16:01
#44
sorry.. mig der var lidt for hurtig her på exp.. Har fået lavet det.. Men min kode ser sådan ud : <? $bruger = $_SESSION['bruger']; if (isset($_POST['update'])) { $sql = " UPDATE brugere SET email = '" . mysql_escape_string( $_POST['email'] ) . "', profiltekst = '" . mysql_escape_string( $_POST['profiltekst'] ) . "' WHERE bruger LIKE '" . $_SESSION['bruger'] . "' LIMIT 1 "; $query = mysql_query($sql) or die('Invalid query: ' . mysql_error()); if (mysql_affected_rows() > 0) echo "Opdateringen er udført..."; else echo "Opdateringen mislykkedes, prøv igen eller kontakt <a href='?side=profil/bruger.php&bruger=kack'>Kack</a>"; } else { $query = mysql_query("SELECT * FROM brugere WHERE bruger LIKE '$bruger' ") or die(mysql_error()); $row = mysql_fetch_array($query); echo "<form action=\"?side=profil/ret.php\" method=\"post\">"; echo "Email: <input class=\"inp1\"type=\"text\" value=\"" . $row['email'] . "\" name=\"email\"><br>"; echo "Profil-tekst: <textarea rows=\"15\"cols=\"50\"class=\"inp1\"type=\"textarea\" name=\"profiltekst\">\"" . $row['profiltekst'] . "\</textarea>"; echo "<br><br>"; echo "<input class=\"inp2\"type=\"submit\" name=\"update\" value=\"update\">"; echo "</form>"; } ?> :D
21. december 2004 - 16:15
#45
Ok! Det ser nu også godt nok ud!
21. december 2004 - 16:15
#46
Og et svar! (langt om længe) :o)
21. december 2004 - 16:20
#47
Sådan! :D
21. december 2004 - 16:24
#48
Tak for point...
21. december 2004 - 16:36
#49
Mig der takker :) Havde ALDRIG fundet ud af det :D
Vi tilbyder markedets bedste kurser inden for webudvikling