[PHP][MySQL] Błąd ze zmienną


(Marcin L339) #1

Witam!

Pisze sobie taki kod, który będzie pobierał do formularza wpisy z bazy danych, z poziomu przeglądarki będzie można je edytować, a na końcu zapisać zmiany.

Problem polega na tym, że wszystko się dobrze pobiera do formularza, tylko wyświetla się taki oto błąd (przez to chyba też edytowany wpis nie zapisuje się w bazie danych):

Notice: Undefined index: edytuj_imie in edit_user_skrypt.php on line 45


Notice: Undefined index: edytuj_nick in edit_user_skrypt.php on line 46


Notice: Undefined index: edytuj_email in edit_user_skrypt.php on line 47


Notice: Undefined index: edytuj_gg in edit_user_skrypt.php on line 48

Poniżej daje fragment kodu odpowiedzialny za tą funkcję.

else

(ra-v) #2
//Zapisywanie danych

            $EdytujImie = $_POST['edytuj_imie'];

            $EdytujNick = $_POST['edytuj_nick'];

            $EdytujEmail = $_POST['edytuj_email'];

            $EdytujGG = $_POST['edytuj_gg'];


            $Zapisz = mysql_query("UPDATE team SET imie='$EdytujImie' nick='$EdytujNick' email='$EdytujEmail' gg='$EdytujGG'")

To musisz przenieść gdzieś powyżej linii

$Polecenie = mysql_query("SELECT imie, nick, email, gg FROM team WHERE nick='$nick'");

Pamiętaj - najpierw zapisujemy wszystko z $_POSTa, potem wyświetlamy (SELECT pola FROM....), nigdy odwrotnie. A poza tym błąd mówi że nie ma zdefiniowanego indeksu edytuj_linie itp. Czyli trzeba by w tych 4 liniach analogicznie przerobić

$EdytujImie = isset($_POST['edytuj_imie']) ? $_POST['edytuj_imie'] : '';

(Drobok) #3

O ile dobrze rozumuję to nie brakuje ci tu where ?? Skąd on ma wiedzieć co ma zmienić ?

Ja bym do selecta dodał id, a do update, where id=$zmienna_z_selecta


(ra-v) #4

drobok , faktycznie, nie zauważyłem

$Zapisz = mysql_query("UPDATE team SET imie='$EdytujImie' nick='$EdytujNick' email='$EdytujEmail' gg='$EdytujGG'");

To zamieni wszystkie rekordy na to co wpisałeś. Musiał byś przerobić formularz wg schematu

echo "Imię: 
";[/code]


gdzie ___id____ to nr id z bazy.



Potem wpisz sobie

[code]print_r($_POST)

i zobacz co musisz pozmieniać żeby zapytanie weszło do bazy.


(Drobok) #5

Zakładając, że ma pole id wystarczy się nim posłużyć do zapytania. Ja bym raczej tego tak nie zostawiał, bo ktoś by se mógł zmieniać wszystko (strzelając id)

$Polecenie = mysql_query("SELECT id,imie, nick, email, gg FROM team WHERE nick='$nick'");// potem twój kod $Zapisz = mysql_query("UPDATE team SET imie='$EdytujImie' nick='$EdytujNick' email='$EdytujEmail' gg='$EdytujGG' WHERE 'id=$Edytuj['id']"); [/code]

(Marcin L339) #6

Hmm... Nie wiem czy dobrze zrozumiałem? Chodzi o coś takiego? (Niestety dopiero nabieram doświadczenia w PHP więc proszę o wyrozumiałość :slight_smile: ) Niestety tak jak przerobiłem poniżej nie działa...

http://www.wklej.org/hash/454d23e7173/


(Drobok) #7

NIE, masz zmienić tylko te 2 twoje linijki na te 2 moje. Względem twojego pierwszego kodu ;]


(Marcin L339) #8

Rozumiem, tylko ja zamienić te cudzysłowy, aby nie było błądu?

Próbowałem na takie sposoby:

$Zapisz = mysql_query("UPDATE team SET imie='$EdytujImie' nick='$EdytujNick' email='$EdytujEmail' gg='$EdytujGG' WHERE 'id=$Edytuj['id']'");[/code]

[code=php]$Zapisz = mysql_query("UPDATE team SET imie='$EdytujImie' nick='$EdytujNick' email='$EdytujEmail' gg='$EdytujGG' WHERE \'\id=$Edytuj['id']\'\");

$Zapisz = mysql_query('UPDATE team SET imie="$EdytujImie" nick="$EdytujNick" email="$EdytujEmail" gg="$EdytujGG' WHERE "id=$Edytuj['id']"');[/code]

Niestety żaden z tych sposobów nie działa.


(Drobok) #9

Trza było powiedzieć, że w moim kodzie jest błąd, wkradł się tam apostrof przed id, zamiast być po nim ;]

$Polecenie = mysql_query("SELECT id,imie, nick, email, gg FROM team WHERE nick='$nick'");// potem twój kod $Zapisz = mysql_query("UPDATE team SET imie='$EdytujImie' nick='$EdytujNick' email='$EdytujEmail' gg='$EdytujGG' WHERE id=\'$Edytuj['id']\'"); [/code]

(Marcin L339) #10

Nie wiem czemu mi nie działa, chwilowo nie miałem czasu na udoskonalanie kodu, ale teraz spróbowałem jakoś tak, lecz dalej nic nie działa, tzn. wszystkie pola z bazy pobierają się i wyświetlają w polach formularza, lecz niestety po wciśnięciu przycisku zmiany się nie zapisują.

http://www.wklej.org/hash/87d66765bfc/