|
Wieluń - forum, informacje, ogłoszenia
|
|
Praca / Edukacja - [php + mysql] to ci dopiero kłopocik
rafalekjan - 2010-03-17, 18:05 Temat postu: [php + mysql] to ci dopiero kłopocik No to tak.. Otrzymuje pomiary z czujników przekazywane do bazy danych.
Mam napisać stronkę dla użytkownika, który może przeglądać rezultaty pomiarów "od kiedyś"-"do kiedyś".
W pierwszym kodzie mam pobrane możliwe daty z bazy. Wybieramy sobie początek i koniec czasu pomiarów:
Kod: |
while ($data_tab2=mysql_fetch_array($data_sort2)){
$cid=$data_tab2['id_hub'];
$cdata=htmlspecialchars($data_tab2['time']);
echo "<option value='$cid'>$cdata</option>\n";
} |
Ok, a teraz mamy przekierowanie do strony, która wyświetla nam wyniki. No i niestety nie działają mi ograniczenia, nawet dla opcji bez ograniczeń: t>0
Kod: |
$where=" WHERE id_hub>'$cid'";
$pomiarki=@mysql_query("SELECT time, msrt FROM testowa ".$where);
while ($pomiary=mysql_fetch_array($pomiarki)){
echo "<tr valign='top'>\n";
$wysw_pomiar=htmlspecialchars($pomiary['msrt']);
echo "<td>$wysw_pomiar</td>\n";
echo "<tr>\n";
} |
Jeśli ma ktoś pomysł to chętnie wysłucham.
Aha, no i jeszcze wygląd bazy:
d@vid - 2010-03-17, 19:27
ograniczenie rozumiem że masz na myśli id_hub>'$cid'?
A pomiń ten warunek wyświetl bez warunku potem się nad nim pomyśli.
mqs - 2010-03-17, 19:30
$where = " WHERE id_hub>".$cid;
d@vid - 2010-03-17, 19:31
A chwila moment to zapytanie w ogóle jest dobrze nie masz cudzysłowia zamkniętego. Jeśli chciałbyś umieścić cudzysłów w zmiennej $where musisz użyć slash \" albo zamknąć zapytanie po where.
Najpierw zmień na:
$pomiarki=@mysql_query("SELECT time, msrt FROM testowa ");
rafalekjan - 2010-03-17, 19:42
Wyrzucenie wszystkich zmiennych działa.
Przedtem w warunku było:
$where=" WHERE time>'$cid'";
$pomiarki=@mysql_query("SELECT time, msrt FROM testowa ".$where);
I tu był błąd. Bo wartość odczytywana to było id pomiaru, a nie jego czas. Więc kod, który tam jest wklejony, jest poprawny.
Teraz muszę wymyślić jak to zrobić, żeby pokazywał mi się kalendarz i jak kliknę na jakiś dzień to będzie moje ograniczenie
d@vid - 2010-03-17, 20:08
No dobrze ale to where przecież masz poza zapytaniem:
$pomiarki=@mysql_query("SELECT time, msrt FROM testowa ".$where);
a nie np:
mysql_query("SELECT time, msrt FROM testowa WHERE `id`='$id'");
Albo już mi się myli bo ja nigdy nie operowałem na zmiennych w warunku WHERE, zawsze wstawiłem zmienną bezpośrednio WHERE `pole`='$zmienna'
rafalekjan - 2010-03-17, 20:24
d@vid napisał/a: | $pomiarki=@mysql_query("SELECT time, msrt FROM testowa ".$where); |
Adres do zmiennej możesz umieścić w dwa sposoby, mój i Twój. Oba są poprawne, a dla mnie mój bardziej czytelny
d@vid - 2010-03-17, 20:31
A no rzeczywiście, sory za zamieszanie nigdy nie robiłem tym sposobem. To teraz w zasadzie już nie wiem co chcesz osiągnąć bo warunek jest poprawny. A co przechowuje zmienna $cid i pola time? Jaki typ w bazie? Tak we fragmencie będzie w ogóle ciężko pomóc jak się nie ma całego kodu i bazy, ale być może jakaś niezgodność typów między zmienną $cid a typem pola w bazie.
Ogólnie z datami jest problem zobacz jaki ja musiałem niedawno myk robić żeby osiągnąć to co chciałem:
mysql_query("INSERT INTO `klienci` (`login`, `haslo`, `info`, `adres`, `wygasnie`, `dodany`) VALUES ('$login', '$haslo', '$info', '$adres', DATE_ADD(NOW(),INTERVAL ". (int)$wygasnie ." DAY), NOW())"
i
$sql2=mysql_query("SELECT `wygasnie` FROM `klienci` WHERE `id`='$id'");
$ile=mysql_fetch_row($sql2);
$sql3=mysql_query("UPDATE `klienci` SET `wygasnie`=DATE_ADD('".$ile[0]."',INTERVAL 30 DAY) WHERE `id`='$id'");
i oczywiście na polu typu DATE.
rafalekjan - 2010-03-17, 20:51
http://156.17.228.79/ogranicz.php
Zobacz Lata, aż miło. Z jednym wyjątkiem. Ustaw datę tylko na ograniczeniu 1...
[ Dodano: 2010-03-17, 21:00 ]
I chciałbym jeszcze, żeby daty w tym rozwijanym wyborze były ustawione wg kolejności dat.. Jakiś pomysł?:>
d@vid - 2010-03-17, 21:13
Tak, dodaj w zapytaniu: ORDER by`nazwa_pola` [ASC | DESC]
Nie widzę w tym kodzie co napisałeś tego zapytania co wyświetla daty więc podam Ci przykład ze swojego:
mysql_query("SELECT `login`, `haslo`, `adres`, `wygasnie`, `id` FROM `klienci` ORDER by `wygasnie` ")
i ASC jest deafult (rosnąco), niekonieczne do wpisania
rafalekjan - 2010-03-17, 21:53
Ok, działa. Tylko nadal jest jakiś problem z tymi ograniczeniami. Pobaw się troszkę, to zobaczysz o co mi chodzi...
d@vid - 2010-03-17, 23:01
Rafał tylko ja tak w zasadzie nie wiem co Ty chcesz konkretnie osiągnąć?
Wybieramy datę od do i potem z tego zakresu mają się wyświetlić pola z msrt?
A tak w ogóle to wy to macie jakieś obowiązkowe na studiach czy tak to robisz? Bo powiem Ci szczerze że są to dość prymitywne skrypty, na początek nauki w technikum informatycznym...
Ale pewnie zależy od kierunku studiów
rafalekjan - 2010-03-17, 23:47
czujniki <=> matryca avr <=> modbus <=> RS232 <=> C++ <=> mysql <=> C++ <=> mysql <=> php
To tak w skrócie
d@vid - 2010-03-17, 23:48
Tak w skrócie jakie zadanie ma skrypt o który pytasz a nie skąd dane w bazie...
rafalekjan - 2010-03-17, 23:53
Ogólnie ma być to projekt inżynierski na zastosowanie złożonych systemów programowania [;
Podstawą jest php, który ma wszystkim sterować, więc jest najważniejszy, a tym zajmuje się ja reszta przekazuje sobie tylko impulsy, wartości pomiarowe lub rozkazy. Nigdy wcześniej nie miałem do czynienia z php czy mysql, więc uczę się od podstaw.
[ Dodano: 2010-03-17, 23:55 ]
Skrypt ma wyselekcjonować odpowiednie pomiary wykonane wcześniej przez czujniki i przefiltrowane przez program w C.
Czyli wybór czujników, częstotliwość pomiarowa, wykaz pomiarów, aproksymacja wyników.
d@vid - 2010-03-17, 23:58
Dobra nie dogadamy się Podałeś skrypt z datami z którymi coś chcesz zrobić a gadasz o innej bajce Także jak będziesz mieć jakiś konkretnie pytanie to pytaj bo w takim razie problem z datami uważam za zamknięty.
rafalekjan - 2010-03-18, 00:01
Od strony użytkownika skrypt ma służyć jak przeglądarka pogody o, najlepsze porównanie
A problem nie jest rozwiązany, bo nadal mam błędy w odgraniczeniach...
[ Dodano: 2010-03-18, 00:02 ]
Ale dzisiaj już sobie to daruję, bo jutro Cisco Networking Academy semestr II
|
|