Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

WICHTIG!!! Auslesen von einträgen in Datenbank

Empfohlene Antworten

Veröffentlicht

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

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 ?

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!

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

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

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]

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

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

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

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

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" ?)

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

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

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.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.