Edycja rekordów w MySQL
Edycja rekordów w MySQL
Od tygodnia zacząłem bawić się z PHP. Robię swoją stronę, mam już panel do rejestracji, logowania itp. a chciałbym jeszcze zrobić stronę na której mógłbym edytować wcześniej zapisane rekordy podczas rejestracji w bazie danych np. mój nick, imię lub nazwisko.
Zrobiłem coś takiego sam jednak gdy zmieniałem nazwę swojego nick'u zmieniały się również wszystkie nazwy nicków innych użytkowników : /
Chciałbym żeby zmieniało nazwę nicku tylko tej osoby która jest właśnie zalogowana a nie również innych userów znajdujących się w bazie danych.
Nie wiem w ogóle jak coś takiego ma wyglądać. Dlatego czekam na jakieś wskazówki bądź przykłady takich skryptów : )
Pozdrawiam
Zrobiłem coś takiego sam jednak gdy zmieniałem nazwę swojego nick'u zmieniały się również wszystkie nazwy nicków innych użytkowników : /
Chciałbym żeby zmieniało nazwę nicku tylko tej osoby która jest właśnie zalogowana a nie również innych userów znajdujących się w bazie danych.
Nie wiem w ogóle jak coś takiego ma wyglądać. Dlatego czekam na jakieś wskazówki bądź przykłady takich skryptów : )
Pozdrawiam
Re: Edycja rekordów w MySQL
Pokaż fragment kodu SQL za pomocą którego zmieniłeś nick, bo prawdopodobnie nie dodałeś warunku, dla którego nicka ma być zmieniona wartość.
Re: Edycja rekordów w MySQL
Dokładnie miałeś racje na tym polegał błąd miałem złe zapytanie do bazy. Poradziłem sobie z nim sam co częściowo rozwiązało mój problem:
Tak wygląda poprawiony skrypt:
edit_user.html
edit_user.php
[php]
<?
if (!$edit_nick || !$old_nick)
{
print "Musisz wypełnić wszystkie pola";
exit;
}
@$db = mysql_pconnect("localhost", "root", "krasnal");
if (!$db)
{
print "Nie można nawiązać połączenia z bazą danych";
exit;
}
mysql_select_db("baza");
$query = "update uzytkownicy set user='$edit_nick' where user='$old_nick'";
$result = @mysql_query($query);
print "Twój nick $old_nick został zmieniony na $edit_nick !";
?>
[/php]
Jednak jak widzisz muszę podać w formularzu swój stary nick, a chciałbym zrobić tak żeby tę zmienną $old_nick wyciagało mi jakoś z tej sesji czyli z tego jako kto jestem zalogowany ;/
Wpadłem na pomysł aby zrobić to tak:
Do formularza w którym wpisuje dane do logowania dodałem kolejny plik który ma przetwarzać te dane czyli edit_user.php tak aby zdobyć zmienną $login którą potem wykorzystam w edit_user.php. Jednak to nie działa ;/
logowanie.html
Zmodyfikowany edit_user.php
[php]<?
if (!$edit_nick)
{
print "Musisz wypełnić wszystkie pola";
exit;
}
@$db = mysql_pconnect("localhost", "root", "krasnal");
if (!$db)
{
print "Nie można nawiązać połączenia z bazą danych";
exit;
}
mysql_select_db("baza");
$query = "update uzytkownicy set user='$edit_nick' where user='$login'";
$result = @mysql_query($query);
print "Twój nick $login został zmieniony na $edit_nick !";
?>
[/php]
Czy błąd jest w kodzie czy po prostu tak się nie da tego zrobić ?
Tak wygląda poprawiony skrypt:
edit_user.html
Kod: Zaznacz cały
<form action="edit_user.php" method="post">
Zmień swój nick na: <input type="text" name="edit_nick"><br>
Stary nick: <input type="text" name="old_nick"><br>
<input type="submit" value="Zmień Nick">
</form>[php]
<?
if (!$edit_nick || !$old_nick)
{
print "Musisz wypełnić wszystkie pola";
exit;
}
@$db = mysql_pconnect("localhost", "root", "krasnal");
if (!$db)
{
print "Nie można nawiązać połączenia z bazą danych";
exit;
}
mysql_select_db("baza");
$query = "update uzytkownicy set user='$edit_nick' where user='$old_nick'";
$result = @mysql_query($query);
print "Twój nick $old_nick został zmieniony na $edit_nick !";
?>
[/php]
Jednak jak widzisz muszę podać w formularzu swój stary nick, a chciałbym zrobić tak żeby tę zmienną $old_nick wyciagało mi jakoś z tej sesji czyli z tego jako kto jestem zalogowany ;/
Wpadłem na pomysł aby zrobić to tak:
Do formularza w którym wpisuje dane do logowania dodałem kolejny plik który ma przetwarzać te dane czyli edit_user.php tak aby zdobyć zmienną $login którą potem wykorzystam w edit_user.php. Jednak to nie działa ;/
logowanie.html
Kod: Zaznacz cały
<form method="post" action="sprawdz.php">
<form method="post" action="edit_user.php">
Login: <input type="text" name="login" />
Hasło: <input type="password" name="password" />
<input type="submit" value="zaloguj sie" />
</form>[php]<?
if (!$edit_nick)
{
print "Musisz wypełnić wszystkie pola";
exit;
}
@$db = mysql_pconnect("localhost", "root", "krasnal");
if (!$db)
{
print "Nie można nawiązać połączenia z bazą danych";
exit;
}
mysql_select_db("baza");
$query = "update uzytkownicy set user='$edit_nick' where user='$login'";
$result = @mysql_query($query);
print "Twój nick $login został zmieniony na $edit_nick !";
?>
[/php]
Czy błąd jest w kodzie czy po prostu tak się nie da tego zrobić ?
Re: Edycja rekordów w MySQL
Kod: Zaznacz cały
$query = "update uzytkownicy set user='".$edit_nick."' where user='".$login."'";Re: Edycja rekordów w MySQL
Niestety cięgle nie rozwiązuje to problemu : /
Problem tkwi w tym ze ta wartość "login" z formularza logowania nie dociera do pliku "edit_user.php" Błędu dopatrywał bym się właśnie w pliku logowanie.html
Czy aby na pewno można to tak zapisać ?
Problem tkwi w tym ze ta wartość "login" z formularza logowania nie dociera do pliku "edit_user.php" Błędu dopatrywał bym się właśnie w pliku logowanie.html
Kod: Zaznacz cały
<form method="post" action="sprawdz.php">
<form method="post" action="edit_user.php">Re: Edycja rekordów w MySQL
Ty tu w ogóle cuda potworzyłeś muszę Ci powiedzieć.
Skąd Ci się wzięły zmienne $edit_nick, $old_nick. Gdzie jest odczytanie wartości pól z formularza poprzez tabelę $_POST ? Sugerował bym również zainteresować się biblioteką mySQLi dla PHP ale to w ramach pracy dodatkowej w wolnej chwili. No i kto pozwala na zmianę nicka na portalu/forum ? Aktualnie połowa skryptu jest do przepisania. Wartości formularza masz dostępne w tabeli $_POST['index'] gdzie index to nazwa pola formularza.
Kod: Zaznacz cały
<?
if (!$edit_nick || !$old_nick)
{
print "Musisz wypełnić wszystkie pola";
exit;
}
@$db = mysql_pconnect("localhost", "root", "krasnal");
if (!$db)
{
print "Nie można nawiązać połączenia z bazą danych";
exit;
}
mysql_select_db("baza");
$query = "update uzytkownicy set user='$edit_nick' where user='$old_nick'";
$result = @mysql_query($query);
print "Twój nick $old_nick został zmieniony na $edit_nick !";
?>Re: Edycja rekordów w MySQL
To nie są żadne cuda : P
Zmienna $edit_nick i $old_nick nie wzięła się z kosmosu tylko z pierwszej wersji formularza w której musiałem wpisać nowy nick i stary (żeby wiedziało co na co zamienić)
Potem dopiero wpadłem na pomysł że te $old_nick można wyciągnąć z formularza do logowania : /
Jeśli chodzi o odczyt pól z formularza poprzez $_POST chodzi Ci np. o coś takiego
[php]<?php
$login = $_POST['login'];
$edit_nick = $_POST['edit_nick'];
?>[/php]
Kto pozwala na zmiane nicka ? Niektórzy pozwalają ja podałem tylko taki przykład żeby poznać zasade jak to się robi, aby móc to wykorzystać w innych sytuacjach.
Sorry że tak męcze, może i zadaję głupie pytania, ale każdy chyba miał takie początki : )
Zmienna $edit_nick i $old_nick nie wzięła się z kosmosu tylko z pierwszej wersji formularza w której musiałem wpisać nowy nick i stary (żeby wiedziało co na co zamienić)
Kod: Zaznacz cały
<form action="edit_user.php" method="post">
Zmień swój nick na: <input type="text" name="edit_nick"><br>
Stary nick: <input type="text" name="old_nick"><br>
<input type="submit" value="Zmień Nick">
</form>Jeśli chodzi o odczyt pól z formularza poprzez $_POST chodzi Ci np. o coś takiego
[php]<?php
$login = $_POST['login'];
$edit_nick = $_POST['edit_nick'];
?>[/php]
Kto pozwala na zmiane nicka ? Niektórzy pozwalają ja podałem tylko taki przykład żeby poznać zasade jak to się robi, aby móc to wykorzystać w innych sytuacjach.
Sorry że tak męcze, może i zadaję głupie pytania, ale każdy chyba miał takie początki : )
Re: Edycja rekordów w MySQL
To są cuda bo chyba register_globals masz na serwerze włączone i dlatego Ci to w ogóle mogło gdzieś chodzić. A przypisanie z $_POST wygląda tak jak napisałeś. Pamiętaj żeby jako index umieścić nazwę pół formularza w których jest treść. Zawsze jak czegoś nie wiesz to za pomocą echo czy tam print wyświetl sobie zapytanie całe które kierujesz do bazy i zobacz czy byków nie ma.
Re: Edycja rekordów w MySQL
OK dzięki za wszystkie porady i wskazówki.
Poradziłem sobie z tym wszystko działa tak jak powinno : )
Poradziłem sobie z tym wszystko działa tak jak powinno : )

