Hallo, ich bin gerade dabei mich an einer einfachen Suche zu Arbeiten. Die technischen Hintergründe mit SQL usw. stellen kein Problem da, jedoch hab ich gerade eine "Schreibblockade". Mir fällt bei besten Willen nicht ein, wie ich 2.) lösen kann...
0.) Suche nach einer sehr langen Zahl, die zerlegt werden soll und das möglichst optimal, d.h. in größt mögliche teile, um die Zahl in der Datenbank mit den meisten Stellen zu finden. Ich weiß mein Ansatz ist nicht optimal, aber er arbeitet sehr schnell; Hierzu wird die Zahl $zahl eingegeben. Im Beispiel hat diese den Wert 123456.
1.) Suche nach der vollständigen Zahl in SQL
Wenn vorhanden, Zahl -> Wert ausgeben; Suche beendet.
Wenn nicht vorhanden dann 2.)
2.) Eine Suchschleife wird aufgebaut:
PHP-Code:
1 //1 ist in der Datenbank
12 //12 ist in der Datenbank
123 //123 ist in der Datenbank
1234 //1234 ist nicht in der Datenbank, mit substr
// wird die 4 abgeschnitten, 123 ausgegeben
// und von nun an sollte 123 "abgezogen" werden
//sodass die Suche nach dem Schema weiter verfährt
(123)45 //123 müssten entfallen, sodass 45 gesucht wird
(123)456 //456 ist vorhanden, wird ausgegeben, Suche Abgeschossen
... wäre 456 nicht vorhanden, würde wieder die 6 abgezogen werden, 45 wird gesucht & Ausgegeben und 6 wird gesucht & ausgegeben.
Anmerkung: Es kann immer mit einer 2 stelligen Zahl weiterverfahren werden, da die 2 stelligen Zahlen auf jeden Fall in der Datenbank sind und höher stellige Zahlen eventuell; je nach Aufname (deshalb wird zuerst nach einer ganzen Zahl gesucht).
Leider funktioniert bei mir 2.) nocht nicht so wie ich mir das vorstelle, welche Ansätze würdet ihr zu 2. Verfolgen?
Falls ich mich nicht klar genug ausgedrückt hab, bitte melden. Vielen Dank schonmal im Voraus für die Hilfe!
Edit: Es sieht hier so aus, als wären die gesuchten Ergebnisse immer 3-stellig. Die Ergebnisse können aber bis zu 30 Stellen haben, nur nach oben hin wird die Verteilung weniger. 2 stellige Zahlen sind auf jeden Fall vorhanden, 3 stellige meistens, 4 stellige ab und zu, Zahlen mit 5 und mehr Stellen sehr selten.