Inputbox (sql INSERT INTO)



  • hmm sorry ich glaub ich habe blackout von viel code :S

    form
    $password=$_POST['password'];
    $email=$_POST['email'];
    $checkmail= "ALTER TABLE `login` ADD UNIQUE (`email`)";
    
    if ($_POST['password'] == "") 
    { 
    echo "<center>Sie haben kein Password eingegeben</center>"; 
    } else if($_POST['email']== '$checkmail'){
    
    $result= mysql_query($checkmail)OR die("Query: <pre>".$checkmail ."</pre>\n"."Antwort: ". mysql_error());
    
    if (mysql_num_rows($result)>0){
    $error.= "- Die Eingegeben E-Mail Adresse ".$email ." ist bnereits in unserer Datenbank vorhanden";
    }
    }
    
    else{
    
    $foo = explode(",", $_POST['email']); 
    foreach($foo as $bar) 
    { 
       mysql_query("INSERT INTO `login` (`email`) VALUES ('".$bar."') ON DUPLICATE KEY UPDATE `email`=`email`"); 
    }
    }
    

    weiß grad nicht wie ich es einbinden soll!



  • Hallo,

    dir fehlt Grundwissen für MySQL! Was du machen muusst ist, das Tabellenfeld `email` auf eindeutig (UNIQUE) setzen. Das ganze passiert nur einmal und hat den Sinn, dass es keinen zweiten Eintrag mit dem selben Inhalt geben darf!

    Du gehst also in deine MySQL-GUI (phpmyadmin z.B.) oder rufst es direkt über die Konsole auf. Dann führst du den Befehl ALTER TABLE `login` ADD UNIQUE (`email`); aus.

    In deinem PHP-Script machst du dann nichts anderes mehr als:

    $password = $_POST['password'];
    $emails   = $_POST['emails'];
    
    if ($password=="") { print "Passwort leer"; exit; }
    if ($emails  =="") { print "EMails leer";   exit; }
    
    $emails   = explode(",", emails);
    foreach($emails as $email) 
    { 
       mysql_query("INSERT INTO `login` (`email`) VALUES ('".$email."') ON DUPLICATE KEY UPDATE `email`=`email`"); 
    }
    

    Das wars schon.

    VlG



  • hallo,

    das weiß ich und bin ja dabei es zu lernen bzw. möchte es unbedingt!
    Und Ihre Erklärungen sind einfach spitze!

    Naja ich versuch später! leider komm ich hier von der Firma nicht auf mein phpmyadmin!
    naja das geht auch XD

    mysql_query("ALTER TABLE `login` ADD UNIQUE (`email`)");
    

    Dank nochmals für die Erfolgreiche Informationen !



  • Hey hmmz,

    ich habe bemerkt, dass er das Password nicht in die Datenbank einträgt nur die email? weist du woran das liegt?

    hier dein code nochmal:

    $password = $_POST['password']; 
    $email   = $_POST['email']; 
    
    if ($password=="") { print "<br><br><br><center>Sie haben kein Password eingetragen<br><FONT SIZE=2>(Password z.b. 1111)</FONT><br><br><a href=versenden.php>Neuer Versuch</a></center>"; exit; } 
    if ($email  =="") { print "<br><br><br><center>Sie haben keine Email Addresse eingetragen!<br><br><a href=versenden.php>Neuer Versuch</a></center>";   exit; } 
    
    $email   = explode(",", $email); 
    
    foreach($email as $email) 
    { 
       mysql_query("INSERT INTO `login` (`email`) VALUES ('".$email."') ON DUPLICATE KEY UPDATE `email`=`email`"); 
       //mysql_query("INSERT INTO `login` (`password`) VALUES ('".$password."')ON DUPLICATE KEY UPDATE `password`=`password`"); 
    }
    


  • <center>, <font>, <br> 😮
    Ich hab innerlich geweint, als ich das gelesen hab.

    Aber ok, weiter im Text. Kann sich ja nicht jeder an Standards halten :p

    Wenn du schon abschreibst, dann auch richtig..

    ließ nochmal den Codeausschnitt von hmmz und dann deinen. Und achte darauf, auch alle Variablennamen so zu schreiben, wie er es gemacht hat

    Und informier dich mal drüber, was Kommentare sind und was die bewirken



  • Hi,

    ja -> das liegt daran dass du ihm nicht sagst dass er es eintragen soll!

    mysql_query("INSERT INTO `login` (`email`, `password`) VALUES ('".$email."','".$password."') ON DUPLICATE KEY UPDATE `email`=`email`");
    

    Dann muss `password` allerdings ebenfalls UNIQUE sein ... (also die Verbindung aus email und password muss unique sein)

    VlG



  • Wo Sie Recht haben, haben Sie Recht!
    Danke



  • hmm jetzt funktionier garnichts mehr -.-
    nun trägt er nur eine email ein und nicht mehr mehrere!

    Eintragen funktioniert: (email & password)

    $password = $_POST['password']; 
    $email   = $_POST['email']; 
    
    if ($password=="") { print "<br><br><br><center>Sie haben kein Password eingetragen<br><FONT SIZE=2>(Password z.b. 1111)</FONT><br><br><a href=versenden.php>Neuer Versuch</a></center>"; exit; } 
    if ($email  =="") { print "<br><br><br><center>Sie haben keine Email Addresse eingetragen!<br><br><a href=versenden.php>Neuer Versuch</a></center>";   exit; } 
    
    $email   = explode(",", $email); 
    foreach($email as $email) 
    { 
    mysql_query("INSERT INTO `login` (`email`, `password`) VALUES ('".$email."','".$password."') ON DUPLICATE KEY UPDATE `email`=`email`");
    
    }
    

    mehre Emails jedoch leider nicht mehr... sorry das ich mittlerweile nerve..
    Bitte um Verständnis da ich nicht viel wissen besitze!



  • Hallo,

    wie hast du die UNIQUE-Keys gesetzt? Ggf. musst du beide nochmal entfernen und gemeinsam setzen! MySQL vereint UNIQUE-Keys nicht miteinander, wenn es MySQL nicht expl. mitgeteilt wird.

    ALTER TABLE `login` DROP INDEX `email` 
    ALTER TABLE `login` DROP INDEX `password`
    
    ALTER TABLE `login` ADD UNIQUE (
    `email` ,
    `password` 
    );
    

    Danach wird die Eindeutigkeit auf beide Felder gleichzeitig gesetzt. Heißt: Passwort und Email-Adresse als Paar darf nicht doppelt vorkommen.

    Momentan ist es so, dass du einmal `email` und einmal `password` unique gesetzt hast. Sollte nun also ein Passwort zweimal (mit versch. Adressen) auftauchen. streikt MySQL und sagt schlicht und ergreifend: nö! Deswegen muss der Index auf beide Felder gleichzeitig gesetzt werden.

    ... kompliziertes Thema ... am Besten du besorgst dir da mal etwas Fachliteratur!

    VlG



  • Hey,

    bezüglich Emails hätte ich ebenso eine Frage!

    wenn ich z.b. 2000 Email Adressen besitze,
    wie kann ich nach doppelte Emails prüfen bzw. anschließend ( die diejenigen die doppelt eintragen sind, eine davon löschen?)

    geht das in exel?
    oder wo auch immer, jedoch möchte ich nicht eigenhändig nach einer bestimmte email suchen, sondern er soll einfach alle durchgehen und doppelte Exemplare löschen



  • Gast111 schrieb:

    oder wo auch immer

    A: Open Office Calc (ich hab kein Excel mehr)
    - Daten > Filter > Standardfilter
    - Wert auf "nicht leer" ändern
    - Den Bereich "mehr Optionen" aufklappen und da "keine Duplikate" auswählen
    - mit OK bestätigen
    - Dann kannst das Ergebnis kopieren irgendwohin ohne Duplikate

    B: Ein Skript in der Programmiersprache deiner Wahl

    C: Auch Excel stellt Funktionen bereit (fkt - Button links neben der Eingabezeile)
    vielleicht ist da was dabei

    😨 SQL bietet Möglichkeiten wie DISTINCT oder GROUP BY


Anmelden zum Antworten