![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 24.04.2017 Ostrzeżenie: (0%) ![]() ![]() |
Witam, jestem w trakcie konstruowania podwalin strony dzięki której będę mógł wł/wył światło. Wymyśliłem sobie, że poprzez formularz będę sprawdzał stan wł lub wył. Stworzyłem w phpmyadmin odpowiednią bazę która zawiera następujące tabele: id - primary key, timeline - timestamp, Pin_1, Pin_2, Pin_3, Pin_4 - varchar. Stworzyłem pilik connect.php
Kod <?php $user = "root"; $pass = ""; $host = "localhost"; $connect = mysql_connect($host,$user,$pass); $selectdb = mysql_select_db('homelight', $connect); if($connect) { echo "Połączono z bazą Home Light"; } else{ echo "Brak połączenia z bazą Home Light"; } ?> plik rewrite.php Kod <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Przetowrzenie żądania</title> </head> <body> <h1>Oświetlenie</h1> <h2>Włączam oświetlenie na pinach:</h2> <?php include("connect.php"); $Pin_1 = $_POST['Pin_1']; $Pin_2 = $_POST['Pin_2']; $Pin_3 = $_POST['Pin_3']; $Pin_4 = $_POST['Pin_4']; $control = 1; $on = "On"; $off = "Off"; if($control = $Pin_1){ $Pin_1 = $on; echo 'Pin 1: ' .$Pin_1. '<br />'; } else{ $Pin_1 = $off; echo 'Pin 1: ' .$Pin_1. '<br />'; } if($control = $Pin_2){ $Pin_2 = $on; echo 'Pin 2: ' .$Pin_2. '<br />'; } else{ $Pin_2 = $off; echo 'Pin 2: ' .$Pin_2. '<br />'; } if($control = $Pin_3){ $Pin_3 = $on; echo 'Pin 3: ' .$Pin_3. '<br />'; } else{ $Pin_3 = $off; echo 'Pin 3: ' .$Pin_3. '<br />'; } if($control = $Pin_4){ $Pin_4 = $on; echo 'Pin 4: ' .$Pin_4. '<br />'; } else{ $Pin_4 = $off; echo 'Pin 4: ' .$Pin_4. '<br />'; } $sql_insert = "insert into tableoflight (Pin_1,Pin_2,Pin_3,Pin_4) values ('$Pin_1','$Pin_2','$Pin_3','$Pin_4')"; mysql_query($sql_insert); if($sql_insert) { echo "Rewrite is sucesfull"; }else{ echo "Rewrite is not connected. Error"; } ?> <a href="index.php">wstecz</a> </body> </html> no i plik index.php który będę przerabiał gdyż łączę się w nim z bazą 4 razy co jest zupełnie bez sensu Kod <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Home Light</title> </head> <body> <form action="rewrite.php" method=post> <table border="1" cellspacing="2" cellpadding="5"> <tr bgcolor="red"> <td width="150">Światło:</td> <td width="15">Przekaźnik:</td> <td width="35">Status:</td> </tr> <tr> <td>Pin 1</td> <td align="center"><input type="radio" name="Pin_1" size="3"></td> <?php include("connect.php"); //SELECT MAX(id) FROM tabelaoflight || select * from tableoflight ||mysqli_fetch_assoc $resultad = mysql_query("select * from tableoflight"); while($linha = mysql_fetch_array($resultad)) { echo '<td>'.$linha["Pin_1"]. '</td>'; } ?> </tr> <tr> <td>Pin 2</td> <td align="center"><input type="radio" name="Pin_2" size="3"></td> <?php include("connect.php"); //SELECT MAX(id) FROM tabelaoflight || select * from tableoflight $resultad = mysql_query("select * from tableoflight"); while($linha = mysql_fetch_array($resultad)) { echo '<td>'.$linha["Pin_2"]. '</td>'; } ?> </tr> <tr> <td>Pin 3</td> <td align="center"><input type="radio" name="Pin_3" size="3"></td> <?php include("connect.php"); //SELECT MAX(id) FROM tabelaoflight || select * from tableoflight $resultad = mysql_query("select * from tableoflight"); while($linha = mysql_fetch_array($resultad)) { echo '<td>'.$linha["Pin_3"]. '</td>'; } ?> </tr> <tr> <td>Pin 4</td> <td align="center"><input type="radio" name="Pin_4" size="3"></td> <?php include("connect.php"); //SELECT MAX(id) FROM tabelaoflight || select * from tableoflight $resultad = mysql_query("select * from tableoflight"); while($linha = mysql_fetch_array($resultad)) { echo '<td>'.$linha["Pin_4"]. '</td>'; } ?> </tr> <tr> <td colspan="2" align="center"><input type="submit" value="Włącz"></td> </tr> </table> </form> </body> </html> Idea: klikam w formularzu, który pin mam zamiar włączyć a to przekazuje dane do BD która zapisuje aktualny stan i po kliknięciu wstecz chce uzyskać status pinu. Wymyśliłem, aby wg. id wyświetlić stan, tylko nie wiem jak wybrać jeden najaktualniejszy rekord z BD? Czy ktoś mógłby mi podpowiedzieć jak to ogarnąć? Próbowałem poprzez zapytanie: select max(id) from tableoflight jednak zwraca mi błąd. Zaczynam się bawić PHP i MYSQL w związku z powyższym proszę o wyrozumiałaś. Pozdrawiam! |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
1. BD nie jest Ci tu praktycznie potrzebna, wystarczy plik z aktualnymi wartościami.
2. Skoro uparłeś się na BD to po co Ci kolejne rekordy ze stanami pinów? 3. Jeśli już bym się bawił w piny to wszystkie piny trzymałbym w 1 polu jako wartość varchar(4) np. 0010, 1011 itd. Wtedy masz informację o wszystkich pinach w 1 polu, a dodanie ew. kolejnego to żaden problem, po prostu dodajesz na koniec kolejną wartość 0/1 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 24.04.2017 Ostrzeżenie: (0%) ![]() ![]() |
Wiem, że można to zrobić na pliku jednak tak jak wspomniałem na razie chciałbym to zrobić na BD i zobaczyć jak to się będzie sprawowało. Pyton_000 nadaje w BD wartość varchar 4 i jak wskazać odpowiednie miejsce w rekordzie gdzie dane wysłane z formularza będą się zapisywały według Twojego schemat (np. 0011)? Czy w DB istnieje możliwość skonstruowania tak rekordu aby nie tworzył się nowy wpis tylko nadpisywał by on wartości w pierwszym?
Dlaczego po wpisaniu w konsoli phpmyadmin polecenia select min(pin_1) from tabeloflight zapytanie działa prawidłowo natomiast po przeniesieniu do pliku php zwraca błąd Notice: Undefined index: Pin_1 in C:\xampp\htdocs\HomeLight\mysql.php on line 9 Ten post edytował sereknr1 25.04.2017, 07:31:08 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Na przyszlosc pokazuj kod php jesli masz z nim problemy. Masz szczescie ze chodzile na podyplomowe "Wrozbita - poczatek" to moge poprawic ci twoj kod
nie: select min(pin_1) from tabeloflight a: select min(pin_1) as Pin_1 from tabeloflight -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 24.04.2017 Ostrzeżenie: (0%) ![]() ![]() |
Kod <?php include("connect.php"); //SELECT MAX(id) FROM tabelaoflight || select * from tableoflight ||mysqli_fetch_assoc $resultad = mysql_query("select min(pin_1) as Pin_1 from tabeloflight ") or die ("Błędna komenda"); while($linha = mysql_fetch_assoc($resultad)) { echo ' '.$linha["Pin_1"].', '; } ?> teraz dla odmiany błędna komenda |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
To moze dla odmiany wyswietlaj bledy bazy danych zamiast nic nie mowiacych komunikatow?
nie: or die ("Błędna komenda"); a:or die (mysql_error()); ps: przenosze -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 24.04.2017 Ostrzeżenie: (0%) ![]() ![]() |
O widzisz i znów się czegoś nauczyłem. Wielkie dzięki. Błąd "Table 'homelight.tabeloflight' doesn't exist"
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Komunikat bledu masz teraz wyrazny. Czegos z niego nie rozumiesz?
Jesli nadal nie rozumiesz to znajdz 10 roznic: tabeloflight tableoflight tabelaoflight -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 24.04.2017 Ostrzeżenie: (0%) ![]() ![]() |
Heh wielkie dzięki kolego, nie wiem jak to się stało ale może po prostu za długo siedzie już dziś i nie dostrzegam różnic. Chyba sobie na dziś odpuszczę. Mógłbyś mi wytłumaczyć w jaki sposób trzymać w 1 polu wartości przesłane z formularza zapisane w wartość varchar(4) np. 0010, 1011 itd i w jaki sposób odwołać się z powrotem do nich w php? W jaki sposób mogę dodać kolejne zmienne do zapytania select min(Pin_1) as Pin_1 from tableoflight?
Ten post edytował sereknr1 25.04.2017, 15:14:35 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Jak juz wspomniano nie ma sensu tworzyc tabeli dla jednego rekordu z jednym polem. Zapisz to poprostu w pliku i po sprawie
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 24.04.2017 Ostrzeżenie: (0%) ![]() ![]() |
No może faktycznie to będzie lepszy pomysł. A tak już dla mojej wiedzy w jaki sposób mogę dodać kolejne zmienne do zapytania select min(Pin_1) as Pin_1 from tableoflight?
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Jakie kolejne zmienne? O przecinkach nie slyszal? Tak, tak w zapytaniach mozna uzywac przecinkow
select pole1, pole2, pole3 from tabela. Ale nie wiem czy o to ci chodzilo, bo to sa pola a nie zmienne ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 24.04.2017 Ostrzeżenie: (0%) ![]() ![]() |
Kod <?php include("connect.php"); $resultad = mysql_query("select min(Pin_1,Pin_2) as Pin_1,Pin_2 from tableoflight") or die (mysql_error()); while($linha = mysql_fetch_assoc($resultad)) { echo ' '.$linha["Pin_1,Pin_2"].', '; } ?> W ten sposób chyba nie bo wywala taki błąd: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'Pin_2) as Pin_1,Pin_2 from tableoflight' at line 1 |
|
|
![]()
Post
#14
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Moze jednak wpierw jakies podstawy z mysql, potem branie sie za to?
select min(Pin_1) as Pin_1,min(Pin_2) as Pin_2 from tableoflight Forum naprawde nie sluzy do wyjasniania tak prostych kwestii -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 24.04.2017 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki kolego za pomoc, powiem Ci tak przeglądałem google od prawej do lewej od góry do dołu wszędzie napotykałem się na składnię typu: select max/min(costam) from xxx, wciąż wywalało błąd nie wiem czy to zapytanie jest poprawne czy po prostu kiedyś było poprawne ale w nowym phpmyadmin jest już ono przestarzałe. Jeszcze raz wielkie dzięki za pomoc!
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Poprawną składnię znajdziesz zawsze w dokumentacji https://dev.mysql.com/doc/refman/5.7/en/select.html
-------------------- |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 279 Pomógł: 42 Dołączył: 10.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
@sereknr1
Ewentualnie korzystaj z klienta SQL, jeżeli masz licencję to polecam PHPStorma jeżeli szukasz freeware to np HeidiSQL, jest tam konsola i będziesz widział co jest nie tak. Ten post edytował Puszy 26.04.2017, 12:29:07 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 14:13 |