![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 12.07.2003 Skąd: Chełm Ostrzeżenie: (0%) ![]() ![]() |
Wyświetlam stare dane z bazy w odpowiednich polach formularza i po zmianie ich wartości w polach trzeba je zapisać do bazy. Kręcę się w koło i ciągle nie mogę tego zrobić. Pewnie to jest banalnie proste ale jak ktoś mógłby mnie naprowadzić byłbym wdzięczny.
<form action="popraw.php?co=$wiersz->id" method="get"> <input type="text" value="<?echo $wiersz->pole1?>" name="pole1" />tekst<br /> <input type="text" value="<?echo $wiersz->pole2?>" name="pole2" />liczba <input type="submit" value="popraw" /> </form> [php:1:2eaaaf9157]<?php $jaki = $_GET['co']; $popraw = "UPDATE `testowa` SET `pole1` = '$_GET['pole1']' 'pole2' = '$_GET['pole2']' WHERE `id` = '$jaki' LIMIT 1 ;"; ?>[/php:1:2eaaaf9157] |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 384 Pomógł: 0 Dołączył: 3.04.2003 Skąd: Chorzow Ostrzeżenie: (0%) ![]() ![]() |
Kod <form action="popraw.php" method="get">
<input type="hidden" name="co" value="<?echo $wiersz->co?>" /> <input type="text" value="<?echo $wiersz->pole1?>" name="pole1" />tekst<br /> <input type="text" value="<?echo $wiersz->pole2?>" name="pole2" />liczba <input type="submit" value="popraw" /> </form> [php:1:308020283f] $popraw = "UPDATE `testowa` SET `pole1` = ".$_GET['pole1'].", `pole2` = ".$_GET['pole2']." WHERE `id` = '$jaki' LIMIT 1 "; [/php:1:308020283f] |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 12.07.2003 Skąd: Chełm Ostrzeżenie: (0%) ![]() ![]() |
Czy istotnie ten kod powinien zamienić dane na nowe?
Też kombinowałem z polami ukrytymi, ale efekt jest podobny ? wyświetla się komunikat, że dane poprawnie zmienione ale nic nie zostaje zamienione. A przecież to taka podstawowa czynność. Ponadto w formularzu występują wszystkie typy pól, i też nie mogę poprawnie wyświetlić w formularzu starych opcji i zaznaczeń. Podaję jeszcze raz mój pierwotny kod. [php:1:a39a0d9227]<?php $pokaz = $_GET["co"]; $zapytanie = "SELECT * FROM `testowa` WHERE `id` = '$pokaz'"; $wynik = mysql_query($zapytanie); $ile = mysql_num_rows($wynik); for ($i=0; $i <$ile; $i++) { $wiersz = mysql_fetch_object($wynik); ?> <form action="popraw.php?co=$wiersz->id" method="get"> <input type="text" value="<?echo $wiersz->pole1?>" name="pole1" />tekst<br /> <input type="text" value="<?echo $wiersz->pole2?>" name="pole2" />liczba <input type="submit" value="popraw" /> </form> ?>[/php:1:a39a0d9227] [php:1:a39a0d9227]<?php $jaki = $_GET['co']; $popraw = "UPDATE `testowa` SET `pole1` = '$_GET['pole1']' 'pole2' = '$_GET['pole2']' WHERE `id` = '$jaki' LIMIT 1 ;"; $wynik_poprawy = mysql_query($popraw); if ($popraw) { echo mysql_affected_rows()." <b>Dane poprawnie zmienione w bazie</b><br /> <br /> "; echo "<a href="index.php">wróc</a>"; } else echo "Bł?d zapisu"; ?>[/php:1:a39a0d9227] Ps. I jak pętla -for- wyświetla dane w kilku miejscach na stronie korzystając z tego samego zbioru wyników to nie wyświetla dobrze wyników, gdzieś czytałem że trzeba "zresetować zbiór wyników" lub coś takiego. Ale nie mogę do dojść co to było. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 384 Pomógł: 0 Dołączył: 3.04.2003 Skąd: Chorzow Ostrzeżenie: (0%) ![]() ![]() |
1.
<form action="popraw.php?co=$wiersz->id" method="get"> - to jest blad. Nie mozna umieszczac w action wartosci zmiennych. Tam ma byc sam adres podstawowy strony i nic wiecej. Wszelkie wartosci musisz przekazywac polami typu hidden. 2. $popraw = "UPDATE `testowa` SET `p... - tu masz abosluitnie pomieszane " ' i ` ZApisz to zapytanie tak jak ci podalem. 3. if ($popraw) { - jest zawsze spelnione, tobie raczej chodzilo o if ($wynik_poprawny) { |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 12.07.2003 Skąd: Chełm Ostrzeżenie: (0%) ![]() ![]() |
No to wracamy do punktu wyjścia. Powtarzam, że twój kod już testowałem i nic. Fakt, popełniłem błąd przy sprawdzaniu warunku, ale to nie jest sedno sprawy. Tylko ,że chyba i Ty się pomyliłeś bo do czego ma się odwoływać zmienna "$jaki". Przeglądałem inne skrypty o podobnym działaniu i wedle logiki mój przyklad powinien działać. A może ma to związek z wersją bazy danych, ja mam obecnie MySql - 4.
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 384 Pomógł: 0 Dołączył: 3.04.2003 Skąd: Chorzow Ostrzeżenie: (0%) ![]() ![]() |
To znaczy po prostu tyle ze udalo Ci sie popelnic wiecej bledow w tak krotkim skrypcie niz ustawa przewiduje. Jest tego tyle ze nawet nie udalo mnie sie wszystkich wylapac od razu.
1. nie $_GET tylko $_POST lub jeszcze lepiej $_REQUEST 2. Zapytanie napisalem Ci dobrze. $jaki ustawiasz linijke wczesniej. |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 12.07.2003 Skąd: Chełm Ostrzeżenie: (0%) ![]() ![]() |
Dzięki "uboottd" jesteś genialny. Nigdy bym na to nie wpadł, że skrypt który nie działa zawiera błędy. "Więcej niż ustawa przewiduje". Nawet jeden przecinek rozwala cały skrypt.
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 76 Pomógł: 0 Dołączył: 17.06.2003 Skąd: Niemcy / Siemianowice Ostrzeżenie: (0%) ![]() ![]() |
niewiem po co Ci metoda GET daj ją na POST
może tak będzie ok? : [php:1:dea9885f8d]<?php $db = mysql_connect("host", "user", "pass") ; mysql_select_db("nazwa_tabeli", $db); $jaki = mysql_query("UPDATE `user` SET pole = '$pole1', pole2 = '$pole2' WHERE id = '$jaki' Limit 1"); $wynik_poprawy = mysql_query($popraw); if ($jaki) { echo "<b>Dane poprawnie zmienione w bazie</b><br><br>"; echo "<a href=index.php>wróc</a>"; } else { echo "Błąd zapisu"; } ?>[/php:1:dea9885f8d] Niewiem czy jest dobrze chodź wątpie ![]() jak by co wal na PW -------------------- pozdrawiam :)
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 384 Pomógł: 0 Dołączył: 3.04.2003 Skąd: Chorzow Ostrzeżenie: (0%) ![]() ![]() |
Jesli jest register_globals to na moje oko powinien dzialac (oczywiscie po zmienie w zapytaniu $jaki na $co - bo tak bylo w formularzu).
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 12.07.2003 Skąd: Chełm Ostrzeżenie: (0%) ![]() ![]() |
Bingo
A wystarczyło zmienić cudzysłowy w zapytaniu do bazy. I nie żadne GETY czy POSTY i to działa i to. Jedyny błąd to próba przekazania parametru przez submit (dzięki uboottd). [php:1:2f6c1d3f53]<?php $popraw = "UPDATE `testowa` SET `pole1` = '".$_GET['pole1']."' , `pole2` = '".$_GET['pole2']."' WHERE `id` = '".$_GET['co']."' LIMIT 1 "; ?>[/php:1:2f6c1d3f53] |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 8.07.2025 - 21:32 |