6 Stimmen

Auswählen, wenn das erste Zeichen eine Zahl ist

Ich versuche, meinen Inhalt nach dem ersten Buchstaben zu ordnen. Bis jetzt habe ich so etwas gemacht:

PHP:

$first_char = $_GET['search'];
$sql = "SELECT id
        FROM table
        WHERE SUBSTR(title,1,1) = '".$first_char."'"
....

HTML:

<a href="?search=a">[A]</a>
<a href="?search=b">[B]</a>
...
<a href="?search=z">[Z]</a>
<a href="?search=nr">[#]</a>

Das Problem ist, dass beim Anklicken von [A] Titel angezeigt werden, die mit "A" beginnen. Ich möchte aber, dass beim Anklicken von [#] alle Beiträge angezeigt werden, die mit einer Nummer beginnen. Also, wenn $_GET = 'nr' es werden alle Titel angezeigt, die mit einer Nummer beginnen... Ich habe versucht, dies mit array() zu tun, aber ich scheiterte.

Haben Sie irgendwelche Vorschläge?

9voto

Bluewind Punkte 1054
$sql = "SELECT id
        FROM table
        WHERE SUBSTR(title,1,1) in (1,2,3,4,5,6,7,8,9,0)"

3voto

corretge Punkte 1713

Der einfachste Weg ist die Verwendung von reguläre Ausdrücke :

SELECT * FROM yourTable
where yourField REGEXP '^[[:digit:]].*$'

EDIT erklärt die RegExp

 ^               Start string
 [[:digit:]]     digit one time
 .               everything
  *              zero or more times
 $               End Of String

Kommentare lesen, um zu sehen, dass

  .*$ 

ist nicht notwendig :)

0voto

Marc B Punkte 347897
<?php

if ($_GET['search'] == 'nr') {
    $where = "REGEXP '^[[:digit:]]'";
} else {
    $where = "= '" . mysql_real_escape_string($_GET['search']) . "'";
}

$sql = "SELECT .... FROM table WHERE $where";

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X