SQL mit bestimmten Werten anders ausgeben

jatop

Mitglied
Halllo,

1. wenn in der SQL-Datenbank ein Wert gefunden wurde, soll nicht der ausgegeben werden sondern ein anderer.

Das Beispiel:
Wert: verifiziert:
Ersetztes Wort: Konto wurde verifiziert

2. zum größeren Problem:

In der Datenbank stehen Ländercodes, ich will allerdings, dass nicht die Ländercodes ausgelesen werden sondern das Land. Dazu wäre ein array glaube ich sehr angebracht.
(Leider werde ich beim php Manual erschlagen)

Denk da an diese Form, weiss blos nicht wie ich sie einbauen soll:

PHP:
<?
$land = array("de"=>"Deutschland",
"ch"=>"Schweiz",
"at"=>"Österreich";
?>

Aktuell wird der Wert einfach per Abfrage ausgegeben:
PHP:
<?=$sql['land'];?>
Also ohne Änderung.
 
In der Datenbank stehen Ländercodes, ich will allerdings, dass nicht die Ländercodes ausgelesen werden sondern das Land. Dazu wäre ein array glaube ich sehr angebracht.
(Leider werde ich beim php Manual erschlagen)

In der Tabelle wird es doch ein Feld für das Länderkürzel und die Länderbezeichnung geben oder? Wenn Du also nur die Bezeichnung willst.....frag nur dieses Feld ab bzw. gib nur den Wert dieses Feldes aus. Dafür brauchste kein extra Array etc. Oder hab ich da was falsch verstanden?
 
Zur zweiten Frage:
PHP:
$land = array("de"=>"Deutschland",
"ch"=>"Schweiz",
"at"=>"Österreich";

echo $land[$sql['land']];

Übrigens solltest du auf die Kurzschreibweise <?=$variable?> verzichten und lieber <?php echo $variable; ?> benutzen.

Zur ersten Frage: warum löst du das nicht mit einer if-Abfrage?
PHP:
if(strtolower($wert) == 'verifiziert')
{
    echo 'Der Benutzer wurde verifiziert';
}
 
Zur zweiten Frage:
PHP:
$land = array("de"=>"Deutschland",
"ch"=>"Schweiz",
"at"=>"Österreich";

echo $land[$sql['land']];
ich bekomme den Fehler
Parse error: parse error, unexpected ';', expecting ')'
(In Zeile bei Österreich)

ich habe es an die Stelle gepackt, wo erst der
PHP:
 <?=$sql['land'];?>
Befehl war.

Übrigens solltest du auf die Kurzschreibweise <?=$variable?> verzichten und lieber <?php echo $variable; ?> benutzen.

Und warum nicht? Gibt es da genau einen so guten Grund, wie bei dem Thema wieso man Select * nicht nehmen soll? (nehm ich trotzdem! *lol*)

Zur ersten Frage: warum löst du das nicht mit einer if-Abfrage?
PHP:
if(strtolower($wert) == 'verifiziert')
{
    echo 'Der Benutzer wurde verifiziert';
}

Okay!
 
Das Array ist nicht geschlossen. Daher Parserror..

PHP:
$land = array("de"=>"Deutschland", 
"ch"=>"Schweiz", 
"at"=>"Österreich");

Aber mir ist nach wie vor schleierhaft warum Du das ganze etxra in ein Array packen willst wenn das ganze aus einer DB kommt.

Kurzschreibweise sollte man vermeiden da es auf gewissen Systemen nicht laufen kann. Blöd wenn Du Dein Projekt mal umziehen willst und alles neu/umschreiben musst. Aber wieso einfach wenns umständlich geht ;)

"SELECT *" ist halt weniger performant als bestimmte Felder direkt zu wählen....deswegen funktioniert es aber trotzdem. Für kleine Projekte ist das sicher total egal..aber wenns größer wird mit x tausend Zugriffen ist sowas durchaus relevant.
 
Zuletzt bearbeitet:
Das Array ist nicht geschlossen. Daher Parserror..
Aber mir ist nach wie vor schleierhaft warum Du das ganze etxra in ein Array packen willst wenn das ganze aus einer DB kommt.

Hast du meinen ersten Beitrag nicht gelesen?
Ich zitiere mich mal selber, habe alle wichtigen Wörter fett markiert.
jatop hat gesagt.:
In der Datenbank stehen Ländercodes, ich will allerdings, dass nicht die Ländercodes ausgelesen werden sondern das Land. Dazu wäre ein array glaube ich sehr angebracht.

zum glauben: Da kannst du mir ins Gewissen reden, wenn meine Vermutungen als newbie nicht ganz zutreffend ist. Ich habe ja nicht geschrieben, dass ich genau die nutzen will oder dass ich Vorschläge ablehne.

Hast du andere Vorschläge? Was für alternativen habe ich?
Bedenke: Wenn ich eine englische Seite machen will, müssen die Werte also englisch sein. Also bringt es nichts, das Land ausgeschrieben zu speichern oder nur den Ländercode auszulesen.

Aber dazu werde ich nachher meine neue Frage stellen.

Kurzschreibweise sollte man vermeiden da es auf gewissen Systemen nicht laufen kann. Blöd wenn Du Dein Projekt mal umziehen willst und alles neu/umschreiben musst. Aber wieso einfach wenns umständlich geht ;)

Liegt dies an der PHP-Version oder an der Einschränkung der php.ini?
Seit welcher PHP-Version gibt es die? Ist die Kurzschreibweise eine Variante die bald aussterben wird? Wenn ja, werde ich umgehend alles abändern.
 
Es liegt an der PHP Konfig des jeweiligen Servers soweit ich weiß. Nicht jeder erlaubt Kurzschreibweise. Um solche Probleme zu vermeiden würde ich einfach davon abraten.

Zu den Werten in der DB. Normalerweise sollte es in der Tabelle Felder für die Kürzel und die Bezeichnung geben. Wenn zusätzlich noch Englisch benötigt wird dann halt auch noch Felder für die Englische Bezeichnung. Also quasi eine Tabelle laender mit den Feldern id, kuerzel, bezeichnung_de, bezeichnung_en zum Beispiel.

PHP:
$query = "SELECT * FROM laender"; #Ohne Sortierung alle wählen
$result = mysql_query($query);
while($inhalt = mysql_fetch_array($result))
{
     #Je nach dem was Du jetzt haben willst sprichst Du die Felder direkt mit Namen an.

     #Für Bezeichnung deutsch
     print $inhalt["bezeichnung_de"];

     #Für das Kürzel
     print $inhalt["kuerzel"];

     #etc.
}
 
Zu den Werten in der DB. Normalerweise sollte es in der Tabelle Felder für die Kürzel und die Bezeichnung geben.

Ja, diesbezüglich habe ich es mir vorgenommen, ein paar CMS-Systeme und andere mehrsprachige Systeme anzuschauen, aber irgentwie keine wirklich große lust dazu.


Wenn zusätzlich noch Englisch benötigt wird dann halt auch noch Felder für die Englische Bezeichnung. Also quasi eine Tabelle laender mit den Feldern id, kuerzel, bezeichnung_de, bezeichnung_en zum Beispiel.

PHP:
$query = "SELECT * FROM laender"; #Ohne Sortierung alle wählen
$result = mysql_query($query);
while($inhalt = mysql_fetch_array($result))
{
     #Je nach dem was Du jetzt haben willst sprichst Du die Felder direkt mit Namen an.

     #Für Bezeichnung deutsch
     print $inhalt["bezeichnung_de"];

     #Für das Kürzel
     print $inhalt["kuerzel"];

     #etc.
}

thx, werde den Code mal in meine Quellensammlung kopieren.

erst einmal: LOL! Du benutzt etwa auch Select *?

Nicht, dass du auch die Kurzschreibweise verwendest, wovon mir abgeraten wird.

Nochetwas dazu: Das Script, welches ich bearbeite hatte ich mir teuer ersteigert und war nur zu entäuscht. Wurde IHMO von 3 "Agenturen" gebastelt. (Mehr Infos gibt es nicht)

Englisch war einer der folgenden Sprachen, ich brauche mehr Sprachen... und ich denke dann wird die Datenbank sehr groß. Werde aber dazu ein anderes Thema eröffnen, um Ordnung zu schaffen, da dies Thema fast abgeschlossen ist.

Also die letzten Frage:
du benutzt print? ich benutze nur echo. Oder gibt es auch da wieder Probleme?

Es liegt an der PHP Konfig des jeweiligen Servers soweit ich weiß. Nicht jeder erlaubt Kurzschreibweise.

Ist das eine Funktion? Wie heißt diese?
Die sehe ich bestimmt in der phpinfo mit drin.
 
Klar verwende ich "select *", wie gesagt bei kleinen Projekten kein Problem. Aber man sollte idR schon immer direkt die Felder ansprechen wenn man weiß was man genau haben will. Hier handelt es sich ja nur um ein Beispiel.


Zum Thema echo oder print -> http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40 oder http://forum.de.selfhtml.org/archiv/2003/11/t64188/


Die Info zur Shorttag Einstellung ist "short_open_tag". Korrigiert mich wenn ich hier falsch liege.


Zur Datenbankgröße und verschiedenen Sprachen. Von der Größe ist sowas kein Thema...sind ja nur paar Strings. Das fällt kaum ins Gewicht.
 
Zurück