1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

"Einfacher" App-Datenbank-Vergleich

Dieses Thema im Forum "Allgemeine Diskussionen" wurde erstellt von Letsfetz, 4 Mai 2017.

  1. Letsfetz

    Letsfetz Benutzer

    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
     
  2. akretschmer

    akretschmer Datenbank-Guru

    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?
     
  3. Letsfetz

    Letsfetz Benutzer

    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
     
  4. akretschmer

    akretschmer Datenbank-Guru

    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.
     
  5. Letsfetz

    Letsfetz Benutzer

    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?
     
  6. akretschmer

    akretschmer Datenbank-Guru

  7. Letsfetz

    Letsfetz Benutzer

    Und wer kann mir da helfen? Habe gerade probiert ein einfaches Skript zu schreiben und kläglich gescheitert haha..
     
  8. akretschmer

    akretschmer Datenbank-Guru

    suche Dir bitte ein passendes Forum zu PHP oder Javascript.
     
  9. akretschmer

    akretschmer Datenbank-Guru

    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...)
     
  10. Letsfetz

    Letsfetz Benutzer

    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?:/
     
  11. akretschmer

    akretschmer Datenbank-Guru

    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.
     
  12. Letsfetz

    Letsfetz Benutzer

    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? :/
     
  13. akretschmer

    akretschmer Datenbank-Guru

    Ja, zufällig nicht.
     
  14. LionVI

    LionVI Benutzer

    warum müssen Leute an Webpages rumpfuschen, die weder von HTML, PHP noch SQL ne Ahnung haben?:mad:
     
    akretschmer gefällt das.
  15. akretschmer

    akretschmer Datenbank-Guru

    Du ahnst nicht, was ich als Supporter bei einem Hoster da so gesehen habe ...
     

Diese Seite empfehlen