Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> MySql UPDATE
fpierf
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 25.03.2009

Ostrzeżenie: (0%)
-----


Witam !
Mam tabele w ktorej znajduja sie nastepujace pola: id_osoby,imie,nazwisko i kwota. Co jakis czas musze uaktualnic pozycje 'kwota'. Problem jest w tym, ze co jakis czas przybywa tez osob do bazy i wszystko musi sie dziac dynamicznie, tzn. zeby po dodaniu goscia do bazy, automatycznie pojawia sie on na formularzu dodania 'kwoty'. Zrobilem to w taki sposob:
Kod
<form method="post" action="index.php?id=form">
<?php
$query = "SELECT id_osoba, imie, nazwisko, kwota " .
           "FROM klienci";

$results = mysql_query($query, $link)
  or die(mysql_error());

while ($row = mysql_fetch_array($results)) {  
  extract($row);

echo $osoba;
echo "<input type=\"text\" name=\"$id_osoba\" size=\"3\" maxlength=\"3\">";
}
?>
</form>

Do tej pory jest wszystko ok. Problem pojawia sie na stronie form.php ktora u mnie wyglada tak
Kod
<?php
if($_POST['1'])
{
mysql_query("UPDATE klienci SET kwota = kwota+'".$_POST['1']."' WHERE id_osoba = 1");
}
if($_POST['2'])
{
mysql_query("UPDATE klienci SET kwota = kwota+'".$_POST['2']."' WHERE id_osoba = 2");
}
if($_POST['3'])
{
mysql_query("UPDATE klienci SET kwota = kwota+'".$_POST['3']."' WHERE id_osoba = 3");
}
?>

jak widac, w moim rozwiazaniu musze dodpisywac kolejne linijki kodu jak dojdzie jakas nowa osoba.
PYTANIE : Czy idzie to zrobic w jakis inny sposob, zeby nie trzeba bylo tego edytowac ciagle form.php po dodaniu osoby.
Z gory dziekuje za pomoc!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Rozdziel na kilka formularzy.
Go to the top of the page
+Quote Post
fpierf
post
Post #3





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 25.03.2009

Ostrzeżenie: (0%)
-----


Cytat(erix @ 1.06.2009, 22:11:56 ) *
Rozdziel na kilka formularzy.


nie bardzo wiem, jak by mi to mialo pomoc... chyba, ze czegos nie rozumiem... .
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




1 rekord = 1 formularz.

Wtedy możesz nazwać pola tak samo przekazując jedynie inny ID.
Go to the top of the page
+Quote Post
fpierf
post
Post #5





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 25.03.2009

Ostrzeżenie: (0%)
-----


Cytat(erix @ 2.06.2009, 17:17:47 ) *
1 rekord = 1 formularz.

Wtedy możesz nazwać pola tak samo przekazując jedynie inny ID.

To jest raczej niemozliwe. W takim przypadku musialbym zrobic 100 roznych formularzy jak w bazie bedzie 100 klientow. Chyba, ze nadal czegos nie rozumiem. Czy moglbys mi napisac jak by to mialo wygladac w formularzu i pliku odczytu?
Dzieki !
Go to the top of the page
+Quote Post
Roly
post
Post #6





Grupa: Zarejestrowani
Postów: 55
Pomógł: 7
Dołączył: 8.12.2003
Skąd: Andrychów

Ostrzeżenie: (0%)
-----


Poniższą odpowiedź traktuj raczej jako sposób na rozwiązanie oczywiście jeden z wielu nie koniecznie jest on najlepszy i na pewno nie jest bezpieczny.
  1. <?php
  2. foreach ($_POST AS $key => $value) {
  3.    mysql_query("UPDATE klienci SET kwota = kwota+'".$value."' WHERE id_osoba =".$key);
  4. }
  5. ?>
Go to the top of the page
+Quote Post
fpierf
post
Post #7





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 25.03.2009

Ostrzeżenie: (0%)
-----


Dokladnie o to mi chodzilo ! Nad zabezpieczeniem pomysle pozniej (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Dziekuje za pomoc.
Go to the top of the page
+Quote Post
erix
post
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Czy moglbys mi napisac jak by to mialo wygladac w formularzu i pliku odczytu?

Jeden wiersz = jeden formularz. Odczytujesz po prostu tymi samymi zmiennymi. Wygodniej, nie trzeba wszystkiego naraz wysyłać (ale jeśli musisz naraz, to cóż)...
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 20:38