INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
MySQL Beispielcode verstehen
17.10.2016, 20:59 (Dieser Beitrag wurde zuletzt bearbeitet: 17.10.2016 21:11 von RonSH.)
Beitrag #17
RE: MySQL Beispielcode verstehen
Ich habe die Datenbank genau so angelegt wie du es vorgeschlagen hast.
Alle Befehle funktionieren einwandfrei.
id name guthaben rfid datum
1 Meier 100 12345678 2016-10-17 16:02:30
2 Max 1000 12345679 2016-10-17 16:03:50
3 Muster 10 12567843 2016-10-17 16:04:23

Ihr SQL-Befehl wurde erfolgreich ausgeführt.
UPDATE ardu_tabelle SET guthaben = guthaben -20 WHERE rfid = 12345678

1 Meier 80 12345678 2016-10-17 16:16:29


Was meinst du mit:
Hast Du die Funktionen zum Auslesen der User-Daten anhand der RFID fertig und funktioniert sie?
Hast Du die Funktion zum Verringern des Guthabens in der DB fertig und funktioniert sie?

Ich habe diese Funktionen über die Konsole der DB getestet. Da funktioniert das alles super.
Oder muss ich die Funktionen jetzt irgendwo hinterlegen?

Die RFID ändere ich jetzt noch in der DB. Ich habe 4 Chips hier liegen und füge die ein.

Ich habe die DB jetzt manuell angepasst:
Code:
id        name      guthaben         rfid                 datum
1          Meier          100           998856674560     2016-10-17 22:04:28
2          Max           1000          998841095900     2016-10-17 22:05:46
3          Muster          10           908887180082     2016-10-17 22:06:38
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.10.2016, 21:30
Beitrag #18
RE: MySQL Beispielcode verstehen
Prima.
Du brauchst ja am Schießstand 2 Grundfunktionen für die Zusammenarbeit mit der Datenbank.

ich nenne sie mal getUserData(char *rfid)

Die soll das SQL-Statement
Code:
SELECT id,name, rfid, guthaben FROM ardu_tabelle WHERE rfid = 'gesuchteRFID'
absetzen, die Daten lesen und die globalen Variablen
id, name, rfid und guthaben setzen.
Die gesuchte RFID sollte der Funktion als Parameter übergeben werden.
Das wird eine Abwandlung der do_query aus den Beispielen.

Eine weitere Funktion soll vom Guthaben des eingeloggten users (id ist aus der vorherigen Funktion gesetzt und damit bekannt)
immer 1 abziehen.
Das Statement hatte ich als Beispiel schon geschrieben.

Diese beiden funktionen brauchst Du am Stand und die solltest Du schreiben. Zumindest die Ansätze will ich von Dir sehen. Du sollst ja auch verstehen, was Du tust.

Gruß Tommy

Du hattest auch gefragt, wenn er unter 0 kommt - entweder Dein Ablauf verhindert es oder er muss nachzahlen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.10.2016, 22:34 (Dieser Beitrag wurde zuletzt bearbeitet: 17.10.2016 22:36 von RonSH.)
Beitrag #19
RE: MySQL Beispielcode verstehen
Verstehe diese querys noch nicht ganz. Das sind ja übersetzt "Abfragen"
Wie führe ich die denn sauber aus?

Code:
#include <SPI.h> // SPI für EthernetShield
#include <Ethernet.h> // Ethernet
#include <mysql.h> // MySql Connector
#include <sha1.h> // sha Crypto
#include <SoftwareSerial.h>

EthernetClient client; // EthernetClient - Instanz erstellen
SoftwareSerial RFID(2, 3); // Pin 2 & 3

int id;
char nachname; //name als variable nicht möglich.name in nachname in der DB geändert
String rfid;
int guthaben;

static char user[] = "arduino"; // SQL-Nutzer
static char password[] = "ardu"; // SQL Kennwort
static char db[] = "ardutest";
static byte ip[] = {192, 168, 178, 10 }; // IP-Adresse Arduino
static IPAddress dbAdresse(192, 168, 178, 5);
static byte mac[] = {0x90, 0xA2, 0xDA, 0x00, 0x9B, 0xC1 }; // MAC-Adresse des Arduino
Connector my_conn; // Connector - Instanz erstellen




void setup()
{
  RFID.begin(9600);    // Verbindung zum RFID Modul
  Serial.begin(9600);  // Verbindung zum PC
  Serial.println("Start");
  Ethernet.begin(mac, ip); // EthernetClient starten DHCP
  delay(1000);  // 1 Sekunde warten
  Serial.print("Meine IP ist ");
  Serial.println(Ethernet.localIP());
  Serial.print("Server IP: ");
  Serial.println(dbAdresse);
  if (my_conn.mysql_connect(dbAdresse, 3306, user, password)) {
    delay(1000);
  }
  else {
    Serial.println("Connection failed.");
  }
}



void loop()
{
  if (RFID.available() > 0)
  {
     rfid = RFID.read();
     rfid = rfid.substring(1,13);
     Serial.print(rfid);
     void do_query(id,nachname, guthaben FROM ardu_tabelle WHERE rfid = rfid);
  }

}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.10.2016, 10:12
Beitrag #20
RE: MySQL Beispielcode verstehen
(17.10.2016 22:34)RonSH schrieb:  Verstehe diese querys noch nicht ganz. Das sind ja übersetzt "Abfragen"
Wie führe ich die denn sauber aus?
In den Beispielen zur MySQL-Lib gibt es eine Funktion do_query.
In der ist der Aufruf eines Select und die Ausgabe der zurück gelieferten Werte dargestellt.
Die sollst Du an Deine Aufgabe anpassen. Lass die RFID-Sache erst mal weg und schreibe einfach eine feste RFID in den Select.

Wenn das funktioniert, schreibe die von der DB zurück gelieferten Werte in globale Variablen und zeige diese an.

Erst mal bis dahin.

Gruß Tommy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.10.2016, 10:20
Beitrag #21
RE: MySQL Beispielcode verstehen
Hallo Tommy,
ich hatte mir das schon angesehen.

Code:
void do_query(const char *q) {
  column_names *c; // pointer to column values
  row_values *r;   // pointer to row values

  // First, execute query. If it returns a value pointer,
  // we have a result set to process. If not, we exit.
  if (!my_conn.cmd_query(q)) {
    return;

nur fehlt mir das Verständnis und die Erklärung zu dem Teil.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.10.2016, 10:26
Beitrag #22
RE: MySQL Beispielcode verstehen
(18.10.2016 10:20)RonSH schrieb:  Hallo Tommy,
ich hatte mir das schon angesehen.

Code:
void do_query(const char *q) {
  column_names *c; // pointer to column values
  row_values *r;   // pointer to row values

  // First, execute query. If it returns a value pointer,
  // we have a result set to process. If not, we exit.
  if (!my_conn.cmd_query(q)) {
    return;

nur fehlt mir das Verständnis und die Erklärung zu dem Teil.
Du solltest Dich mit der ganzen Funktion beschäftigen, nicht nur mit dem ersten Stückchen.

Was konkret verstehst Du in dieser Funktion nicht? Evtl. fehlen Dir für dieses Projekt noch zu viele Grundlagen.

Gruß Tommy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.10.2016, 10:53 (Dieser Beitrag wurde zuletzt bearbeitet: 18.10.2016 10:56 von RonSH.)
Beitrag #23
RE: MySQL Beispielcode verstehen
Ich gebe nicht auf. Zwar ist der Code noch unsauber, aber er gibt folgendes aus

Code:
#include <SPI.h> // SPI für EthernetShield
#include <Ethernet.h> // Ethernet
#include <mysql.h> // MySql Connector
#include <sha1.h> // sha Crypto
#include <SoftwareSerial.h>

EthernetClient client; // EthernetClient - Instanz erstellen
SoftwareSerial RFID(2, 3); // Pin 2 & 3

int id;
char nachname; //name als variable nicht möglich.name in nachname in der DB geändert
String rfid;
int guthaben;

static char user[] = "arduino"; // SQL-Nutzer
static char password[] = "ardu"; // SQL Kennwort
static char db[] = "ardu_tabelle";
static byte ip[] = {192, 168, 178, 10 }; // IP-Adresse Arduino
static IPAddress dbAdresse(192, 168, 178, 5);
static byte mac[] = {0x90, 0xA2, 0xDA, 0x00, 0x9B, 0xC1 }; // MAC-Adresse des Arduino
Connector my_conn; // Connector - Instanz erstellen

const char QUERY_POP[] = "SELECT guthaben FROM arduino.ardu_tabelle WHERE rfid = '998841095900'";



void setup()
{
  RFID.begin(9600);    // Verbindung zum RFID Modul
  Serial.begin(9600);  // Verbindung zum PC
  Serial.println("Start");
  Ethernet.begin(mac, ip); // EthernetClient starten DHCP
  delay(1000);  // 1 Sekunde warten
  Serial.print("Meine IP ist ");
  Serial.println(Ethernet.localIP());
  Serial.print("Server IP: ");
  Serial.println(dbAdresse);
  if (my_conn.mysql_connect(dbAdresse, 3306, user, password)) {
    delay(1000);
    my_conn.cmd_query(QUERY_POP);
    my_conn.show_results();
    Serial.println(QUERY_POP);
  }
  else {
    Serial.println("Connection failed.");
  }
}



void loop()
{

}

Code:
Start
Meine IP ist 192.168.178.10
Server IP: 192.168.178.5
Connected to server version 5.5.5-10.1.16-MariaDB
guthaben
1000
1 rows in result.
SELECT guthaben FROM arduino.ardu_tabelle WHERE rfid = '998841095900'
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.10.2016, 11:09
Beitrag #24
RE: MySQL Beispielcode verstehen
(18.10.2016 10:53)RonSH schrieb:  Ich gebe nicht auf. Zwar ist der Code noch unsauber, aber er gibt folgendes aus

Code:
#include <SPI.h> // SPI für EthernetShield
#include <Ethernet.h> // Ethernet
#include <mysql.h> // MySql Connector
#include <sha1.h> // sha Crypto
#include <SoftwareSerial.h>

EthernetClient client; // EthernetClient - Instanz erstellen
SoftwareSerial RFID(2, 3); // Pin 2 & 3

int id;
char nachname; //name als variable nicht möglich.name in nachname in der DB geändert
String rfid;
int guthaben;

static char user[] = "arduino"; // SQL-Nutzer
static char password[] = "ardu"; // SQL Kennwort
static char db[] = "ardu_tabelle";
static byte ip[] = {192, 168, 178, 10 }; // IP-Adresse Arduino
static IPAddress dbAdresse(192, 168, 178, 5);
static byte mac[] = {0x90, 0xA2, 0xDA, 0x00, 0x9B, 0xC1 }; // MAC-Adresse des Arduino
Connector my_conn; // Connector - Instanz erstellen

const char QUERY_POP[] = "SELECT guthaben FROM arduino.ardu_tabelle WHERE rfid = '998841095900'";



void setup()
{
  RFID.begin(9600);    // Verbindung zum RFID Modul
  Serial.begin(9600);  // Verbindung zum PC
  Serial.println("Start");
  Ethernet.begin(mac, ip); // EthernetClient starten DHCP
  delay(1000);  // 1 Sekunde warten
  Serial.print("Meine IP ist ");
  Serial.println(Ethernet.localIP());
  Serial.print("Server IP: ");
  Serial.println(dbAdresse);
  if (my_conn.mysql_connect(dbAdresse, 3306, user, password)) {
    delay(1000);
    my_conn.cmd_query(QUERY_POP);
    my_conn.show_results();
    Serial.println(QUERY_POP);
  }
  else {
    Serial.println("Connection failed.");
  }
}



void loop()
{

}

Code:
Start
Meine IP ist 192.168.178.10
Server IP: 192.168.178.5
Connected to server version 5.5.5-10.1.16-MariaDB
guthaben
1000
1 rows in result.
SELECT guthaben FROM arduino.ardu_tabelle WHERE rfid = '998841095900'
Gut, da haben wir ja einen ersten Durchstich. Das zeigt, dass Dein Select richtig ist.
Der nutzt Dir aber für die weitere Verarbeitung erstmal nichts, da Du noch weitere Werte brauchst. Du willst doch bestimmt auch den Namen auf dem Display ausgeben, damit der Benutzer weiß, dass er am richtigen Stand ist.

Liest Du eigentlich, was ich Dir schreibe?

Du solltest Dich mit dem Code der Funktion do_query aus den Beispielen beschäftigen und diese umbauen.
Lies Dir nochmal meine Postings durch, da sind konkrete Schritte benannt, die im Endeffekt zum Ziel führen werden.

Gruß Tommy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Daten an mysql diode1990 24 1.308 31.07.2016 10:29
Letzter Beitrag: Gandalf
  Hilfe: Mega2560 - ENC 28J60 - MYSQL Gandalf 1 181 28.07.2016 16:30
Letzter Beitrag: Gandalf
  Sensordaten in MYSQL speichern rieders 3 700 02.03.2016 19:58
Letzter Beitrag: rieders
Sad Arduino Shield Verbindung bricht ab (PHP Skript,Mysql Datenbank) julius858 12 3.307 19.02.2016 11:26
Letzter Beitrag: IBES1410
  Arduino RF Transceiver und MySQL via PHP 420greenbrain 2 1.077 27.04.2015 22:50
Letzter Beitrag: 420greenbrain
  MYSQL Connector String dossidr 0 430 24.03.2015 22:44
Letzter Beitrag: dossidr
  Arduino SOLL-Werte von MySql abfragen sepro 5 1.867 01.08.2014 18:44
Letzter Beitrag: rkuehle

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste