Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mySQL] wywołanie rekordu w formularzu do edycji
Forum PHP.pl > Forum > PHP
gawar
Witam mam pewien problem, mam utworzonych kilka tabel w bazie danych i chciałbym wyciągnąć z jednej z tabel rekord w formie daty do formularza edycji. Moje zapytanie wygląda tak:
  1. SELECT MAX(odnowienie) , id_miejsce
  2. FROM t_odnowienie
  3. WHERE id_miejsce = 'S01-R01-M02'
  4. GROUP BY id_miejsce

jeżeli chodzi o to zapytanie SQL to wynikiem jest "najmłodsza" data dla danego miejsca. Sprawdzałem w phpMyAdmin i wszytko działa tak jak tego oczekiwałem,
np mam wprowadzonych kilka dat (2010-12-10,2005-05-05,2015-12-20)dla id_miejsce = 'S01-R01-M02', po wykonaniu zapytania wyświetla mi się data "odnowienie" = 2015-12-20. i o to chodzi.

Problem pojawia się gdy chcę tą właśnie datę wczytać do formularza edycji, standardowo dane wczytuję taką metodą: (wycinek kodu)
  1. $wynik = mysql_query("SELECT MAX(odnowienie) , id_miejsce
  2. FROM t_odnowienie
  3. WHERE id_miejsce = 'S01-R01-M02'
  4. GROUP BY id_miejsce")
  5. if(mysql_num_rows($wynik) > 0) {
  6.  
  7. $r = mysql_fetch_assoc($wynik);
  8.  
  9. echo '<form action=index.php?go2=edit_all.php" method="post" >
  10. <table border="1">
  11. <tr>
  12. <td>Odnowienie do</td>
  13. <td><input type="text" name="odnowienie" id="odnowienie" value="'.$r['odnowienie'].'"></td>
  14. </tr>
  15. </table></form>';
  16. }
  17.  

i tu pojawia się problem:( bo pole jest po wykonaniu tego skryptu puste, a gdy zapytanie wygląda tak:
  1. SELECT odnowienie, id_miejsce FROM t_odnowienie WHERE id_miejsce ='S01-R01-M02'

to wtedy w formularzu edycji wczytana zostaje pierwsza z wprowadzonych dat czyli np 2010-12-10.
Dodam jeszcze że każde dodanie "odnowienia" dla jakiegoś "id_miejsca" wiąże się z nowym rekordem w tabeli i kolejnym numerem Autoincrement "id_odowienie".
Mam nadzieje że zbytnio nie zakręciłem i znajdzie się osoba która mi w tym pomoże:) z góry dziękuje!
mmica
Hey ;]

Moim zdaniem problem tkwi w tym, że Twoje zapytanie wygląda tak:
  1. SELECT MAX(odnowienie) , id_miejsce FROM t_odnowienie WHERE id_miejsce = 'S01-R01-M02' GROUP BY id_miejsce
i na wyjściu masz kolumny: "MAX(odnowienie)" oraz "id_miejsce", a gdy wybierasz dane z bazy odwołujesz się do nieistniejącej kolumny "odnowienie". Użyj słówka AS aby określić nazwę kolumny jako "odnowienie". Twoje zapytanie powinno wyglądać tak:
  1. SELECT MAX(odnowienie) AS odnowienie, id_miejsce FROM t_odnowienie WHERE id_miejsce = 'S01-R01-M02' GROUP BY id_miejsce

Pozdrawiam,
mmica
gawar
dziękuje! pomogło
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.