Duplikate ausschließen

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

  • Duplikate ausschließen

    Hallo!

    Ich hab hier im Forum schon etwas gestöbert betreffend Dupliakte. Ich fand nen Code von Sky gepostet - der prüft vor der Eingabe in die DB dieselbe ab ob der Eintrag schon vorhanden ist.

    Ich hab bereits selbst ein Anmeldungsscript zum SMS Dienst geschrieben. Der User gibt Name, eMail, Vorwahl und Nummer an.

    Jetzt sollte das Script halt auch noch prüfen ob die Nummer (Vorwahl + Nummer) nicht doppelt ist. MIt Key=unique kann ich das nicht lösen weil ja theoretisch die Nummer gleich sein kann trotz einer anderen Vorwahl.

    Jetzt hab ich mal das hier verfasst:

    PHP-Code:
    // 3.Eintragung in die Datenbank:

    if($name != "" and $vorwahl != "" and $nummer != "" and $email != "")
    {

    //
    //Prüfung auf doppelte Einträge
    //

            
    $result mysql_query("SELECT count(*) FROM sms WHERE nummer='$nummer' and vorwahl='$vorwahl'");
    if (
    mysql_num_rows($result)==0) {
      
    $query="INSERT into sms (name, vorwahl, nummer, email, Datum) VALUES ('$name', '$vorwahl', '$nummer', '$email', '$heute')";
                 
    mysql_query($query$db);
               echo 
    "Danke für die Anmeldung";
               
    header("Location: [url]http://[/url]"");

    //eMAIL 
    $empfaenger = "";
    $betreff = "SMS Dienst";
    $inhalt = "Neue Anmeldung von $name $vorwahl/$nummer";
    $headers = "Content-Typetext/html\n";
    $headers .= "Content-Transfer-Encoding8bit\n";
    $headers .= "From$email <%email>\n";
    mail(
    $empfaenger$betreff$inhalt$headers); 

    } else {
    echo "
    Die Nummer $vorwahl $nummer existiert bereits in der Datenbank.";
    }

    }
    else
    {
       echo "
    Fehler -  Eingabe bitte wiederholen!";
    }
    mysql_close(); 
    Komisch ist: die Abfrage nach leeren Zellen funktioniert einwandfrei - die Abfrage nach doppelten Nummer nicht


    Oder kann ich doch unique einsetzen? Es müsste aber über 2 Felder gekoppelt gehen - vorwahl+nummer

    ich hab 2 Felder für die nummer, damit die Vorwahl im richtigen Format reinkommt nämlich 43664 (z.B).

    Ciao
    Clemens

  • #2
    hat keiner eine Ahnung wie das am besten geht?

    Kommentar


    • #3
      PHP-Code:
      // 3.Eintragung in die Datenbank:
      if($name != "" and $vorwahl != "" and $nummer != "" and $email != "")
      {
      //
      //Prüfung auf doppelte Einträge
      //

      $result mysql_query("SELECT count(*) FROM sms WHERE nummer='$nummer' and vorwahl='$vorwahl'");
      list(
      $daten)=mysql_fetch_array($result);
      if (
      $daten==0) {
        
      $query="INSERT into sms (name, vorwahl, nummer, email, Datum) VALUES ('$name', '$vorwahl', '$nummer', '$email', '$heute')";
      mysql_query($query$db);
      echo 
      "Danke für die Anmeldung";
      header("Location: <a href="http://" target="_blank">[url]http://[/url]</a>"");

      //eMAIL 
      $empfaenger "";
      $betreff "SMS Dienst";
      $inhalt "Neue Anmeldung von $name - $vorwahl/$nummer";
      $headers "Content-Type: text/html\n";
      $headers .= "Content-Transfer-Encoding: 8bit\n";
      $headers .= "From: $email <%email>\n";
      mail($empfaenger$betreff$inhalt$headers); 

      } else {
      echo 
      "Die Nummer $vorwahl / $nummer existiert bereits in der Datenbank.";
      }

      }
      else
      {
         echo 
      "Fehler -  Eingabe bitte wiederholen!";
      }
      mysql_close(); 
      meine Projekte bestaunen: http://www.kleiza.de

      Kommentar


      • #4
        Re: Duplikate ausschließen

        Original geschrieben von whistler81
        MIt Key=unique kann ich das nicht lösen weil ja theoretisch die Nummer gleich sein kann trotz einer anderen Vorwahl.
        und wieso nicht ?
        du kannst unique keys über mehrere Spalten anlegen

        zb:

        Code:
        CREATE TABLE `sms` (
        `username` VARCHAR(50) NOT NULL, 
        `vorwahl` VARCHAR(10) NOT NULL, 
        `nummer` VARCHAR(20) NOT NULL,
        UNIQUE (`vorwahl`, `nummer`)
        );
        TBT

        Die zwei wichtigsten Regeln für eine berufliche Karriere:
        1. Verrate niemals alles was du weißt!


        PHP 2 AllPatrizier II Browsergame

        Kommentar


        • #5
          nein, er meint, das die nummer gleich sein kann, nur ne anderen vorwahl

          0170-1231231
          0172-1231231
          meine Projekte bestaunen: http://www.kleiza.de

          Kommentar


          • #6
            und das kann er nutzen, indem er einem Unique Key über Vorwahl+Nummer
            setzt, einen der beide einschließt, nicht 2 Unique Keys
            TBT

            Die zwei wichtigsten Regeln für eine berufliche Karriere:
            1. Verrate niemals alles was du weißt!


            PHP 2 AllPatrizier II Browsergame

            Kommentar


            • #7
              Vielen Dank an alle!

              hab die Lösung von Campus jetzt eingaubt!

              Ciao und schönes Wochenende noch!

              Clemens

              Kommentar


              • #8
                achso, wusste gar nicht dass sowas geht
                meine Projekte bestaunen: http://www.kleiza.de

                Kommentar

                Lädt...
                X