Abfrage nach Wert in DB

Papenburger

Erfahrenes Mitglied
Hallo,

wie kann ich abfragen, welcher Wert in der DB steht? Also ich habe in meiner DB folgendes:

Spalte: priority
Eintrag: crit, warning, alert

Nun führe ich auf diese Spalte eine Abfrage durch
PHP:
if($spalte=="crit"){$ausgabe="Ja";}else{$ausgabe="Nein";}

nun will ich aber diese abfrage Dynamisch machen. Das heißt es kann sein, dass in der Spalte nicht mehr crit steht sondern Critical oder Critic oder sowas.
Da ich nicht jede Abfrage einzelnd machen kann bräuchte ich eine dynamische Abfrage. Wie kann ich sowas realisieren?
 
Moin.

Irgendwie musst Du das aber doch zuordnen.
Eine saubere Lösung wäre zB. eine priority-Tabelle zu haben.

Dort trägst Du dann deine 3 Werte ein, welche einduetige IDs besitzen.

Beispiel:

priorityID - priorityText
1 - crit
2 - alert
3 - warning

Dann trägst Du in deiner eigentlichen Tabelle in der Spalte priority anstelle des Textes die IDs ein.

So ist es dann ganz egal, welcher Text dort steht und du kannst deine Abfrage auf die priorityID beziehen.

PHP:
if($spalte=="1"){$ausgabe="Ja";}else{$ausgabe="Nein";}
 
Das hab ich mir auch schon überlegt aber das geht nicht, da das Script riesig ist und ich das nur weiter entwickel und nicht weiß wo alles in die DB geschrieben wird.

Das heißt es müsste irgendwie auch anders gehen, sowie bei MySQL mit LIKE '%Wort%'
 
Dann musst Du jedes mal, wenn sich in der Datenbank etwas ändert, dies auch im Script anpassen.

Ich weiß jetzt nicht, ob Du das schon überlegt hast, aber ....

Du könntest ja am Script-Anfang 3 Variablen benutzen, wo Du dann die Werte rein schreibst.
PHP:
$var_alert = "alert";
$var_crit = "crit";
$var_warning = "warning";
Und dann die stellen in deiner Abfrage entsprechend umändern.
PHP:
if($spalte==$var_crit){$ausgabe="Ja";}else{$ausgabe="Nein";}
Aber wie gesagt, Du müsstest das ganze dann immer manuell auf dem aktuellen Stand halten. Sobald sich was in der Datenbank ändert, musst Du die Werte der Variablen auch ändern.
 
Du müsstest das ganze dann immer manuell auf dem aktuellen Stand halten. Sobald sich was in der Datenbank ändert, musst Du die Werte der Variablen auch ändern.


Genau das will ich ja nicht. Da ich nicht weiß, welche Teil des Scripts was in diese Spalte schreibt kann ich das nicht manuell administrieren, sodas ich diese Wariable aus der DB mit einem Regulären Ausdruck vergleichen muss...

Beispiel:

if($erg_sql=="crit")...

nun kann in $erg_sql crit drine stehen, aber auch critical. Da sheißt ich brauche eine Abfrage dich nach dem == sämtliche fortsetzungen abfragt...
 
Naja, wenn es nur um die Fortsetzung geht, dann ist das ja wiederum einfach.
Wenn Du sicher bist, dass die ersten 4 Zeichen bei dem crit Beispiel auch wirklich immer "crit" sind, dann kannst Du ja einfach überprüfen ob die ersten 4 Zeichen deines SQL Ergebnisses auch dem entsprechen.

PHP:
// Alles klein schreiben
$spalte_temp = strtolower($spalte);
// Die ersten 4 Zeichen speichern
$spalte_temp = substr($spalte_temp, 0,4);
if($spalte_temp=="crit"){$ausgabe="Ja";}else{$ausgabe="Nein";}

Das funktioniert aber wie gesagt nur dann, wenn sich die ersten 4 Zeichen nicht verändern!
 
Nun ja, die ersten 4 Zeichen ändern sich schon aber die haben dann auch einen anderen Status...

Beispiel in Tabelle steht:

crit oder critical > Farbe = rot
warn oder Warning > Farbe = gelb

das ist ja mit einer If-Else Abfrage möglich. vondaher ist das schon ganz gut so...
Danke!
 
Zurück