Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z updatem wybranych rekordów
Forum PHP.pl > Forum > PHP
fafrys
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!!
misiek172
z chęcią bym ci pomógł ale wyjaśnij precyzyjniej i zwięźlej co chcesz zrobić winksmiley.jpg
fafrys
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??
KG-
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.
fafrys
chodzi mi bardziej o to jak przekazac juz zmieniona wartość w inpucie poprzez link!!
KG-
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?
fafrys
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!!??exclamation.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.