Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z updatem wybranych rekordów
fafrys
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 16.05.2006

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


Otóż moj problem polega na tym, że wyświetlam sobie w tabeli rodzaje i dla kazdego rodzaju cene minimalna i cene maxymalna oraz link dla kazdego rodzaju aby kazdy z osobna aktualizowac!! Problem polega jednak na tym ze nie bardzo chce mi to niestety dzialac i nie bardzo wiem jak sobie z tym poradzic!! Podkresle ze jezeli zastosowalbym przycisk submit to ni ebyloby problemu z updatem wszystkich rekordow naraz ale jak mowie ja chcialbym update'ować tylko te wybrane!! Bez uzycia submita metoda POST raczej odpada i pozostaje moto da GET :/ Oto fragment mojego kodu gdzie wyswietlam tabele i pobieram dane z bazy danych:

Wpierw dolacze moje zapytanie i pobranie danych z bazy:

Kod
$query="SELECT rodzaje.id_r, nazwa_r, cena_min, cena_max FROM rodzaje, koncerny, stacje, stacje_rodzaj WHERE koncerny.id_k=stacje.id_k AND stacje.id_s=stacje_rodzaj.id_s AND stacje_rodzaj.id_r=rodzaje.id_r GROUP BY nazwa_r ORDER BY nazwa_r LIMIT $start, $wyswietl";
      $result=@mysql_query($query);


echo'<form action="granica.php" method="get">';
        //Naglowek tabeli
        echo '<table align="center" cellspacing="2" cellpadding="2">
        <tr><td align="left"><b>Rodzaj</b></td><td align="center"><b>cena min</b></td><td align="center"><b>cena max</b></td><td align="center"><b>Aktualizuj cene</b></td></tr>';
        
        //Pobieranie i wyswietlenie wszystkich rekordow
        $kolor='#eeeeee'; //Okreslenie koloru tła
        
        while($row=mysql_fetch_array($result, MYSQL_NUM))
        {
          
          
          
          $kolor=($kolor=='#eeeeee' ? '#ffffff' : '#eeeeee'); //Ustawienie koloru tla dl aposzczegolnych wierszy
          echo '<tr bgcolor="',$kolor, '"><td align="left">', ($row[1]), '</td><td align="center"><input type="text" name="cena_min" size="2" maxlength="4" value='.$row[2].'></td><td align="center"><input type="text" name="cena_max" size="2" maxlength="4" value='.($row[3]).'></td><td align="center"><a href=granica.php?akcja=aktualizuj&id=',$row[0],'&rodzaj=',$row[1],'>Aktualizuj</a></td></tr>';
        
        }
        echo '</form>';


Nastepnie na poczatku skryptu sobie sprawdzam:

