kostenloser Webspace werbefrei: lima-city


Überprüfen ob name schon vorhanden in mysql und php

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    pcplayers

    pcplayers hat kostenlosen Webspace.

    HI
    Ich habe ein Anmeldeformular erstellt, aber da kein nickname doppelt sein darf, wollt ich mal fragen wie man das ?berpr?ft!
    Mein Formular bislang, ohne Pr?fung!

    <? include("header.inc.php"); ?>
    <center>

    <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="80%" id="AutoNumber1">
    <tr>
    <td width="100%" bgcolor="#5C6B9E"><b>
    <font face="Verdana" size="1" color="#FFFFFF">&gt; Werde Member von Partyxxl.de</font></b></td>
    </tr>
    <tr>
    <td width="100%" bgcolor="#8EBEF2"><b><font size="1" face="Verdana">
    <?php include("connect.inc.php");?>

    <?

    if ($submit == "Speichern") {

    $sql = "INSERT INTO partyxxl_members (vorname,nachname,postleitzahl,ort,strasse,hausnummer,geschlecht,geburtsdatum,nickname,text) VALUES ('$vorname','$nachname','$postleitzahl','$ort','$strasse','$hausnummer','$geschlecht','$geburtsdatum','$nickname','$text')";

    mysql_query($sql,$db);

    }?>

    <form method="post" action="<?echo $PHP_SELF;?>">
    <TABLE width="100%" height="0%" bgcolor="#8EBEF2" align="center">
    Bitte noch nicht Anmelden!!! TESTPHASE
    <TR>

    <TD>
    <font size="1" face="Verdana"><b>
    Dein Vorname

    </TD>

    <TD>

    <input type="text" name="vorname" value="" size="30" maxlength="30">

    </TD>

    </TR>
    <TR>

    <TD>
    <font size="1" face="Verdana"><b>
    Dein Nachname

    </TD>

    <TD>

    <input type="text" name="nachname" value="" size="30" maxlength="30">

    </TD>

    </TR>
    <TR>

    <TD>
    <font size="1" face="Verdana"><b>
    Postleitzahl

    </TD>

    <TD>

    <input type="text" name="postleitzahl" value="" size="5" maxlength="5">

    </TD>

    </TR>
    <TR>

    <TD>
    <font size="1" face="Verdana"><b>
    Dein Wohnort

    </TD>

    <TD>

    <input type="text" name="ort" value="" size="30" maxlength="30">

    </TD>

    </TR>
    <TR>

    <TD>
    <font size="1" face="Verdana"><b>
    Strasse

    </TD>

    <TD>

    <input type="text" name="strasse" value="" size="30" maxlength="30">

    </TD>

    </TR>
    <TR>

    <TD>
    <font size="1" face="Verdana"><b>
    Hausnummer

    </TD>

    <TD>

    <input type="text" name="hausnummer" value="" size="5" maxlength="5">

    </TD>

    </TR>
    <TR>

    <TD>
    <font size="1" face="Verdana"><b>
    Geschlecht:

    </TD>

    <TD>

    <p>
    <select name="thema" size="3">
    <option>m?nnlich</option>
    <option>weiblich</option>
    </select>
    </p>

    </TD>

    </TR>

    <TR>

    <TD>
    <font size="1" face="Verdana"><b>
    Dein Geburtsdatum in der Form 06.12.1984

    </TD>

    <TD>

    <input type="text" name="geburtsdatum" value="" size="30" maxlength="30">

    </TD>

    </TR>

    <TR>

    <TD>
    <font size="1" face="Verdana"><b>
    Nickname

    </TD>

    <TD>

    <input type="text" name="nickname" value="" size="30" maxlength="30">

    </TD>

    </TR>
    <TR>

    <TD>
    <font size="1" face="Verdana"><b>
    So, und hier kannst du dich jetzt kurz vorstellen:

    </TD>

    <TD>

    <textarea name="text" cols="30" rows="3"></textarea>

    </TD>

    </TR>

    <TR>

    <TD>

    &nbsp;

    </TD>

    <TD>

    <input type="submit" name="submit" value="Speichern">

    </TD>

    </TR>

    </TABLE>

    </form>

    </TABLE>
    <? include("footer.inc.php"); ?>

    MFG
    Sebastian
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. r********d

    Man k?nnte z.B. das Attribut Nickname zum Sekund?rschl?ssel der Tabelle machen, dann ?berpr?ft das DBMS automatisch ob ein Wert schon vorhanden ist und l??t das einf?gen eines identischen Wertes nicht zu:
    alter table partyxxl_members add unique i_nick (nickname);

    Entfernen l??t sich der Schl?ssel wieder mit:
    alter table partyxxl_members drop index i_nick;


  4. Autor dieses Themas

    pcplayers

    pcplayers hat kostenlosen Webspace.

    Also diese zeile die du da geschreiben hast einfach als sql befehl im Mysql admin einf?gen?
  5. Die Sache mit dem Prim?rschl?ssel ist toll. Die Fehlermeldung kannst du dann auch abfangen. Hier ein ganz kleines Konstrukt:
    <?php
    function mysql_die($error = "unknown")
    {
    echo "<H1>Error:". $error."</H1>";
    exit;
    }

    $db = mysql_connect("host", "user", "pass");
    mysql_select_db("db",$db) or mysql_die("Cannot Connect");;
    $requete = "SELECT * FROM tabelle WHERE user_id= wert";
    $result = mysql_query ($requete,$db) or mysql_die("No record");
    $benutzer =mysql_fetch_object($result);
    mysql_free_result($result);
    ?>

    Nur ein Beispiel eines Selects: Wichtig ist die Funktion mysql_die.
  6. Sorry, ich sagte Prim?rschl?ssel, nicht wie im post vorher Sekund?rschl?ssel. Der Prim?rschl?ssel sollte eigentlich immer unique sein. hat grosse Vorteile f?r Verkn?pfungen ?ber Felder wie z.B. eine Auftragsnummer oder Artikel usw. Ich mache haupts?chlich warenwirtschaft und meine Kunden w?rden sich im Artikelstamm ?ber doppelt vergebene Artikelnummern sehr freuen ;-) oder Auftr?ge ...
  7. r********d

    Einen Prim?rschl?ssel sollte man schon haben, aber nach M?glichkeit sollte daf?r kein Feld mit Zeichenketten (besagter Nickname) herhalten.
  8. Warum eigentlich nicht? Bei 100.000 Usern w?rd ich das ja einsehen, aber aus eigener Erfahrung: Das un?re Feld ist auch der Prim?rschl?ssel. Ich weiss , dass einige Auguren das anders sehen, aber wozu? hab ich in 10 Jahren nicht begriffen und bin gut damit gefahren. man sieht auf den ersten blick, was los ist.

    Fiese Frage: Oder willst du Datens?tze anhand einer RecNo finden?

    Nichts f?r ungut, ein Prim?rschl?ssel kann sich ja ?ber mehrere Felder erstrecken, nur eineindeutig sollte er in jedem Fall sein.

    ((Sorry wenn das bei MySQL nicht geht, dann muss ich meinem Vorposter recht geben!))
  9. r***y

    :lol:

    mano, liest ihr denn gar nix? und wer denkt bei so einem sch?nen "Anmeldeformular" an die Sicherheit ausser dem programmierer? Man sollte immer davon ausgehen, dass das formular zum Angriff benutzt werden kann, und wie ich hier den Code sehe, da passen sogar die STANDARD-F?lle hinein! :lol:

    http://de3.php.net/manual/de/security.database.php

    setzen, 6!
  10. r********d

    In MySQL kann man so ziemlich alles als Pirm?rschl?ssel auszeichnen mit Ausnahme von Text, Blob und Co. (das einzige was mySQL einfordert ist die Eindeutigkeit des Schl?ssels), aber nur weil ein SQL-Dialekt irgendetwas zul??t, hei?t es noch lange nicht, da? das auch empfehlenswert ist.
    Sowohl die Minimalit?tsfoderung f?r Prim?rschl?ssel (zu deren Einhaltung man ja seitens mySQL auch nicht gezwungen wird) als auch das Bevorzugen von numerischen Attributen beim Auszeichnen eines solchen Schl?ssels haben Performancegr?nde.
    Richtig interessant ist der Prim?rschl?ssel vor allem bei DBMS-internen Einrichtungen wie Joins, Fremdschl?sselbeziehungen u.?. und hier geht bei nicht-numerischen Schl?sseln nunmal eine Menge Dampf verloren. F?r die Anwenderseite gibt es ja noch andere Instrumente wie die schon erw?hnten Sekund?rschl?ssel, die ebenfalls eine Eindeutigkeit sicherstellen, oder auch Indizes zur Beschleunigung von Abfragen auf bestimmten Attributen.
    Sicherlich ist das alles erst bei gr??eren Datenbest?nden von Belang, aber was spricht dagegen sich schon im Kleinen einen effizienten Stil anzugew?hnen - wer wei? wof?r es mal gut ist :biggrin:
  11. Ansage verstanden, ich hab den Scheiss mal studiert und auch im Real-Life mit echten Datenbest?nden (ca. 500.000 - 20.000.000 Datens?tze) gearbeitet. Zum Dazulesen fand ich das immer toll, bestimmte Sachen in Tabellen abzulegen, wo die Felder Anfangswert -> Zielwert genauso abgelegt sind. Meiner Erfahrung nach geht das recht fix, ich habs ausgemessen. Wie gesagt, ich hab haupts?chlich Konvertierungen Comet -> SSA BPCS gemacht, es hat tadellos und performant geklappt. Ansonsten hast Du recht. Manchmal muss man aber alle f?nfe grade sein lassen...
  12. Also ich w?rd den Nicknamen in der Datenbank auf uniqid setzten. Dann eine Abfrage
    $sql="SELECT .... WHERE nickname='$nickname'";
    $result=m ysql_query($sql);
    Dann pr?fst du mit
    if(mysql_num_rows($result)!=0)
    {
    echo "Der Nickname ist bereits vorhanden!";
    }
    else
    {
    $sql="INSERT INTO ...";
    ...
    }

    Damit ?berpr?fst du, ob es einen Datensatz mit dem gleichen Nicknamen gibt. Falls j?, wird eine Fehlermeldung ausgegeben, andernfalls wird der neue Datensatz angelegt.
    Alles klar?
  13. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!