Anzeige:
Ergebnis 1 bis 4 von 4

Thema: doppelte Eintraege verhindern

  1. #1
    Registrierter Benutzer
    Registriert seit
    13.03.2004
    Ort
    London
    Beiträge
    16

    doppelte Eintraege verhindern

    Hi,

    um es gleich vorneweg zu sagen, ich bin kein Programmierer und habe auch von php wenig Ahnung und habe dazu noch folgendes Problem:

    Wir haben hier an unserem College eine kleine DB in welche unsere Lehrer ihre Laptops, Beamer usw. ueber ein Formular buchen koennen. Das funktioniert auch soweit, allerdings ist es im Moment immer noch moeglich doppelte Eintraege zu machen.
    Derjenige, der dieses Formular programmiert hat ist leider nicht mehr da und ich selbst habe wie gesagt wenig Ahnung wie ich das loesen koennte.

    Ich poste mal den Code:

    PHP-Code:
      if($zeitstempel time())
      {
      
    $eintrag "INSERT INTO beamerbooking (tag,monat,jahr,stunde,minute,stundefertig,minutefertig,raum,equipment,gruppe,verantwortlicher,timestamp) VALUES ('$tag','$monat','$jahr','$stunde','$minute','$stundefertig','$minutefertig','$raum','$equipment','$gruppe','$verantwortlicher','$zeitstempel')";
      
    $eintragen mysql_query($eintrag);
      }
      else
      {
      echo 
    "The date you tried to book is in the past, the entry will not be send. Please try again.";
      }

      if(
    $eintragen != 0)
       {
       echo 
    "Entry successful";
       } 
    Der Zeitstempel wird so kreiert:

    PHP-Code:
     $zeitstempel mktime("$stunde""$minute"date("s"), "$monat""$tag""$jahr"); 
    Ich dachte, dass man doppelte Eintraege verhindern koennte, wenn man die Zeitstempel miteinander vergleicht. Aber so wie es jetzt ist werden ja immer komplett neue Zeitstempel erstellt.

    Jemand nen Vorschlag wie ich das einfach loesen koennte?
    Have you tried turning it off and on again? Are you sure it's plugged in?

  2. #2
    Registrierter Benutzer
    Registriert seit
    13.03.2004
    Ort
    London
    Beiträge
    16
    Also ich habe jetzt noch ein wenig experimentiert und zumindest herausgefunden, dass wegen date(...) immer verschiedene Zeitstempel generiert werden. Mittlerweile bin ich soweit, dass bei gleichem Datum und gleicher Zeit auch ein gleicher Zeitstempel erstellt wird.
    Jetzt haengt es scheinbar nur noch an der Abfragebedingung:

    PHP-Code:
    if($zeitstempel time())
      {
          
        
    # check if entry already exists
        
    $old "SELECT timestamp FROM beamerbooking WHERE (timestamp = '$zeitstempel' AND raum = '$raum') " or $old 0;
       
        if (
    $old == 0) {
            
    $eintrag "INSERT INTO beamerbooking (tag,monat,jahr,stunde,minute,stundefertig,minutefertig,raum,equipment,gruppe,verantwortlicher,timestamp) VALUES ('$tag','$monat','$jahr','$stunde','$minute','$stundefertig','$minutefertig','$raum','$equipment','$gruppe','$verantwortlicher','$zeitstempel')";
              
    $eintragen mysql_query($eintrag);
        }
        else echo 
    "The room is already booked at this date!"
    Ein
    PHP-Code:
    echo $old 
    nach dem SELECT-Befehl liefert mir nur ein
    PHP-Code:
    SELECT timestamp FROM beamerbooking WHERE (timestamp '1443515410' AND raum '1.1'Entry successful 
    Wo liegt jetzt hier der Fehler?
    Have you tried turning it off and on again? Are you sure it's plugged in?

  3. #3
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Moin,

    zuerst mal müsstest Du die Abfrage zur Kontrolle ($old) auch mal abschicken. Im Moment definierst Du nur den SQL, damit ist er aber noch nicht ausgeführt.

    Außerdem: Wie wäre es, wenn Du in der MySQL-Datenbank einen eindeutigen Index auf die Spalte "timestamp" legst? Dann kriegst Du nen sauberen SQL-Fehler, wenn ein Zeitstempel doppelt eingefügt werden soll, ganz ohne vorherige Abfrage.

    Jan

  4. #4
    Registrierter Benutzer
    Registriert seit
    13.03.2004
    Ort
    London
    Beiträge
    16
    Hi Jan,
    vielen Dank! Hat geklappt! Das mit den Unique-Feldern macht die ganze Sache doch viel einfacher.

    Ein schoenes Wochenende dir!
    Have you tried turning it off and on again? Are you sure it's plugged in?

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •