Antworten auf deine Fragen:
Neues Thema erstellen

Erledigt - Nachname aus datenbank bei Ausgabe Abkürzen

ackermaennchen

Normalo

Teammitglied
Hi gibt es eine Möglichkeit den ausgelesenen Nachnamen aus ner Datenbank bei der Ausgabe abzukürzen?
z.B wenn ich ihn in der Tabelle anzeigen Lasse statt Enrico Ackermann dann nur Enrico A. anzeigen lassen kann?
 

Myhar

Hat es drauf

Natürlich gibt es die Möglichkeit. Wenn du die Daten aus der Datenbank holst kannst du alles damit machen was du willst bevor du sie im HTML anzeigst. Du kannst zB nur den ersten Buchstaben von einem String (dem Nachnamen) anzeigen lassen. Oder Groß- und Kleinschreibung modifizieren. Was auch immer du magst. Du hast das Ergebnis der DB Abfrage ja bestimmt in einer Variable gespeichert. Die modifizierst du nach deinen Wünschen.
 

ackermaennchen

Normalo

Teammitglied
Das klingt ja schon mal super. Hättest du evtl einen link oder Hinweis wie ich das dann anstelle bin bisher mit meiner Suche nicht weit gekommen.
 

draupnir

Moderator

Teammitglied
Da wirst Du wohl was programmieren müssen, sei es in PHP oder Javascript oder in der Programmiersprache, die zur Datenbank gehört. Dafür bräuchte man dann jedoch schon ein paar mehr Infos ;-)
– jens.
 

buerzel

Versuch macht kluch!

Teammitglied
... wenn ich ihn in der Tabelle anzeigen Lasse statt Enrico Ackermann dann nur Enrico A. anzeigen lassen kann?
...
Hättest du evtl einen link oder Hinweis wie ich das dann anstelle bin bisher mit meiner Suche nicht weit gekommen.
Schau dir mal die String-Funktionen in SQL an:
http://download.nust.na/pub6/mysql/doc/refman/5.1/de/string-functions.html

Sollte es je ein Feld Vorname und Nachname geben, wäre es relativ simpel:

SELECT Vorname&" "& LEFT(Nachname,1)&"." FROM [deine Tabelle]; (gibt alle Namen in gewünschter Form aus)


Wenn ein Feld Name jedoch Vor- und Nachname enthält, muss die Position des Leerzeichens mit INSTR ermittelt werden. Das sähe dann so aus:

SELECT LEFT(Name,INSTR(Name," ")+1)&"." FROM [deine Tabelle];

PS: Zum Selektieren eines einzelnen Datensatzes gehört die WHERE Klausel natürlich noch ans Ende des SQL Statements:


... WHERE Nachname="Ackermann";

oder


... WHERE Name=" Enrico Ackermann";

TIPP: Zum Testen solcher SQL Abfragen eignet sich diese, mit einer Beispiel-Datenbank versehene, Seite:

https://www.w3schools.com/sql/trysql.asp?filename=trysql_asc
 
Zuletzt bearbeitet:

owieortho

Aktives Mitglied

Wenn ein Feld Name jedoch Vor- und Nachname enthält, muss die Position des Leerzeichens mit INSTR ermittelt werden. Das sähe dann so aus:

SELECT LEFT(Name,INSTR(Name," ")+1)&"." FROM [deine Tabelle];
... was wiederum zeigt, wie sinnvoll es ist, bei Datenbanken auf ein ordentliches Design zu achten. Denn Leerzeichen stehen auch zwischen all den Vornamen, die sich Eltern so ausdenken. Andernfalls würde der zweite Vorname abgekürzt.

O.
 

ackermaennchen

Normalo

Teammitglied
Danke @buerzel werd mir das die Tage mal anschauen. Ja Gott sei dank hab ich ne eigene Spalte für Vor und Nachnamen.

Mhh werd da nicht schlauer, hab es jetzt über den Testeditor probiert, auch nach einlesen in den Funktionen die du verlinkt hattest.
ich bekomme immer die Ausgabe als Popup: could not prepare statement (1 near "(": syntax error)

Egal wie ich was mache. Ausgabe über SELECT firstname, lastname from [employee] funktioniert, sowie ich aber das LEFT hinzufüge mit den Klammern ob mit oder ohne & gehts nicht.
 
Zuletzt bearbeitet:

owieortho

Aktives Mitglied

In der Regel findet sich der Fehler genau vor dem in der Fehlermeldung angezeigten Teil des Codes. In Deinem Fall also links von der öffnenden Klammer.

O.
 

buerzel

Versuch macht kluch!

Teammitglied
Ausgabe über SELECT firstname, lastname from [employee] funktioniert, sowie ich aber das LEFT hinzufüge mit den Klammern ob mit oder ohne & gehts nicht.
Kopier das mal rein:

SELECT firstname&" "& LEFT(lastname,1)&"." FROM [employees];

- 100%-ig ein Eingabefehler deinerseits. :nick:

PS: Übrigens werden die eckigen Klammern beim Tabellenname nicht benötigt ...
 

ackermaennchen

Normalo

Teammitglied
PHP:
function getCompleteName($uid)
{
    require("./asset/mysql.php");
    $user = $mysql->prepare("SELECT vorname, nachname FROM user WHERE userid = :userid");
    $user->bindParam(":userid", $uid);
    $user->execute();
    $userVorname = "";
    $userNachname = "";
    foreach ($user as $user) {
        $userVorname = $user['vorname'];
        $userNachname = $user['nachname'];
        $userGesamt = $userVorname." ".$userNachname;
    }
    return $userGesamt;
}

