Anfangsbuchstaben z.B. A - D ausgeben

Hallo,

ich hab zwei - Felder in denen man von A bis D auswählen kann.

Hintergrund ist der, dass ich nur E-mail Adressen ausgegeben haben möchte die den Anfangsbuchstabe A bis D haben.

Mit nur einem Anfangsbuchstaben ist das ja kein Problem aber mit einem Bereich???

Es macht ja wenig Sinn wenn man es so schreibt:

[PHP]WHERE email Like ‚a%‘ AND email Like ‚b%‘[/PHP]

und eine Schleife in einer SQL - Abfrage ist doch auch nicht möglich/sinnvoll.

Folgende Abfrage habe ich schon:

[PHP]SELECT * FROM tabelle WHERE kategorie = ‚$kategorie‘ AND email Like ‚$name1%‘[/PHP]

Danke schon mal

Gruß

Bleibt dir nicht viel anderes über… außer natürlich solche spielchen hier… :smiley: TUS NICHT

SELECT ... FROM ... WHERE UPPER(SUBSTR(`email`, 0, 1)) IN ('A', 'B', 'C', 'D')

Danke Sibbo für deine Antwort, aber ich habs jetzt rausgefunden wie es geht :slight_smile:

[PHP]SELECT * FROM tabelle WHERE kategorie = ‚$kategorie‘ AND email REGEXP ‚[1]‘[/PHP]

Zumindest klappts soweit bei mir :wink:


  1. a-c ↩︎

Eine Sache bekomm ich aber noch nicht ganz hin.

Wenn der selektierte Wert statt von A bis D von D bis A geht, bekomm ich eine Fehlermeldung im SQL - Befehl zurück.

Wie kann ich den den selektierten Wert vom - Feld herausfinden. Hat so ein Feld einen Indexwert wo ich eine If - Abfrage machen kann, ob der eine Wert höher ist wie der andere oder gibt es dafür eine andere Möglichkeit?

Und die Fehlermeldung ist so geheim, dass du sie uns nicht verraten kannst?

Natürlich kann ich die gern verraten:

Got error ‚invalid character range‘ from regexp

Wieso bekommst du die Fehlermeldung? Welcher teil deines Codes löst genau diese Fehlermeldung aus? Wenn du uns das sagen kannst können wir dir auch helfen.

Code schaut wie folgt aus:

In der Datei Filter.php steht folgendes

[PHP]

>A >B >C >D >A >B >C >D

[/PHP]

Die Auswahl.php sieht so aus:
[PHP]

<?php //Datenbankverbindung include ('connect.php'); //Empfangene Filter Variablen speichern $name1 = strtolower($_POST['name1']); $name2 = strtolower($_POST['name2']); //SQL - Befehl $sql = "SELECT * FROM `tabelle` WHERE email REGEXP '^[$name1-$name2]'"; //Ausführen des SQL-Befehls $db_erg = mysql_query( $sql ); if ( ! $db_erg ) { die('Ungültige Abfrage Auswahl: ' . mysql_error()); } ?>

[/PHP]

Wenn du eben hierbei beim - Feld „name1“ z.B. B und beim - Feld „name2“ A auswählt und auf weiter gehst, bekommst du die oben gepostete Fehlermeldung

Wählst du es anders rum aus, klappt es einwandfrei :wink:

Du kannst bei einem regulären Ausdruck nicht einfach [d-a] schreiben. Das kapiert kein Programm, da es nicht der Buchstabenreihenfolge entspricht. Ich würde dir raten die Eingabe genauer zu prüfen und vor dem ausführend des Statements in die richtige Reihenfolge zu bringen.