php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.11.2011, 20:56  
Benutzer
 
Registriert seit: 06.11.2009
Beiträge: 61
PHP-Kenntnisse:
Anfänger
knuffiwuffi befindet sich auf einem aufstrebenden Ast
Standard msql select wenn bedingung / variable zutrifft

Hallo zusammen,

ich hatte die Lösung schon einmal, leider bekomme ich es trotzt Netz Recherche nicht mehr zusammen. Ich habe eine globale Variable '[language_active]' die je nach eingestellter Sprache "de" oder "en_us" zurück gibt.

Nun soll ausschließlich der SELECT Befehl ausgeführt werden, wo die Bedingung zutrifft. Habe schon einige Ansätze probiert, klappt leider nicht. Das ganze soll ein reiner SQL Befehl werden und ggf. kommen später noch mehr Sprachen dazu:

Code:
IF ('[language_active]' = "en_us")
THEN
SELECT db_event_xcore_language_id, language_EN_US FROM db_event_xcore_language;

ELSEIF ('[language_active]' = "de")
THEN
SELECT db_event_xcore_language_id, language_DE FROM db_event_xcore_language;

END IF;
schöner wäre etwas in folgender Form:

Code:
CASE '[language_active]'
WHEN "de" THEN (SELECT...)
WHEN "en_us" THEN (SELECT...)
Würde mich wahnsinnig freuen, wenn mir jemand die Richtung zeigen könnte. Wie Ihr sicher erkennen könnt, bin ich nicht sonderlich gut in meinem Bestreben SQL Befehle zu schreiben.

Hintergrund:
Für die Mehrsprachigkeit meiner Applikation musste ich überlegen wie ich die unterschiedlichen Sprachen sauber in der Datenbank hinterlege.

Mein erster Ansatz

id / language_code / status
1 / de / aktiv
2 / en_us / active

Mein derzeitiger und favorisierter Ansatz

id / status_EN_US / status_DE
1 / active / aktiv

Gruß...
knuffiwuffi ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 18.11.2011, 21:01  
Erfahrener Benutzer
 
Registriert seit: 03.08.2010
Beiträge: 1.140
PHP-Kenntnisse:
Anfänger
hausl wird schon bald berühmt werdenhausl wird schon bald berühmt werden
Standard

Zitat:
Ich habe eine globale Variable '[language_active]' die je nach eingestellter Sprache "de" oder "en_us" zurück gibt.
Ist das eine PHP-Variable?
__________________
Keine Zahl != ein Zeichen das keine Zahl ist
hausl ist offline   Mit Zitat antworten
Alt 18.11.2011, 21:04  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Code:
SELECT
  foo ,
  IF(Bedingung , Feld1 , Feld2) AS ZielFeldname
FROM
  bar
Das DB-Design ist aber Murx. Gleiche Daten gehören in die gleiche Spalte. Dein erster Ansatz war richtig. Dann bräuchtest Du nur eine WHERE Bedingung.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 18.11.2011, 21:20  
Benutzer
 
Registriert seit: 06.11.2009
Beiträge: 61
PHP-Kenntnisse:
Anfänger
knuffiwuffi befindet sich auf einem aufstrebenden Ast
Standard

Die Variable wird so durch mein PHP Programm bezeichnet. Sieht etwas seltsam aus, ist aber eine globale Variable.

Hat sich erledigt...werde deinen Rat befolgen und meinen ersten Ansatz verfolgen...

Geändert von knuffiwuffi (18.11.2011 um 22:37 Uhr).
knuffiwuffi ist offline   Mit Zitat antworten
Alt 23.11.2011, 10:42  
Neuer Benutzer
 
Registriert seit: 18.08.2009
Beiträge: 20
PHP-Kenntnisse:
Fortgeschritten
anbei befindet sich auf einem aufstrebenden Ast
Standard

Mal so spontan mein Ansatz:

