Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z aktualizacją danych w bazie. Ciąg dalszy.
Józek
post 12.07.2003, 21:37:04
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]
Go to the top of the page
+Quote Post
uboottd
post 12.07.2003, 22:17:35
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]
Go to the top of the page
+Quote Post
Józek
post 13.07.2003, 12:02:30
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.
Go to the top of the page
+Quote Post
uboottd
post 13.07.2003, 13:00:20
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) {
Go to the top of the page
+Quote Post
Józek
post 13.07.2003, 16:33:21
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.
Go to the top of the page
+Quote Post
uboottd
post 13.07.2003, 17:11:11
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.
Go to the top of the page
+Quote Post
Józek
post 13.07.2003, 20:43:30
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.
Go to the top of the page
+Quote Post
members_of_mayda...
post 13.07.2003, 22:34:48
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 smile.gif nie testowałęm tego. Po zatym jak na zwykłą aktualizacje tabeli b skąplikowany ten Twój sktypt zrąbił bym go inaczej

jak by co wal na PW


--------------------
pozdrawiam :)
Go to the top of the page
+Quote Post
uboottd
post 14.07.2003, 06:47:33
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).
Go to the top of the page
+Quote Post
Józek
post 14.07.2003, 09:04:24
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]
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 8.07.2025 - 21:32