In der Datenbank nach "0%" suchen

darknet

Mitglied
Hallo zusammen.

ich hab mal wieder n kleines Problem.
wie kann ich in der Datenbank (MySQL) nach Einträgen suchen die mit 0 beginnen?
Leider haben Email-Adressen die dumme eigenschaft auch mit 0 beginnen zu können.
Wenn ich nun in meiner Datenbank nach 0 suchen möchte lande ich automatisch bei a.

PHP:
// Alphabetische Abfragesortierung
if (empty($buchstabe))
{
	$buchstabe_suche = "a";
}

elseif ($buchstabe == Alle)
{
	$buchstabe_suche = "";
}

else
{
	$buchstabe_suche = $buchstabe;
}


//Abfrage DB
$abfrage = "SELECT anrede, nachname, e_mail_adr, bestaetigt FROM newsletter_abo WHERE e_mail_adr LIKE '$buchstabe_suche%' ORDER BY e_mail_adr, nachname";
$ergebnis = mysql_query($abfrage);
 
Hallo,
probier mal folgendes:
PHP:
// Alphabetische Abfragesortierung 
$buchstabe = "0"
if (empty($buchstabe)) 
{ 
    $buchstabe_suche = "a"; 
} 
el...
Wenn du damit die Datensätze mit 0 beginnend bekommst, ist alles OK. Wenn nicht, habe ich deine Problembeschreibung nicht verstanden.
 
die Variable bekommt das Script schon. Das ist nicht das Problem.
Oberhalb des geposteten Scripts gibt es eine Ausgabe zur Orientierung für den User
PHP:
Seite: <?PHP echo $buchstabe;?>
Dort erscheint meine 0 ohne Probleme.
Das Problem liegt anscheinend in der Abfrage der Datenbank.
wenn ich nach der Null suche verwirft er anscheinend die Null als Zahl.
Hab mir grad nochwas zum testen gebastelt. Das liegt unterhalb der o.a. Ausgabe von $buchstabe
PHP:
// Alphabetische Abfragesortierung
if (empty($buchstabe))
{
	$buchstabe_suche = "a";
}

elseif ($buchstabe == Alle)
{
	$buchstabe_suche = "";
}
else
{
	$buchstabe_suche = $buchstabe;
}

echo "Buchstabe: $buchstabe";


//Abfrage DB
$abfrage = "SELECT anrede, nachname, e_mail_adr, bestaetigt FROM newsletter_abo WHERE e_mail_adr LIKE '$buchstabe_suche%' ORDER BY e_mail_adr, nachname";
$ergebnis = mysql_query($abfrage);
bei echo "Buchstabe: $buchstabe"; bekomme ich auch die Ausgabe "Buchstabe: 0"

nur das er nicht nach LIKE '0%' sucht sondern nach LIKE 'a%' oder Gott weiss was.

ich verzweifel noch.... :confused:
 
Versuch doch mal das hier:
$abfrage = "SELECT anrede, nachname, e_mail_adr, bestaetigt FROM newsletter_abo WHERE e_mail_adr LIKE '"
. $buchstabe_suche . "%' ORDER BY e_mail_adr, nachname"
;


Ansonsten laß die $abfrage vor dem Aufruf mal ausgeben mit
echo( $abfrage );

vop
 
Gar seltsam.
Der Fehler lag anscheinend nicht in der Abfrage der Datenbank sondern im Script davor (siehe *****).
PHP:
/ Alphabetische Abfragesortierung
if (!isset($buchstabe)) //***** war vorher empty*****
{
	$buchstabe_suche = "a";
}

elseif ($buchstabe == Alle)
{
	$buchstabe_suche = "";
}
else
{
	$buchstabe_suche = $buchstabe;
}

echo "Buchstabe: $buchstabe";


//Abfrage DB
$abfrage = "SELECT anrede, nachname, e_mail_adr, bestaetigt FROM newsletter_abo WHERE e_mail_adr LIKE '$buchstabe_suche%' ORDER BY e_mail_adr, nachname";
echo "$abfrage";
Denn wenn ich jetzt nach 0 suche bekomme ich bei echo "$abfrage";
SELECT anrede, nachname, e_mail_adr, bestaetigt FROM newsletter_abo WHERE e_mail_adr LIKE '0%' ORDER BY e_mail_adr, nachname
sonst bekam ich
SELECT anrede, nachname, e_mail_adr, bestaetigt FROM newsletter_abo WHERE e_mail_adr LIKE 'a%' ORDER BY e_mail_adr, nachname
was aus
PHP:
/ Alphabetische Abfragesortierung
if (empty($buchstabe)) //***** jetzt geändert in !isset*****
{
	$buchstabe_suche = "a";
}
resultierte.

Kann es sein das PHP 0 bei empty als leer erkennt? :confused:
 
Zuletzt bearbeitet:
Zurück