Ankündigung

Einklappen
Keine Ankündigung bisher.

Random Code abfragen in MySQL - Datenbank

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Random Code abfragen in MySQL - Datenbank

    Hi,

    ich erstelle in einer Funktion in PHP einen zufällig erstellten 6 stelligen Code und speichere ihn in einer variablen ab, was auch prima funktioniert. Dies sieht dann am Ende etwa so aus:

    PHP-Code:
    $random valuerandom(6); 
    Dies ergibt dann zum Beispiel:

    PHP-Code:
    $random "zH5Fcx"
    Jetzt möchte ich diesen Code in einer Datenbank speichern was auch schon prima funktioniert. Mein Problem ist jetzt das es bis jetzt möcglich ist das der Code doppelt oder sogar mehrfach abgespeichert werden kann, es wird also nicht vor dem speichern geprüft ob der Code nicht schon einmal vorhanden ist.

    Genau an dieser Stelle bräuchte ich eure Hilfe Jeder Code darf nur einmal existieren, also muß vorher geprüft werden ob der Code schon einmal in der Datenbank vorhanden ist oder nicht. Wenn er schon vorhanden ist, soll ein neuer Code mit meiner Funktion generiert werden, solange bis ein Code generiert wurde den es noch nicht in der Datenbank gibt. Und sobald ein Code generiert wurde den es noch nicht gibt, soll dieser dann in der Datenbank gespeichert werden.

    Ich würde gerne von euch wissen wie man das am besten und am effizientesten umstzen kann, vielleicht in irgendeiner Schleife? Ich habe da irgendwie eine Denkblokade Bitte postet auch einen Beispiel Code so wie ihr es umsetzen würdet zum besseren verständnis

    Vielen Dank und viele Grüße
    Web1978


  • #2
    Entweder die Spalte auf UNIQUE setzen, oder vor dem Einfügen ein SELECT auf den Wert abfeuern.
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Zitat von lstegelitz Beitrag anzeigen
      Entweder die Spalte auf UNIQUE setzen, oder vor dem Einfügen ein SELECT auf den Wert abfeuern.
      Danke erstmal Mein Problem ist nicht das wie man Prüft ob der Code schon vorhanden ist, das würde ich hinbekommen. Mein Problem ist das ich nicht weis wie ich einen neuen Code mit meiner Funktion erstellen kann für den Fall wenn der Code schon vorhanden ist. Ich bräuchte quasi irgendeine Schleife oder sowas die solange durchlaufen wird bis ein Code generiert wurde der noch nicht in der Datenbank vorhanden ist, und erstadann soll ein neuer Eintrag erstellt werden mit dem Code der noch nicht vorhanden ist.

      Kommentar


      • #4
        Random Code abfragen in MySQL - Datenbank

        Hast du die Funktion, die den Zufallscode erstellt und das SQL-Statement zur Erstellung des Eintrag in der Datenbank selbst geschrieben?

        Zeig mal, was du bisher umgesetzt hast. Dann kann man dir sicher weiter helfen und zeigen, wo eine Prüfung auf bereits bestehende Daten einzubauen ist.
        Delirius

        PHP - Grundlagen / PDO - Tutorial / PDO - Dokumentation

        Kommentar


        • #5
          Pseudocode

          Code:
          while (!done) {
            code = createRandomCode();
            found = checkDatabaseForCode(code);
            if (!found) {
              saveCodeToDatabase(code);
              done = true;
            }
          }
          Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

          Kommentar


          • #6
            PHP-Code:
            CODE GENERIEREN MIT FUNKTION  <----------------------------|
                        |                                              |
                        |                                              |
            PRÜFEN OB CODE SCHON IN DATENBANK VORHANDEN IST            |
                        |                      |                       |
                        |                      |                       |
            CODE NICHT VORHANDEN           CODE VORHANDEN -------------|
                        |
                        |
            DATENBANKEINTRAG ERSTELLEN 
            Ich habe mal versucht darzustellen wie ich mir den Ablauf vorstelle. Ich weis halt nur nicht wie ich das in PHP umsetzen kann

            Kommentar


            • #7
              Dann bleibt nur noch zu sagen: Lerne Grundlagen
              Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

              Kommentar


              • #8
                Zitat von lstegelitz Beitrag anzeigen
                Dann bleibt nur noch zu sagen: Lerne Grundlagen
                Danke Ich finde deinen Ansatz schon super, würdest du es den so wie in deinem Beispiel in einer While-Schleife umsetzen? Wenn ja dann würde ich mich nämlich daran orientieren und anhand deines Besipiels nach einer Lösung suchen, also ist es auch effizient, und gäbe es überhaupt eine andere vielleicht sogar bessere Lösung?

                Kommentar


                • #9
                  Zitat von Delirius Beitrag anzeigen
                  Hast du die Funktion, die den Zufallscode erstellt und das SQL-Statement zur Erstellung des Eintrag in der Datenbank selbst geschrieben?

                  Zeig mal, was du bisher umgesetzt hast. Dann kann man dir sicher weiter helfen und zeigen, wo eine Prüfung auf bereits bestehende Daten einzubauen ist.
                  Danke Ja, ich habe die Funktion und das SQL Statement selbst geschrieben, und das funktioniert auch alles super. Ich möchte halt nur eine Lösung finden wie man doppelte einträge verhindern kann

                  Ich habe etwas weiter oben von diesem Post auch nochmal ein kleines Bild erstellt so wie ich mir den Ablauf vorstelle, und lstegelitz hat glaube ich auch schon eine gutes Code-Beispiel dazu geschrieben Ich werde es dann wohl auch mit eine While-Schleife versuchen, sofern du nciht ncoh eine andere vielleicht sogar effizientere Lösung kennst

                  Danke

                  Kommentar


                  • #10
                    Zitat von Web1978 Beitrag anzeigen
                    also ist es auch effizient, und gäbe es überhaupt eine andere vielleicht sogar bessere Lösung?
                    Bevor du nach einer besseren Lösung suchst, solltest du erstmal irgendeine Lösung erstellen.
                    Eleganz und Effizienz kommt später (von ganz alleine).
                    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                    Kommentar


                    • #11
                      Ohne deinen Code komplett umzuschreiben, ist das die beste Möglichkeit, da die Wahrscheinlichkeit zweimal denselben Code zu haben so niedrig ist, dass mein Taschenrechner zu viele Nullen nach dem Komma setzt, um sie hier alle abzuschreiben.
                      Crashkurs zum Thema Rechtschreibung: normalerweise (normaler weise oder normaler weiße), Standard (Standart), eben (ebend)

                      Kommentar

                      Lädt...
                      X