PHP-Code:
CREATE TABLE textdb (
`
idINT11 NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`
deVARCHAR256 NULL ,
`
en_usVARCHAR256 NULL
ENGINE MYISAM 

INSERT INTO textdb 
(
de,
en_us
)
VALUES (
'aktiv''active'
); 
PHP-Code:
<?php
function TextModule $nId ) {
        if ( 
is_numeric $nId) && $nId ) {
            
$szSql "SELECT ".$GLOBALS 'language_active' ]." FROM textdb WHERE id = '".$nId."'";
            
$szText mysql_result mysql_query $szSql ) , );
            return 
$szText ;  
        } else {
            return 
$nId ;
        }
}
echo 
TextModule );
?>
anbei ist offline   Mit Zitat antworten
Alt 23.11.2011, 13:18  
Benutzer
 
Registriert seit: 06.11.2009
Beiträge: 61
PHP-Kenntnisse:
Anfänger
knuffiwuffi befindet sich auf einem aufstrebenden Ast
Standard

@Anbei
Danke für deine Hilfe...ich bin nun doch auf meinen ersten Ansatz zurück gekommen. Das SELECT Problem stellt sich also nicht mehr.

Nur bei Daten die zwingend zusammen gehören, schreibe ich die unterschiedlichen Sprachen in eine Zeile und lagere die Informationen nicht in einen neuen Table aus. Ein Beispiel sieht so aus:

id / titel veranstaltung DE / titel veranstaltung EN US / zeit / ort
1 / Springen / Jumping / 2011-11-11 / Deutschland

Ich hoffe das spricht nicht gegen ein gutes Datenbank Design
knuffiwuffi ist offline   Mit Zitat antworten
Alt 23.11.2011, 13:34  
Neuer Benutzer
 
Registriert seit: 18.08.2009
Beiträge: 20
PHP-Kenntnisse:
Fortgeschritten
anbei befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von knuffiwuffi Beitrag anzeigen
Ich hoffe das spricht nicht gegen ein gutes Datenbank Design
Grundsätzlich leider ja. Schau dir mal das Thema Normalformen an.

Normalform auf Wikipedia

z.B. für den Ort wäre das angebracht. Da könntest du dann auch die Sprache parken.
anbei ist offline   Mit Zitat antworten
Alt 24.11.2011, 01:38  
Erfahrener Benutzer
 
Registriert seit: 01.12.2009
Beiträge: 109
PHP-Kenntnisse:
Anfänger
Dreamwatcher befindet sich auf einem aufstrebenden Ast
Standard

Eigentlich nicht einmal dann. Ordentlich wäre es, wenn der Ort als Foreign Key den Primary Key der Sprache besäße, sonst bist du wieder bei der Redundanz.

also wäre der aufbau eher so:
Code:
Veranstaltungen:
id	|titel_text	|zeit		|ort_fk
___________________________________________________
1	|74		|2011-11-11	|3

Texte:
id	|text_id|sprache_fk	|text
___________________________________________________
120	|74	|1		|Springen
121	|74	|2		|Jumping

Sprachen:
id	|sprache	|kurz
___________________________________________________
1	|Deutsch	|de
2	|Amerikanisch	|en-us

Orte:
id	|Ort	|PLZ	|ort_sprache_fk
___________________________________________________
3	|...	|00000	|1

Ort - Sprache:

id	|ort_fk	|sprache_fk
___________________________________________________
1	|3	|1
2	|3	|2
usw...

Dadurch sind zwar die Queries länger, aber das sollte einen eigentlich nicht hindern...
Dreamwatcher ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Ausgabe erfolgt nicht Extremefall PHP Tipps 2009 17 17.12.2009 19:51
Select WHERE Select J_Jara Datenbanken 4 01.12.2009 20:08
Variable in Select als column Shade1964 Datenbanken 6 30.10.2009 22:56
[Erledigt] INSERT ... SELECT - nicht alle Spalten aus dem Select benutzen? kip Datenbanken 4 01.09.2009 13:06
[Erledigt] 2 Select-Abfragen in eine Variable speichern TheMav Datenbanken 3 18.06.2009 00:29
[Erledigt] Select * where in (Select ...) Geschwindigkeitsproblem Wolla Datenbanken 14 20.05.2009 15:16
SQL select fehlerhafte Resultate. Ist PHP 64 Bit das Problem? peterw Server, Hosting und Workstations 6 21.04.2009 09:19
[Erledigt] Wie Wert aus SELECT in Variable speichern oder SQL Syntax? rick7401 Datenbanken 4 06.09.2008 06:29
[Erledigt] Kein Ergebnis bei SELECT (MySQL 4.1.9) dr.e. Datenbanken 4 15.06.2008 19:54
[JavaScript] Event Handler in form select - Syntax? winfo_cologne HTML, Usability und Barrierefreiheit 5 29.03.2006 16:47
SELECT um eine Bedingung erweitern ?! Datenbanken 2 22.10.2005 10:09
Warum wird Variable nicht übergeben??? Anuschka PHP Tipps 2005 2 06.01.2005 13:22
2 Schleifen durchlaufen PHP Tipps 2004 1 14.09.2004 14:33
Nach Select direkt einer Variable übergeben? Paulo PHP Tipps 2004 1 04.09.2004 15:00
[Erledigt] 2 mal select 1 form PHP-Fortgeschrittene 1 01.09.2004 20:13

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
=wenn bedingung in (select from, befehle msql 2008, bedingungsvariable, select wenn bedingung zutrifft, dann, select from where bedingung variable, form select in variable speichern, wenn in select, select wenn, msql wenn

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




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum