Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Python+baza mysql
Forum PHP.pl > Forum > Bazy danych > MySQL
blandzi
Zaczne od tego ze posiada baze mysql z dwoma tabelami uczniowie i frekwenca_dzien. Napisalem skrypt ktory pobiera klucz z czytnika rfid a nastepnie ma sprawdzic czy taki klucz istnieje w tabeli uczniowie pod nazwa "uczen_id". Jezeli klucz taki istnieje skrypt ma wkleic to tabeli frekwencja_uczen wlasnie ten klucz i aktualna godzine w przeciwnym przypadku wypisac informacje ze nie ma takiego klucza. Prosze o sprawdzenie poprawnosci napisanego skryptu. Chodzi mi glownie czy dobrze wykorzystalem komendy, laczylem sie z baza itp. A co do "$klucz" szukam w jaki sposob jest to pobierane z czytnika wiec prosze sie tym w ogole nie przejmowac. Zapomniałbym skrypt pisany w pythonie z wykorzystaniem biblioteki mysql.

  1. import MySQLdb
  2. $conn = Mysqldb.connect("localhost", "user", "haslo") OR die ('Nie moge połączyć się z Mysql');
  3. mysql_select_db (uczniowie) OR die ('Nie moge wybrać tabeli');
  4.  
  5. $klucz = "pobierany z czytnika rfid";
  6.  
  7. # Sprawdzanie czy istnieje $klucz=uczen_id w bazie
  8. $w = mysql_fetch_array(mysql_query(SELECT COUNT(uczen_id) FROM uczniowie WHERE uczen_id == '$klucz'));
  9.  
  10. # jeżeli nie -> napis, jeżeli jest -> dodaje uczen_id i obecny czas do tabeli frekwencja_dzien
  11. IF ($w[0]{
  12. INSERT INTO `frekwencja_dzien` (uczen_id, czas) VALUES ('$klucz',CURTIME());
  13. } else {
  14.  
  15. print "Nie ma takiego ucznia"
  16. }
  17.  
  18.  
  19.  
thek
Ogólnie wygląda na dobre, (ale tylko algorytm, a nie kod - uwagi niżej dałem) tylko nie jest potrzebne aż takie rozbudowane funkcjami sprawdzanie winksmiley.jpg Wystarczy samo
  1. $w = mysql_query('SELECT uczen_id FROM uczniowie WHERE uczen_id == \''.$klucz.'\'')
A to dlatego, że jeśli istnieje choć jeden taki uczeń to zwróci tu pewne wartości, jeśli zaś nie to FALSE. I tylko to wystarczy sprawdzać. Nas nie interesuje czy jest konkretna wartość tam, lub ilu takich jest. Ważne jest tylko istnienie, czyli wartość typu bool. A to już nam samo mysql_query zwróci :)No i zwróc uwagę na nawiasy, apostrofy i funkcje, bo o nich zupełnie zapomniałeś winksmiley.jpg Popatrz, że masz choćby insert do bazy... ale to tylko jakiś text. Nie ma bowiem mysql_query winksmiley.jpg
Ostatecznie masz więc:
  1. import MySQLdb
  2. $conn = Mysqldb.connect("localhost", "user", "haslo") or die ('Nie moge połączyć się z Mysql');
  3. mysql_select_db (uczniowie) or die ('Nie moge wybrać tabeli');
  4.  
  5. $klucz = "pobierany z czytnika rfid";
  6.  
  7. $w = mysql_query('SELECT uczen_id FROM uczniowie WHERE uczen_id == \''.$klucz.'\'');
  8. if( $w ) {
  9. mysql_query( 'INSERT INTO frekwencja_dzien (uczen_id, czas) values ( \''.$klucz.'\', CURTIME() )');
  10. } else {
  11. echo 'Nie ma takiego ucznia';
  12. }
blandzi
dzieki wszystko jasne temat do zamkniecia
Riklaunim
Cytat
  1. import MySQLdb
  2. $conn = Mysqldb.connect("localhost", "user", "haslo") or die ('Nie moge połączyć się z Mysql');
  3. mysql_select_db (uczniowie) or die ('Nie moge wybrać tabeli');
  4.  
  5. $klucz = "pobierany z czytnika rfid";
  6.  
  7. $w = mysql_query('SELECT uczen_id FROM uczniowie WHERE uczen_id == \''.$klucz.'\'');
  8. if( $w ) {
  9. mysql_query( 'INSERT INTO frekwencja_dzien (uczen_id, czas) values ( \''.$klucz.'\', CURTIME() )');
  10. } else {
  11. echo 'Nie ma takiego ucznia';
  12. }


To nie jest kod Pythona, a raczej jakiś PHP - $, nawiasy klamrowe, mysql_query itd. To nie ma prawa działać ani w PHP ani w Pythonie winksmiley.jpg
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.