DB-Problem

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Condor
Mitglied
Beiträge: 221
Registriert: 27.02.2002 01:00
Wohnort: Ahlen

DB-Problem

Beitrag von Condor »

Hallo,
ich habe in einer DB, in einer Spalte Abkürzungen stehen. Nehmen wir an, in einem Datensatz steht "z.B.". Wenn ich jetzt den Datensatz per Script ausgeben möchte, soll nicht "z.B." sondern "zum Beispiel" ausgegeben werden. Wie kann ich sowas realisieren ?
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Heißt
Condor hat geschrieben:in einer Spalte Abkürzungen stehen
daß du eine Tabelle mit zwei Spalten Abkürzung und Langform hast oder daß du in einer Tabelle Texte gespeichert hast, in denen die Abkürzungen vorkommen?
Xmopf
Mitglied
Beiträge: 85
Registriert: 17.04.2002 09:21
Wohnort: Sauerland

Beitrag von Xmopf »

Hi,

also wenn deine Tabelle so aussieht:

abkuerzung | bedeutung
---------------------------------------------
z.B. | zum Beispiel
mfg | mit freundlichen Grüßen
... | ...

dann sollte folgendes funzen:

Code: Alles auswählen

$einString = "Irgendein Text, z.B. was total sinnloses... ";
echo $einString ."<br>";

$sqlString = "SELECT * FROM tabelle_abkuerzungen";
$sqlErgebnis = mysql_query($sqlString);

while($rowAbkuerzung = mysql_fetch_array($sqlErgebnis)) 
{
	$einString = str_replace($rowAbkuerzung["abkuerzung"], $rowAbkuerzung["bedeutung"], $einString);
}
Gruß
Xmopf
Condor
Mitglied
Beiträge: 221
Registriert: 27.02.2002 01:00
Wohnort: Ahlen

Beitrag von Condor »

Hallo,
nicht ganz. Das würde zwar auch gehen, aber ich habe das jetzt etwas anders. Nehmen wir an die Tabelle sieht so aus:

Code: Alles auswählen

| Verein | Runde |
---------------------
| PSG    |   1/4   |
Das soll heissen, das PSG im Viertelfinale ist. Jetzt soll aber nicht 1/4 ausgegeben werden sondern "Viertelfinale". Also die Bedeutung steht nicht in der DB. Muss ich da mit IF-Abfragen arbeiten ?
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Condor hat geschrieben:Muss ich da mit IF-Abfragen arbeiten ?
Müssen nicht, aber können. Alternative wäre z.B. die switch-Anweisung von PHP.

Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Condor
Mitglied
Beiträge: 221
Registriert: 27.02.2002 01:00
Wohnort: Ahlen

Beitrag von Condor »

Hi,
wie könnte denn so eine simple Switch-Abfrage aussehen ?
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Condor,

schau mal hier nach:
http://www.php.net/manual/en/control-st ... switch.php

Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Du könntest auch eine Tabelle wie Xmopf sie beschrieben hat anlegen und dann direkt von der Datenbank die Langform generieren lassen:

Code: Alles auswählen

SELECT v.verein, a.langform
FROM vereine v, abkuerzungen a
WHERE a.abkuerzung = v.runde
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

@Pyramide:

gibt es eigentlich einen Vorteil deines SQL-Befehls gegenüber dem hier:

Code: Alles auswählen

SELECT v.verein, a.langform 
FROM vereine v INNER JOIN abkuerzungen a 
  ON a.abkuerzung = v.runde
Ich wundere mich immer, wieso auf die JOINs so gerne verzichtet wird...

Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Ich finde JOIN eigentlich auch besser, weil man da a) definieren kann, welches die dominante Tabelle ist (LEFT JOIN / RIGHT JOIN) und b) leichter erkennt, daß es kein Filter, sondern eine Beziehung ist. Aber seit ich mal für Oracle schreiben musste (der kennt JOIN nicht) habe ich mir angewöhnt, Beziehungen mit WHERE zu schreiben.

In diesem Fall würde ich die Abfrage so wie du schreiben, aber mit LEFT JOIN, weil dann ein Verein auch angezeigt wird, wenn die Beziehung runde->abkuerzung nicht aufgelöst werden kann (weil die Abkürzung nicht eingetragen ist)
Antworten

Zurück zu „Coding & Technik“