if((isset($_GET['akcja']))&&(($_GET['akcja']) == 'aktualizuj'))
        {
        $query="UPDATE rodzaje SET cena_min={$_GET['cena_min']} AND cena_max={$_GET['cena_max']} WHERE rodzaje.id_r={$_GET['id']}";
        $results=mysql_query($query);


Niesstety to nie dziala i nie wiem jak rozwiazac problem!! Bardzo Prosze o pomoc!!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
misiek172
post
Post #2





Grupa: Zarejestrowani
Postów: 656
Pomógł: 3
Dołączył: 26.10.2005
Skąd: Częstochowa

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


z chęcią bym ci pomógł ale wyjaśnij precyzyjniej i zwięźlej co chcesz zrobić (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował misiek172 31.05.2006, 14:26:47
Go to the top of the page
+Quote Post
fafrys
post
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 16.05.2006

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


Otóż w bazie danych dla kazdego nazwy rodzaju paliwa mam dwie kolumny gdzie mam ustalic cene minimalna i cene maxymalna jaki dany rodzaj moze cene uzyskac!! Wyciagam sobie te dane z bazy danych i wyswietlam w tabeli po 10 rekordow(rodzajow) na strone. Dla ceny minimalnej i maxymalnej tworze inputy i wczytuje auktualna cene minimalna dla jednego inputa i dla drugiego maxymalna i tak dla kazdego rodzaju paliwa. Rowniez dla kazdego rodzaju paliwa wyswietlam link "zaktualizuj" gdzie chialbym w linku przekazac te zmienne z cena minimalna i maxymalna, ktore zczytalem z bazy i zmienilem. Ale niestety ta aktualizacja mi nie dziala ;/ zauwazylem jeszcze jeden blad ale i z tym bledem mi nie dziala :/
  1. <?php
  2. echo '<tr bgcolor="',$kolor, '"><td align="left">', ($row[1]), '</td><td align="center"><input type="text" name="cena_min" size="2" maxlength="4" value='.$row[2].'></td><td align="center"><input type="text" name="cena_max" size="2" maxlength="4" value='.($row[3]).'></td><td align="center"><a href=granica.php?akcja=aktualizuj&id=',$row[0],'&rodzaj=',$row[1],'$cena_min&$cena_max'>Aktualizuj</a></td></tr>';
  3. ?>


Problem tkwi na pewno w przekazywanu zmiennych przez link!! Wiem ze musze przekazac juz zmieniona wartosc z inputa dla ceny_min i ceny_max ale nie wiem jak to zrobic??

Ten post edytował fafrys 31.05.2006, 14:38:26
Go to the top of the page
+Quote Post
KG-
post
Post #4





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 30.05.2006

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


Do każdego pola tekstowego i przycisku dołączasz id danego paliwa np
  1. <?php
  2. echo '<input type=text name="cena_min['.$id'.]">';
  3. ?>

gdzie $id jest numerem id pobranym z bazy, potem robisz foreach dla otrzymanej tabeli $_POST['cena_min'] gdzie kluczami będą właśnie numery id a wartościami - wpisana w to pole tekstowe liczba.

Ten post edytował KG- 31.05.2006, 14:44:31
Go to the top of the page
+Quote Post
fafrys
post
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 16.05.2006

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


chodzi mi bardziej o to jak przekazac juz zmieniona wartość w inpucie poprzez link!!
Go to the top of the page
+Quote Post
KG-
post
Post #6





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 30.05.2006

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


Jeśli dobrze zrozumiałem (i jeśli Ty sam wiesz co chcesz zrobić) to masz 2 rozwiązania:
1) generować link dynamicznie po kliknięciu na przycisk i ładować stronę o tym linku - możesz to zrobić w javascript
2) wysyłać formularz poprzez GET i odczytywać jego parametry ze zmiennej $_GET

Tak czy inaczej musisz w jakiś sposób ponumerować pola które wysyłasz (np po id), bo niby skąd skrypt który będzie miał wiedzieć o które z 10 pól 'cena_min' Ci chodziło?
Go to the top of the page
+Quote Post
fafrys
post
Post #7





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 16.05.2006

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


I tak teraz zrobilem

  1. <?php
  2. echo '<tr bgcolor="',$kolor, '"><td align="left">', ($row[1]), '</td><td align="center"><input type="text" name="cena_min['.$row[0].']" size="2" maxlength="4" value='.$row[2].'>%</td><td align="center"><input type="text" name="cena_max['.$row[0].']" size="2" maxlength="4" value='.$row[3].'>%</td></tr>';
  3. ?>


I na poczatku

  1. <?php
  2. if(isset($_POST['submit']))
  3. {
  4. foreach($_POST['cena_min'] as $id_cmin => $wartosc_cmin)
  5. {
  6.  
  7.  
  8.  
  9.  
  10. $query="UPDATE rodzaje SET cena_min=$wartosc_cmin WHERE rodzaje.id_r=$id_cmin";
  11. $results=mysql_query($query);
  12.  
  13. }
  14. }
  15. ?>


i dla ceny_min sie da zrobic ale jak zrobic rownoczesnie dla ceny min i max!!??(IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif)

Ten post edytował fafrys 1.06.2006, 00:11:26
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: 25.08.2025 - 16:25