Zum Inhalt springen

WICHTIG!!! Auslesen von einträgen in Datenbank


Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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" :P

lg

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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]

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :D Aber egal wie dein Code dann funktioniert, du wirst nie einen doppelten Benutzernamen in der DB haben.

Bearbeitet von JesterDay
Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...