|   | 
								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   
												 
					 | 
				 
			 
		 |