Das wäre meine function um den Namen auszulesen und wird per
PHP:
  echo "<td><a href='index.php?page=profil&uid=".$sql[$i]['spieler1']."'>
                          ".getCompleteName($sql[$i]['spieler1'])."</a>
                          </td>
dann in den Kalender eingefügt.
 

buerzel

Versuch macht kluch!

Teammitglied
So einmal kopiert und eingegeben die Fehlermeldung bleibt die gleiche
Habe den „Fehler” gefunden. Mein Browser ist FF - und da funktioniert es, weil eine andere SQL Version als in Chrome, Safari, Opera und Edge verwendet wird. Das dort verwendete WebSQL scheint ne „Macke” zu haben und wird wohl auch nicht weiterentwickelt ...
 
Zuletzt bearbeitet:

buerzel

Versuch macht kluch!

Teammitglied
Gar nicht! Musste FF installieren bzw. benutzen. Wie ich gelesen habe, wird es keine weitere Verwendung von WebSQL mehr geben (so steht es auch bei w3schools zu lesen).
 

ackermaennchen

Normalo

Teammitglied
Nagut dann muss man ne andere Option finden, kann ja schlecht die Website nur FF Usern aufrufbar machen :confused:
Ich google mir schon n wolf aber irgendwie werd ich nicht schlauer.
 

ackermaennchen

Normalo

Teammitglied
Ok, ich hab jetzt was gefunden

https://code.urban-base.net/blog/php-tutorial-text-kuerzen-funktion/

aber irgendwie bin ich zu blöd das hierdrauf anzuwenden. :oops:

PHP:
function getCompleteName($uid)
{
    require("./asset/mysql.php");
    $user = $mysql->prepare("SELECT vorname, nachname FROM user WHERE userid = :userid");
    $user->bindParam(":userid", $uid);
    $user->execute();
    $userVorname = "";
    $userNachname = "";
    foreach ($user as $user) {
        $userVorname = $user['vorname'];
        $userNachname = $user['nachname'];
        $userGesamt = $userVorname." ".$userNachname;
    }
    return $userGesamt;
}

Das wäre meine function um den Namen auszulesen und wird per
PHP:
  echo "<td><a href='index.php?page=profil&uid=".$sql[$i]['spieler1']."'>
                          ".getCompleteName($sql[$i]['spieler1'])."</a>
                          </td>
dann in den Kalender eingefügt.
 

Myhar

Hat es drauf

Nagut dann muss man ne andere Option finden, kann ja schlecht die Website nur FF Usern aufrufbar machen :confused:
Ich glaube du hast da etwas grundsätzlich falsch verstanden, bzw ihr redet aneinander vorbei.
Die implementation die verlinkt wurde basiert auf WebSQL, etwas was nicht mehr weiterentwickelt wird. Das dient auch lediglich zu Testzwecken im Browser. Du möchtest auf deiner Website aber keine Datenbank für den User zur Verfügung stellen die der User im Browser abfragen kann. Du möchtest mit PHP deine SQL Anweisungen ausführen. Das funktioniert auch weiterhin wie immer.
Nur eben nicht im Browser wie auf der Beispielseite. Dort geht es nur mit Firefox.
Du brauchst also keine Sorgen haben dass dein SQL dann irgendwo nicht funktioniert, schließlich führst du es nicht im Browser aus.
 

ackermaennchen

Normalo

Teammitglied
Ok, dann hab ich das falsch verstanden, aber ich check es noch immer nicht wie ich das jetzt alles umsetzen kann/muss.

Ich hab ja oben die funktion den kompletten namen auszulesen und anzuzeigen. das versteh ich auch wie es funktioniert.
Aber ich check nicht wie ich das jetzt umschreiben muss um den Nachnamen dann zu kürzen.
 

buerzel

Versuch macht kluch!

Teammitglied
Es ist doch ganz einfach: Die SQL Abfrage liefert dir bereits den gesamten Namen in der gewünschten gekürzten Form. Also braucht man keinen Namen mehr zusammensetzen und die Schleife ist mir sowieso ein Rätsel, da nur ein Datensatz geliefert wird. Somit ist Alles, was in der Funktion nach

$user->execute();

kommt, bis auf das

return $userGesamt;

überflüsssig und kann gleich mit

return $user;

ersetzt werden.
 

ackermaennchen

Normalo

Teammitglied
Es ist doch ganz einfach: Die SQL Abfrage liefert dir bereits den gesamten Namen in der gewünschten gekürzten Form.
wie? ich geb ihm ja nicht die Anweisung zum kürzen.

Es ist doch ganz einfach: Die SQL Abfrage liefert dir bereits den gesamten Namen in der gewünschten gekürzten Form. Also braucht man keinen Namen mehr zusammensetzen und die Schleife ist mir sowieso ein Rätsel, da nur ein Datensatz geliefert wird. Somit ist Alles, was in der Funktion nach

$user->execute();

kommt, bis auf das

return $userGesamt;

überflüsssig und kann gleich mit

return $user;

ersetzt werden.
Hab ich versucht... dann zeigt er gar keine Namen an.

Ich hab die function nicht selbst geschrieben sondern n Kumpel. funktioniert ja so auch. Bei der Tabelle ist es auch ok, allerdings hätt ich aus Platzgründen beim Kalender eben die abgekürzte Version. Gerade auf Mobilen Geräten Hatte gehofft das ich das selber hinbringe weil ich ihn nicht ständig nerven möchte. Im Moment kommt er nicht so recht zum Programieren.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
118.611
Beiträge
1.538.341
Mitglieder
67.524
Neuestes Mitglied
BSKGA
Oben