php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.08.2009, 16:57  
Neuer Benutzer
 
Registriert seit: 24.08.2009
Beiträge: 22
PHP-Kenntnisse:
Fortgeschritten
vaLLe befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Suche - Wortmanipulation

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.
vaLLe ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 24.08.2009, 17:09  
Neuer Benutzer
 
Registriert seit: 24.08.2009
Beiträge: 22
PHP-Kenntnisse:
Fortgeschritten
vaLLe befindet sich auf einem aufstrebenden Ast
Standard

Sorry für den Doppelpost, aber es ist von höchster Dringlichkeit und ich dachte so wäre es einfacher Interessierten mein Problem näherzubringen.
vaLLe ist offline  
Alt 24.08.2009, 17:30  
Erfahrener Benutzer
 
Registriert seit: 07.06.2008
Beiträge: 993
PHP-Kenntnisse:
Fortgeschritten
Frank befindet sich auf einem aufstrebenden Ast
Frank eine Nachricht über ICQ schicken Frank eine Nachricht über MSN schicken Frank eine Nachricht über Yahoo! schicken
Standard

Poste doch mal deinen Ansatz und sag uns was an deinem Ansatz nicht funktioniert.

Wenn du den Code von uns geschrieben haben willst, gehört das eindeutig in die Jobbörse.
__________________
Frank ist offline  
Alt 24.08.2009, 17:34  
Neuer Benutzer
 
Registriert seit: 24.08.2009
Beiträge: 22
PHP-Kenntnisse:
Fortgeschritten
vaLLe befindet sich auf einem aufstrebenden Ast
Standard

Mein code ist etwas unübersichtlich, deshalb wollte ich ihn euch erspaaren;
Hier ist er...

PHP-Code:
$zahl=23423 //wird vorher eingegeben...
//----------------------------------------------------------------------------------------------------------//Suche ganze Zahl
$sql_befehl="SELECT * FROM test WHERE zahl ='$zahl' ORDER BY `test`.`zahl` DESC LIMIT 0 , 5";                   //SQL Abholen, Listenlimit bei LIMIT
$sql_ausgabe=mysql_query($sql_befehl,$verbindung);                                                               //Verbindung aufbauen und nutzen

$gefunden "0";                                                                                              //Noch nichts gefunden, da noch nicht ausgegeben

while ($row mysql_fetch_array($sql_ausgabeMYSQL_ASSOC))                                                   //Ausgabe-Schleife
{
    
$gefunden "1";                                                                                          //Wort gefunden und ausgegeben
    
echo "<tr><td>"$row["zahl"], "</td>""<td>"$row["wort"], "</td></tr>";                                  //Ausgaben
}
// ----------------------------------------------------------------------------------------------------------//wenn gefunden 1 dann Suche beendet

$l_zahl=strlen($zahl);
$zzz="";

