"Einfacher" App-Datenbank-Vergleich

Letsfetz

Benutzer
Beiträge
8
Guten Tag,

ich bin neu hier und wusste nicht so recht in welches Forum folgendes reinpasst.

Mein Problem: ich baue im Moment eine Seite auf, auf der man in Zukunft Gutscheine gewinnen kann, dem diese persönlich zugeschickt wird.
Damit nicht jeder diese Gutscheine einfach kopieren kann brauch ich irgendeine kleine Absicherung.

Meine Idee: Zufallscodes generieren, diese in eine Datenbank einspeichern und die Gutscheine mit diesen versehen. Der Clue: Nun soll der Gutscheincode mit einer App über ein QR-Code eingescannt werden(Notfalls auch manuell eintippen), mit der Datenbank abgleichen, und falls vorhanden den Code aus der Datenbank löschen! Anschließend soll die App ein einfaches "gültig" und falls der Code nicht in der Datenbank vorhanden ist ein einfaches "nicht gültig" ausgeben.


Klingt eigentlich gar nicht so schwer, aber meine Kenntnisse halten sich in Grenzen. Lediglich Grundkenntnisse was Datenbanken angeht.

Vielleicht gibt es so einen Ansatz ja bereits? Falls nein, wäre es klasse, wenn mir einer helfen könnte.

Ich bin auch offen für andere Ideen, mit der ich die Gutscheine sichern kann. Wichtig ist nur, dass es sehr einfach geht für den Anwender.

Vielen Dank

Letsfetz
 
Werbung:
Vielleicht gibt es so einen Ansatz ja bereits? Falls nein, wäre es klasse, wenn mir einer helfen könnte.

Den Ansatz hast Du ja schon: einen Zufallscode generieren, diesen in der DB speichern. Dann prüfen, ob es den gibt, falls ja löschen (ich würde eher ihn als ab nun ungültig markieren) und gut ist.

Was ist nun genau Dein Problem?
 
Danke für die Antwort.

Das Problem ist, das nicht ich den Code überprüfen werde. Der Code soll ganz einfach von Clubs an der Kasse überprüft werden können, falls gültig soll der Code gleich rausgeschmissen werden. Dafür benötigt es eine einfache Anwendung, notfalls auch im Web
 
Ja. Um etwas auf Gleichheit zu überprüfen gibt es den Gleichheitsoperator =. Dem ist es egal, wer ihn benutzt. Und ja: eine Anwendung, die das macht, ist natürlich eine gute Idee.
 
Ja wäre es möglich mit mySQL eine Datenbank zu erstellen, eine einfache html Seite mit nem Javascript zu erstellen, welches auf die Datenbank zugreift, vergleicht und dann "Gültig/Nicht Gültig" ausgibt und zu guter letzt den Eintrag in der Datenbank löscht?
 
mal für den Datenbank-Teil, und mit PostgreSQL, unter Verwendung von UUID als Code:

Code:
test=# create extension "uuid-ossp";
CREATE EXTENSION
test=*# create table gutscheine (code uuid primary key, eingeloest_am date default null);
CREATE TABLE
test=*# insert into gutscheine (code) select uuid_generate_v4() from generate_series(1, 10) s;
INSERT 0 10
test=*# select * from gutscheine ;
  code  | eingeloest_am
--------------------------------------+---------------
 deb9254c-e366-4d0b-a41d-dab246b9db61 |
 4d652190-c95c-48f5-b4d2-ebab45092199 |
 9c12ac94-61b3-42ab-81f4-b251f4823060 |
 b94678d8-a814-4717-9b25-bb0d41a96ee2 |
 69858ad0-ac8e-4e4f-90bb-d6af5af14e05 |
 fc77641c-f09a-4ff4-b244-ab0f1191ab74 |
 730a6426-d8f4-4cfa-ba0e-29ea2a79484a |
 74e1c9a0-8d66-4bfb-8b4e-8d7457078a7f |
 04e86000-0ff1-4728-a40f-17012422c59f |
 18cc1749-a4d7-458a-9193-74d6710c700e |
(10 Zeilen)

test=*# with gutschein as (select code from gutscheine where code = 'deb9254c-e366-4d0b-a41d-dab246b9db61') update gutscheine set eingeloest_am = current_date from gutschein where gutscheine.code = gutschein.code returning *;
  code  | eingeloest_am |  code   
--------------------------------------+---------------+--------------------------------------
 deb9254c-e366-4d0b-a41d-dab246b9db61 | 2017-05-04  | deb9254c-e366-4d0b-a41d-dab246b9db61
(1 Zeile)

UPDATE 1
test=*# select * from gutscheine ;
  code  | eingeloest_am
--------------------------------------+---------------
 4d652190-c95c-48f5-b4d2-ebab45092199 |
 9c12ac94-61b3-42ab-81f4-b251f4823060 |
 b94678d8-a814-4717-9b25-bb0d41a96ee2 |
 69858ad0-ac8e-4e4f-90bb-d6af5af14e05 |
 fc77641c-f09a-4ff4-b244-ab0f1191ab74 |
 730a6426-d8f4-4cfa-ba0e-29ea2a79484a |
 74e1c9a0-8d66-4bfb-8b4e-8d7457078a7f |
 04e86000-0ff1-4728-a40f-17012422c59f |
 18cc1749-a4d7-458a-9193-74d6710c700e |
 deb9254c-e366-4d0b-a41d-dab246b9db61 | 2017-05-04
(10 Zeilen)

test=*# with gutschein as (select code from gutscheine where code = 'fascher code') update gutscheine set eingeloest_am = current_date from gutschein where gutscheine.code = gutschein.code returning *;FEHLER:  ungültige Eingabesyntax für Typ uuid: »fascher code«
ZEILE 1: ...hein as (select code from gutscheine where code = 'fascher c...
  ^
test=*# with gutschein as (select code from gutscheine where code = 'c2fdfdcd-4d05-44bf-99ca-4861adb1e6d5') update gutscheine set eingeloest_am = current_date from gutschein where gutscheine.code = gutschein.code returning *;
 code | eingeloest_am | code
------+---------------+------
(0 Zeilen)

UPDATE 0
test=*# 

test=*# with gutschein as (select code from gutscheine where code = 'deb9254c-e366-4d0b-a41d-dab246b9db61') update gutscheine set eingeloest_am = current_date from gutschein where gutscheine.code = gutschein.code and eingeloest_am is null returning *;
 code | eingeloest_am | code
------+---------------+------
(0 Zeilen)

Wie man sieht:
  • bei einem völlig falschen Code schlägt schon die Syntaxprüfung für den UUID-Datentypen an
  • bei einem falschen UUID-Code passiert nichts
  • beim zweiten Update mit dem bereits vergebenen Code passiert auch nichts (im ersten Update sollte auch schon auf das eingeloest_am - Feld is NULL geprüft werden, hatte ich erst vergessen...)
 
Danke, hat schon ein wenig geholfen,

ich bin gerade dabei auf meiner Seite eine Abfrage der Tabelle zu machen und die Werte in ein Array zu übergeben. Wenn ich die Seite aufruf passiert aber einfach nichts und finde den fehler nicht.:

<head>
<meta charset="utf8">
<title>Gutschein</title>
</head>
<body>
<?php
$_db_host = "findedeinendeal.de.mysql:3306";
$_db_username = "*******";
$_db_passwort = "*****";

$_link = mysql_connect($_db_host, $_db_username, $_db_passwort);
mysql_select_db($db, "findedeinendeal_de_gutschein");

$sql = "SELECT * FROM `Gutscheincodes`";

$result = mysql_query($sql) OR die(mysql_error());
$row = mysql_fetch_assoc($result);


echo $row['Codes'];
?>
</body>


Er gibt mir keinerlei Codes aus, hab einfach eine weiße Seite...

Jemand eine Idee?:/
 
die mysql-extension von PHP ist deprecated und in aktuellen PHP-Versionen gar nicht mehr enthalten. Ob Dein mysql_connect funktioniert wissen alleine die Götter, $db ist offenbar nicht definiert, Fehlerhandling offenbar nur sehr sparsam und zufällig verteilt.

Ich denke, Du hast außerdem eher ein PHP-Problem.
 
Habs mal bisschen angepasst:

Code:
  <head>
    <meta charset="utf8">
    <title>Gutschein</title>
  </head>
  <body>
      <?php
$mysqli = new mysqli('findedeinendeal.de.mysql:3306','findedeinendeal_de_gutschein','********','*************');
$myArray = array();

if(!mysqli) {
    die('Verbindung zur Datenbank nicht möglich.');
}
$sql = $mysqli -> real_escape_string('SELECT * FROM Gutscheincodes');
if($result = $mysqli -> query($sql)) {

    while($row=$result->fetch_array(MYSQLI_ASSOC)) {
        $myArray[] = $row;
    }
    echo json_encode($myArray);

} else {
    echo 'Fehler ('.$mysqli -> sqlstate.'): '.$mysqli -> error;
}
$mysqli -> close();
?>
   
</body>

Passiert trotzdem nichts...
Du kennst dich mit PHP und HTML nicht zufällig aus? :/
 
Werbung:
Zurück
Oben