Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
komm einfach nicht weiter! [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
komm einfach nicht weiter!


 
Jump
22-10-2001, 11:27 
 
Habe ein Formular, wo man einen Namen in die Datenbank schreiben kann... ($Eingabe)
jetzt soll er diesen Namen nur dann einfügen, wenn er nicht vorhanden ist, ansonsten soll die Nachricht kommen $Fehler="Name existiert bereits!"...

Mein Problem liegt darin, was kann ich machen wenn jemand in das Eingabefeld peter, pETER, PeTeR eingeben würde und in der Datenbank Peter gespeichert ist???
Peter-Klaus ist wiederum OK! Aber danach soll bei $Eingabe="peter-klaus" auch wieder $Fehler kommen!


so viel hab ich bis jetzt und weiß nicht weiter:

$db = mysql_connect();
$res = mysql_db_query("datenbank","select name from Namen where name like '$Eingabe' ");
if (!$res)
{
$sqlab = ("insert Namen (name) values ('$Eingabe' ");
else
{
$Fehler="Name existiert bereits!";
}

Kann jemand mir ein anderes Script zeigen, wie es richtig gehört? Wäre sehr dankbar!

 
Downline
22-10-2001, 11:38 
 
Was hälst Du denn davon, wenn Du die eingaben formatierst, bevor sie in die Datenbank geschrieben werden! So das es egal ist ob Peter, peter oder PeTeR! Formatiere den Namen einfach so, das er immer klein geschrieben wird. Dann müßte es eigentlich gehen!!

 
Jump
22-10-2001, 11:54 
 
Wie mache ich das denn, wenn "PIT der King" erlaubt sein würde???
Es müßte doch eine Möglichkeit geben, bei
"select name from Name where name like '$Eingabe'",
daß er $name="Peter-Klaus" und $Eingabe="peter-klaus" als gleich erkennt oder????
Denn später bei der Ausgabe von der Datenbank soll er ja auch wieder das ausgeben was der User geschrieben hat!!! also auch "PIT der King"!Andersrum soll er wissen, daß "pIt DER kinG" bereits vorhanden ist!!!!

 
Downline
22-10-2001, 12:08 
 
Hey Jump! Also ich glaube, da hast Du keine Chance! Das einzige was mir da einfällt, ist wirklich den namen zu formatieren, so das er immer alles klein oder Groß schreibt! Damit hättest Du das Problem auf jedenfall weg! Eine unterscheidung der Schriftweise "PeTeR" oder "PIT the King" ist meines wissens jedenfalls nicht möglich! Sorry!

 
schmalle
22-10-2001, 14:00 
 
so wie dein code lautet muss es eigentlich funktionieren. teste es doch einfach mal. wenn inner db z.b. PeTer steht, müsste $Fehler funzen ...

 
Jump
22-10-2001, 14:35 
 
Also wenn ich PeTer eingebe funzt es nicht! Weil irgendwie Peter nicht PeTer ist! Also führt er denn Befehl IF (!res) "schreibe PeTer in die Datenbank" aus! Die Datenbank läst den Befehl aber nicht zu, weil UNIQUE für Namen aktiviert ist und da ist für ihn Peter gleich PeTer!!!

Darum möchte ich eine Abfrage machen, wenn Peter vorhanden egal ob pETER, PeTeR usw.geschrieben und wieder PETER genommen wird (auch egal wie geschrieben) dann Nachricht: $Fehler Name existiert bereits!

 
JoelH
22-10-2001, 14:47 
 
verwende auf beie Strings zB. http://www.php.net/manual/de/function.strtolower.php also strtolower , das wandelt einen string in kleinbuchstaben um, naja und dann vergleichen, so einfach ist das.

 
Downline
22-10-2001, 14:54 
 
Sag ich doch die ganze Zeit! Die eingaben einfach in kleinbuchstaben umwandeln und dann vergleichen! Das ist deine Möglichkeit die du hast! Einfacher wirds net!!

 
Jump
22-10-2001, 15:05 
 
Hast recht! Danke jetzt hast bei mir den Stein ins rollen gebracht!

$Vergleich = strtolower($name);
$db = mysql_connect();
$res = mysql_db_query("datenbank","select name from Namen");
$num = mysql_num_rows($res);
for ($i=0; $i<$num; $i++)
{
$an = mysql_result($res, $i, "name");
$an = strtolower($an);
if ($an==$Vergleich)
{
$Fehler="Name existiert bereits!";
}
}

Eigentlich so einfach, aber trotzdem konnt vorher keiner mir so recht helfen.

Also nochmals danke!

 
JoelH
22-10-2001, 16:50 
 
Original geschrieben von Jump

Eigentlich so einfach, aber trotzdem konnt vorher keiner mir so recht helfen.

Original geschrieben von Downline

Was hälst Du denn davon, wenn Du die eingaben formatierst, bevor sie in die Datenbank geschrieben werden! So das es egal ist ob Peter, peter oder PeTeR! Formatiere den Namen einfach so, das er immer klein geschrieben wird. Dann müßte es eigentlich gehen!!


Ich weiss ja nicht, aber die erste Antwort war eigentlich schon die richtige, oder wie ?

 
Titus
22-10-2001, 19:40 
 
1) like ist sowieso case-insensitiv ... zumindest bei mir
2) in SQL gibt´s die Funktion UPPER, also zur Not UPPER(name)=UPPER('$name') statt name like '$name'

PS: ein trim() vorneweg wär nicht schlecht!

 
Jump
23-10-2001, 07:54 
 
Downline hat mir zwar den Tip gegeben, aber nicht gezeigt, wie ich es umsetzen kann... erst mit den Link konnt ich es sehen, wie es funzt! Vorher hab ich immer verstanden man macht die Buchstaben der Eingabe klein, vergleicht und speichert sie dann so in die Datenbank. Das wollt ich dann nicht, weil die Eingabe nicht verfälscht werden sollte! Dann hab ich erst gesehen, daß nur zum vergleichen beide Daten zu Kleinbuchstaben werden und die Originaleingabe gespeichert wird!

Tja, darum haben mir die Postings vorher nicht viel gebracht.

 
Downline
23-10-2001, 08:32 
 
Ich hab Dir ja nur den Hinweis gegeben! Hättest mir gesagt, das Du nicht weißt wie! Aber Du wolltest es ja unbedingt anders machen! :(

 
Jump
24-10-2001, 07:37 
 
Sagte ja hab Dich falsch verstanden...
Dachte dies würde das Ergebnis verfälschen, weil Du nicht gesagt hast, daß ich auch den Eintrag in der Datenbank zu formatieren habe! Aber Hauptsache eine Lösung ist da!

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:57 Uhr.