• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Anfangsbuchstaben z.B. A - D ausgeben

_R_A_L_F_

Mitglied
Hallo,

ich hab zwei <select> - 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%'

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%'



Danke schon mal

Gruß
 
Bleibt dir nicht viel anderes über... außer natürlich solche spielchen hier... :-D TUS NICHT

Code:
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 :)

PHP:
SELECT * FROM `tabelle` WHERE kategorie = '$kategorie' AND email REGEXP '^[a-c]'

Zumindest klappts soweit bei mir ;)
 
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 <select> - 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?
 
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:
<form name="Formular" action="Auswahl.php"
method="POST" >
<select name="name1" class="select">
        <option value="A" <?php if ($name1 == 'A') echo "selected='selected'"; ?>>A</option>
        <option value="B" <?php if ($name1 == 'B') echo "selected='selected'"; ?>>B</option>
        <option value="C"  <?php if ($name1 == 'C')  echo "selected='selected'"; ?>>C</option>
        <option value="D"  <?php if ($name1 == 'D')  echo "selected='selected'"; ?>>D</option>
</selected>

<select name="name2" class="select">
        <option value="A" <?php if ($name2 == 'A') echo "selected='selected'"; ?>>A</option>
        <option value="B" <?php if ($name2 == 'B') echo "selected='selected'"; ?>>B</option>
        <option value="C"  <?php if ($name2 == 'C')  echo "selected='selected'"; ?>>C</option>
        <option value="D"  <?php if ($name2 == 'D')  echo "selected='selected'"; ?>>D</option>
</selected>
<br />
<br />
<input type="submit" name="submit" value="weiter" />
</form>



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());
}
?>

Wenn du eben hierbei beim <select> - Feld "name1" z.B. B und beim <select> - 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 ;)
 
Zuletzt bearbeitet:
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.
 
Zurück
Oben