stefan-engelke Geschrieben 6. August 2008 Teilen Geschrieben 6. August 2008 Moin Moin, habe ein kleines/großes Problem, ich komme einfach nicht weiter! Ich muss aus einer Tabelle per PHP auslesen, ob bestimmte Einträge schon vorhanden sind, sprich benutzer. Schaubild: - SQL-Server 2005, Tabelle heisst "mitglieder" - per php mache ich ein login, welches ein neu registriertes mitglied in die Datenbank schreibt, dass funktioniert auf wunderbar, allerdiengs könnte sich ein benutzer auch doppelt eintragen, und das muss vermieden werden! will bei einem doppelten eintrag halt ein echo bekommen:"Benutzer schon vorhanden". sollte der benutzer noch nicht vorhanden sein, soll er ganz normal in die Datenbank eingetragen werden, welches ja schon funktioniert. Also, kann mir jemand sagen wie ich das in php löse, dass ich ein echo bekomme ob user schon vorhanden? Schon mal vielen dank im voraus. Gruß Stefan Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Aiun Geschrieben 6. August 2008 Teilen Geschrieben 6. August 2008 pseudocode: sql: lese anzahl von user mit name x wenn anzahl größer 0 dann -> echo Fehler ansonsten -> lege user an wo ist genau dein Problem ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
stefan-engelke Geschrieben 6. August 2008 Autor Teilen Geschrieben 6. August 2008 erstmal danke für die schnelle antwort, aber so nen pseudocode hatte ich auch schon im kopf, nur diese abfrage per php... ich kriegs gerade nicht hin! und verzweifle gleich! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
4ipok Geschrieben 6. August 2008 Teilen Geschrieben 6. August 2008 hallo Stafan ^^ köntes du uns ein schnipsel aus bereits vorhanden Code geben? So könnten wir dann problem genau Erkennen und Lösung schnell schreiben. Ich könte auch ma so neben bei ins Forum schreine "Ich krieg kein CMS hin, kann wer mir den kompletten Code geben" lg Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
stefan-engelke Geschrieben 6. August 2008 Autor Teilen Geschrieben 6. August 2008 die index.php: <script type="text/javascript"> function chkformular() { if(document.formular.username.value == "") { alert("Sie müssen einen Benutzernamen angeben!"); document.formular.username.focus(); return false; } if(document.formular.passwort.value.length < 8 || document.formular.passwort.value.replace(/[^0-9]/g, '').length <= 2) { alert("Das Passwort muss aus mind. 8 Zeichen inkl. 2 Zahlen bestehen!"); document.formular.passwort.focus(); return false; } if(document.formular.passwort2.value != document.formular.passwort.value) { alert("Die eingegebenen Kennwörter sind nicht gleich!"); document.formular.passwort2.focus(); return false; } formular.submit() } </script> <body> <form name="formular" METHOD="POST" action="benutzer_anlegen.php"> Dein Username:<br> <input type="text" size="24" maxlength="50" name="username"><br><br> Dein Passwort:<br> <input type="password" size="24" maxlength="50" name="passwort"><br> Passwort wiederholen:<br> <input type="password" size="24" maxlength="50" name="passwort2"><br> <img src="./images/submit.gif" border="0" onclick="chkformular()"> </form> </body> _________________________________________________________ die benutzer_anlegen.php <?php $odbc_name = 'Logon'; $db_user = 'xxx'; $db_passwort = 'xxx'; $db = odbc_connect($odbc_name, $db_user, $db_passwort); $username = $_POST["username"]; $passwort = $_POST["passwort"]; $passwort2 = $_POST["passwort2"]; $passwort = md5($passwort); $sql = "INSERT INTO mitglieder (Benutzername , Kennwort) VALUES ('".$username."', '".$passwort."')"; $dbc = odbc_exec($db, $sql); if ($dbc == false) { $strErrorMessage = odbc_errormsg($db); echo "<b>".($strErrorMessage)."</b>"."<br>"."<br>"; } odbc_close($db); echo ("Der Benutzer ".$username." wurde erstellt "); ?> ___________________________________________________ Ich will jetzt halt vorweg eine ausgabe haben, ob ein benutzer schon vorhanden ist. danke schonmal im voraus, aber ich selber kriegs irgendwie nicht hin Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
4ipok Geschrieben 6. August 2008 Teilen Geschrieben 6. August 2008 Ich will jetzt halt vorweg eine ausgabe haben, ob ein benutzer schon vorhanden ist. danke schonmal im voraus, aber ich selber kriegs irgendwie nicht hin <?php $odbc_name = 'Logon'; $db_user = 'xxx'; $db_passwort = 'xxx'; $db = odbc_connect($odbc_name, $db_user, $db_passwort); $username = $_POST["username"]; $passwort = $_POST["passwort"]; $passwort2 = $_POST["passwort2"]; $passwort = md5($passwort); $sql = "SELET `Benutzername` FROM `mitglieder` WHERE `Benutzername` = '".$username."' ;)"; $dbc = odbc_exec($db, $sql); //hier muste dann $dbc verarbeiten und ($result) mit TRUE setzen wenn nichts ausgegeben wird //da ich mich nur in MySQL auskenne mach ich nur komentare ^^ if($result) { $sql = "INSERT INTO `mitglieder` (`Benutzername` , `Kennwort`) VALUES ('".$username."', '".$passwort."') ;"; $dbc = odbc_exec($db, $sql); if ($dbc == false) {$strErrorMessage = odbc_errormsg($db); echo "<b>".($strErrorMessage)."</b>"."<br>"."<br>"; } echo ("Der Benutzer ".$username." wurde erstellt "); } else { echo ("Der Benutzer ".$username." ist bereits vorhanden "); } odbc_close($db); ?>[/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
stefan-engelke Geschrieben 6. August 2008 Autor Teilen Geschrieben 6. August 2008 Vielen Dank für die Hilfe, habe zwar noch keine konkrete Lösung, aber ich arbeite dran. Falls noch jemandem etwas einfällt, immer her damit, würde mir mit sicherheit viel zeit sparen. ;- D Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
4ipok Geschrieben 6. August 2008 Teilen Geschrieben 6. August 2008 versuch ma das <?php $odbc_name = 'Logon'; $db_user = 'xxx'; $db_passwort = 'xxx'; $db = odbc_connect($odbc_name, $db_user, $db_passwort); $username = $_POST["username"]; $passwort = $_POST["passwort"]; $passwort2 = $_POST["passwort2"]; $passwort = md5($passwort); $sql = "SELET `Benutzername` FROM `mitglieder` WHERE `Benutzername` = '".$username."' ;)"; $buffer = odbc_exec($db, $sql); $result = array(); while(odbc_fetch_row($buffer)) { $field1 = odbc_result($buffer, "username") $field2 = odbc_result($buffer, "passwort") $result[] = compact('$field1', '$field2') } if(count($result) >= 1) { $sql = "INSERT INTO `mitglieder` (`Benutzername` , `Kennwort`) VALUES ('".$username."', '".$passwort."') ;"; $dbc = odbc_exec($db, $sql); if ($dbc == false) {$strErrorMessage = odbc_errormsg($db); echo "<b>".($strErrorMessage)."</b>"."<br>"."<br>"; } echo ("Der Benutzer ".$username." wurde erstellt "); } else { echo ("Der Benutzer ".$username." ist bereits ".count($result)." mal vorhanden "); } odbc_close($db); ?> [/PHP] lg Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 6. August 2008 Teilen Geschrieben 6. August 2008 Es würde sich auch anbieten, die Datenbank Schnittstelle noch einmal via ADODB zu kapseln. Ebenso sollte das $_POST noch über isset geprüft werden. Den select würde ich so formulieren "select count(*) as anzahl from mitglieder where benutzername=?". Das ? wird dann über ADODB passend gequoted und der Select liefert immer ein definiertes Ergebnis was dann mit if (($result) && (!$result->EOF)) if ($result->fields["anzahl"] == 0) user nicht vorhanden else user vorhanden else datenbankfehler [/PHP] passend verarbeitet werden kann HTH Phil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
stefan-engelke Geschrieben 6. August 2008 Autor Teilen Geschrieben 6. August 2008 Vielen Dank nochmals für die viele hilfe, konnte mich leider noch nicht wirklich voran bringen, arbeite jetzt erst nochmal n bischen mit stylesheets und mach dann irgendwann feierabend, morgen mach ich mich nochmal bei! werde dann wenn ich schlauer bin und eine für mich passable lösen habe sie bekannt geben. schönen tag wünsche ich!!! cu stefan Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Aiun Geschrieben 6. August 2008 Teilen Geschrieben 6. August 2008 du hast hier im prinzip fertigen quellcode bekommen, Wenn du ein Problem hast, solltest du schon schreiben welches, Fehlermeldung ?, "was" funktioniert nicht ? "was" hast du schon ausprobiert ? (hat jemand den link zu "wie Fragen richtig stellen" ?) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 6. August 2008 Teilen Geschrieben 6. August 2008 (hat jemand den link zu "wie Fragen richtig stellen" ?) Dem Wunsch komme ich doch gleich mal nach: Wie man Fragen richtig stellt: eine Anleitung wie man Fragen erfolgreich in Usenet, Mailing Listen und Webforen stellt. Kommt leider im Moment viel zu häufig vor, dass man diese Seite zitieren muss Phil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
stefan-engelke Geschrieben 7. August 2008 Autor Teilen Geschrieben 7. August 2008 Was ich haben will: nachdem sich ein Benutzer registriert hat möchte ich, dass ein script überprüft, ob dieser Benutzername in der Datenbank schon vorhanden ist. Gibt es den Benutzer xyz schon in der Datenbank soll mir das scirpt ausgeben "Benutzername schon vorhanden", gibt es den Benutzer xyz noch nicht in der Datenbank, soll der Benutzer angelegt werden(Was auch schon funktioniert) und die Meldung "Benutzer xyz wurde erfolgreich registriert" ausgegeben werden. Ich hoffe das war deutlich genug erklärt, auch wenn ich nicht den artikel über das korrekte stellen von fragn gelesen habe. nochmal kurz gesaagt: wenn Benutzer vorhanden --> gib meldung "benutzer vorhanden" anderen benutzernamen wenn Benutzer nicht vorhanden --> lege benutzer an gib meldung "benutzer wurde angelegt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 7. August 2008 Teilen Geschrieben 7. August 2008 (bearbeitet) nochmal kurz gesaagt: wenn Benutzer vorhanden --> gib meldung "benutzer vorhanden" anderen benutzernamen wenn Benutzer nicht vorhanden --> lege benutzer an gib meldung "benutzer wurde angelegt Nochmal kurz erklärt: # Benutzer registrierung # Parameter: Benutzername, Passwort SQL Abfrage: Select BenutzerID From Mitglieger Where name = Benutzername BenutzerId zurückbekommen? Ja: Meldung: Nix gibt's, such dir nen anderen Namen! Nein: SQL: Insert into Mitglieder ... bla bla...; Herzliche Willkommen Benutzer 'Benutzername' Nochwas: Ganz einfach verhinderst du einen doppelten Eintrag, indem du einen Unique Constrain auf den Benutzernamen legst Dann musst du nur aus der Fehlermeldung ableiten was denn schief gegangen ist Aber egal wie dein Code dann funktioniert, du wirst nie einen doppelten Benutzernamen in der DB haben. Bearbeitet 7. August 2008 von JesterDay Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
OptFreak Geschrieben 7. August 2008 Teilen Geschrieben 7. August 2008 Du kannst das ganze auch Datenbankseitig lösen in dem du den username als unique definierst. Damit würde das insert statement fehl schlagen. Mit der Abfrage ist allerdings die Fehlermeldung besser bestimmbar. Wenn du ganz cool bist Fragst du nach eintragen des Usernames ins Formularfeld per xmlHttpRequest(Ajax) ab ob dieser schon existiert, und markierst den dan rot oder so. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.