if (
$gefunden == "0")                                                                                           //Wenn nichts gefunden wurde weiter suchen
{
    echo 
"<b>$zahl</b> nicht gefunden...";
    for (
$z=0$z $l_zahl$z++)
    {
    
//--------------------------------------------------------------------------------------------------------//Suchschleife aufbauen
    
$zzz="$zzz" "$zahl[$z]";
    print 
"$zzz <br />";
    
//--------------------------------------------------------------------------------------------------------//Wort - Aufbau
    
$sql_befehl="SELECT * FROM test WHERE zahl ='$zzz' ORDER BY `test`.`zahl` DESC LIMIT 0 , 1";              //SQL Abholen, Listenlimit bei LIMIT
    
$sql_ausgabe=mysql_query($sql_befehl,$verbindung);                                                           //Verbindung aufbauen und nutzen

    
$gef "0";                                                                                                   //Noch nichts gefunden, da noch nicht ausgegeben

    
while ($row mysql_fetch_array($sql_ausgabeMYSQL_ASSOC))                                               //Ausgabe-Schleife
    
{
        
$gef "1";                                                                                              //Wort gefunden und ausgegeben
        //echo "<tr><td>", $row["zahl"], "</td>", "<td>", $row["wort"], "</td></tr>";                          //Ergebnis vorhanden, dann gef=1
    
}
    
//--------------------------------------------------------------------------------------------------------//Wort - Suche
    
if ($gef == "0")
    {
        
$e1 substr($zzz,0,-1);
        print 
" $e1 ";
        
$l_e1 strlen($e1);
        print 
"<b> $l_e1 </b>";
        
$w_e1 substr($zahl,$l_e1,$l_zahl); //ww
        
print "<i> $w_e1 </i>";
        
        
//----------------------------------------------------------------------------------------------------//Ausgaben...
        
$sql_befehl="SELECT * FROM test WHERE zahl ='$e1' ORDER BY `test`.`zahl` DESC LIMIT 0 , 3";              //SQL Abholen, Listenlimit bei LIMIT
        
$sql_ausgabe=mysql_query($sql_befehl,$verbindung);                                                           //Verbindung aufbauen und nutzen

        
$gef2 "0";                                                                                                   //Noch nichts gefunden, da noch nicht ausgegeben

        
while ($row mysql_fetch_array($sql_ausgabeMYSQL_ASSOC))                                               //Ausgabe-Schleife
        
{
        
$gef2 "1";                                                                                              //Wort gefunden und ausgegeben
        
echo "<tr><td>"$row["zahl"], "</td>""<td>"$row["wort"], "</td></tr>";                              //Ausgaben
        
}
        
//-----------------------------------------------------------------------------------------------------
        
        
$sql_befehl="SELECT * FROM test WHERE zahl ='$w_e1' ORDER BY `test`.`zahl` DESC LIMIT 0 , 2";              //SQL Abholen, Listenlimit bei LIMIT
        
$sql_ausgabe=mysql_query($sql_befehl,$verbindung);                                                           //Verbindung aufbauen und nutzen

        
$gef2 "0";                                                                                                   //Noch nichts gefunden, da noch nicht ausgegeben

        
while ($row mysql_fetch_array($sql_ausgabeMYSQL_ASSOC))                                               //Ausgabe-Schleife
        
{
        
$gef2 "1";                                                                                              //Wort gefunden und ausgegeben
        
echo "<tr><td>"$row["zahl"], "</td>""<td>"$row["wort"], "</td></tr>";                              //Ausgaben
        
}
        
    }    
    }

funktioniert bei 5-6 stelligen Zahlen gut, darüberhinaus aber nicht mehr so wie ich mir das vorstelle...

Geändert von vaLLe (24.08.2009 um 17:56 Uhr).
vaLLe ist offline  
Alt 24.08.2009, 17:45  
Erfahrener Benutzer
 
Registriert seit: 05.04.2005
Beiträge: 1.333
Freeaak ist zur Zeit noch ein unbeschriebenes Blatt
Standard

könnte man nicht einfach eine abfrage mit "... WHERE zahl LIKE '%$zahl%'" machen und nach länge der zahl absteigend sortieren?
__________________
"Wenn du nicht weißt, was du tust: Machs mit Eleganz!"

(Murphy's Gesetze)
Freeaak ist offline  
Alt 24.08.2009, 17:46  
Neuer Benutzer
 
Registriert seit: 24.08.2009
Beiträge: 22
PHP-Kenntnisse:
Fortgeschritten
vaLLe befindet sich auf einem aufstrebenden Ast
Standard

Das hab ich schon versucht, ist aber ohne Weiteres nicht möglich, da ich die Zahlen als String in der Datenbank speichern musste, denn es gibt auch Zahlen wie 0003 usw. die sonst als 3 in der Datenbank wären. Des weiteren kriege ich dann auch Ausschnitte aus Zahlen, die ich ja nicht möchte, ich möchte die Zahl als möglichst große Teile, im idealfall als 1ne Zahl finden.
vaLLe ist offline  
Alt 24.08.2009, 17:50  
Erfahrener Benutzer
 
Registriert seit: 05.04.2005
Beiträge: 1.333
Freeaak ist zur Zeit noch ein unbeschriebenes Blatt
Standard

mh ich sehe da trotzdem kein problem
__________________
"Wenn du nicht weißt, was du tust: Machs mit Eleganz!"

(Murphy's Gesetze)
Freeaak ist offline  
Alt 24.08.2009, 17:52  
Neuer Benutzer
 
Registriert seit: 24.08.2009
Beiträge: 22
PHP-Kenntnisse:
Fortgeschritten
vaLLe befindet sich auf einem aufstrebenden Ast
Standard

Sorry, aber mein Problem ist nicht der SQL-Teil, sondern das String-Subtraktions-Problem; Meistens habe ich diese Zahlen ja nicht in der Datenbank... bei mir scheitert es an der Zerlegung...
vaLLe ist offline  
Alt 24.08.2009, 17:56  
Erfahrener Benutzer
 
Registriert seit: 05.04.2005
Beiträge: 1.333
Freeaak ist zur Zeit noch ein unbeschriebenes Blatt
Standard

da brauchst du es doch nicht zu zerlegen
__________________
"Wenn du nicht weißt, was du tust: Machs mit Eleganz!"

(Murphy's Gesetze)
Freeaak ist offline  
Alt 24.08.2009, 17:57  
Neuer Benutzer
 
Registriert seit: 24.08.2009
Beiträge: 22
PHP-Kenntnisse:
Fortgeschritten
vaLLe befindet sich auf einem aufstrebenden Ast
Standard

Ok... wie würdest du das anstellen, ich gebe die Zahl 3345698 ein.
In der Datenbank ist die Zahl 3345, 69 und 8.
vaLLe ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Scriptsuche Suche browsergame-script kennykiller Scriptbörse 9 28.07.2009 16:58
eine Suche definieren Tyrra PHP Tipps 2009 14 10.07.2009 09:39
Suche Mitarbeiter für Feuerwehr / Polizei & Rettungsdienst Browsergame.. h3nny Beitragsarchiv 9 01.02.2009 14:56
Problem mit foren suche programmieren! litterauspirna PHP Tipps 2008 4 17.08.2008 12:17
Verbesserungsvorschläge: Design und Suche Manko10 Board-Support 3 15.06.2008 16:21
Suche in Office Dateien mit Index Beatbox Off-Topic Diskussionen 6 09.02.2007 15:34
Suche freien Mitarbeiter zur Suche von Linktauschpartnern wiretheless Trash 0 05.08.2006 14:00
Suche Alienuser PHP Tipps 2006 5 02.07.2006 16:31
suche funktion: suche alles zwischen notyyy PHP Tipps 2006 7 05.06.2006 20:46
[Erledigt] Erweiterung der Suche PHP Tipps 2007 2 01.12.2005 19:30
Suche in Datenbank realisieren Unbekanntes_Pferd PHP Tipps 2007 4 09.11.2005 16:22
suche lösungsweg für komplexe suche, md5hash PHP Tipps 2005-2 3 19.07.2005 17:57
mal wieder eine suche lomtas Datenbanken 0 12.07.2005 11:03
Suche Job als Entwickler/Designer (Raum Bonn o. Telearbeit) Beitragsarchiv 23 01.03.2005 14:00
Suche mehrere Images........ Beitragsarchiv 7 10.01.2005 08:07

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
wortmanipulation, 17 stelliges wort, wort manipulation, wortmanipulation beispiele, wortmanipulationen, wortmanipilation, php 4stellige zahlen, definiere wortmanipulation, beispiel einer wortmanipulation, wortmanipulation beispiel, beispiel wortmanipulation, php for schleife zahlen und wörter ausgeben, 12 stelliges wort, php wenn eins der worte gefunden worte dann, 4 stellige wörter mit p am anfang, php if nach wort suchen, php wort suchen ausgeben, was ist wortmanipulation, php schleife zahl und worter, php if wort sag das

Alle Zeitangaben in WEZ +1. Es ist jetzt 12:13 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum