Code-Überprüfung

Robert Steichele

Erfahrenes Mitglied
Könntet ihr euch bitte diesen Code kurz anschauen und mir sagen ob er funktioniert? Dabei wird ein einer Do-While Schleife eine neue Ticket-Nummer aus einer Kombination von Datum und Zeit generiert. In der entsprechenden Tabelle soll gesucht werden ob es bereits einen Datensatz mit dieser Nummer gibt. Ist dies der Fall, müßte die Variable $exticketnr den Wert 1 haben, ansonsten 0. Die Schleife wird dann solange wiederholt, bis es keine identische Ticket-Nummer mehr gibt.

Da eine Übereinstimmung theoretisch nur auftreten kann wenn an zwei Rechnern in derselben Sekunde ein Ticket erstellt wird, ist es schwierig diesen Code praktisch zu testen, deshalb hier die Anfrage.

Code:
do {
    $ticketnr=date("y");
    $ticketnr.=date("m");
    $ticketnr.=date("d");
    $ticketnr.=date("His");

    $db=mysql_connect($server, $dbuser, $dbpwd)
      or die("<b>No Connection to Database-Server</b>");
    mysql_select_db($database)
      or die("<b>Error connecting to Database</b>");
    $request="SELECT * FROM tickets WHERE ticketnr=" . $ticketnr . "";
    $result=mysql_query($request);
    $exticketnr=mysql_num_rows($result);
  } while($exticketnr>="1");
 
PHP:
$db = mysql_connect($server, $dbuser, $dbpwd) or die('<b>No Connection to Database-Server</b>');
mysql_select_db($database) or die('<b>Error connecting to Database</b>');
do
{
    $result = mysql_query('SELECT `ticketnr` FROM `tickets` WHERE `ticketnr`='.date('ymdHis'));
} while(!mysql_num_rows($result));
So würde das ganze schon mal um einiges besser aussehen.
Wenn du statt der Zeit einfach die Microtime benutzen würdest, dann könntest du dir die Abfrage, ob die Nummer schon existiert, sparen.
 
Zuletzt bearbeitet:
Aber die Microtime ist doch auch "nur" sekundengenau. Da gäbe es ebenfalls die theoretische Möglichkeit, dass zwei Tickets in derselben Sekunde erstellt werden.
 
Zurück