php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 02-09-2003, 21:38
JogiWebster
 Registrierter Benutzer
Links : Onlinestatus : JogiWebster ist offline
Registriert seit: Jul 2002
Ort: Hamburg, DE
Beiträge: 115
JogiWebster ist zur Zeit noch ein unbeschriebenes Blatt
Standard Sortierproblem! Trefferindex? Temporäre Spalten?

Hallo!

Ich habe ähnliches Problem hier schonmal dargestellt, aber so richtig hat es niemand verstanden, bzw. niemand hatte eine Lösung, deshalb probiere ich es voller Hoffnung nochmal etwas anders...

Eine Tabelle mit vielen VARCHAR Spalten wird mit LIKE '%$suchbegriff%' volltext durchsucht.

Es treten viele Treffer in unterschiedlichen Zeilen und unterschiedlichen Spalten auf.

Nun möchte ich so sortieren, dass die id`s bzw. Zeilen, in denen der Treffer, von links gesehen in der vordersten Spalte (also Feldindex "0") in der Ausgabe zuerts auftaucht, auch wenn die ID sehr weit unten in der Tabelle liegt.
Das ganze soll dann weiter nach dem Feldindex (von "0" bis "10") sortiert werden.

Wegen der Performance möchte ich das eigentlich ohne weitere Arrays ausführen, ich dachte eher an eine Sucheingrenzung in dem SELECT (evtl. mit "SELECT AS" ? und temporären Spalten?), zur Not ist mir aber "fast jede Variante recht"

Ich würde mich sehr über hilfreiche Tipps freuen!!

Euer Jogi
Mit Zitat antworten
freelancermap.de - IT Projektvermittlung für Selbständige und Freiberufler
  #2 (permalink)  
Alt 02-09-2003, 21:53
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

das ist sql! *VERSCHIEB*

aber ich habe dich dennoch nicht verstanden..
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #3 (permalink)  
Alt 02-09-2003, 22:06
JogiWebster
 Registrierter Benutzer
Links : Onlinestatus : JogiWebster ist offline
Registriert seit: Jul 2002
Ort: Hamburg, DE
Beiträge: 115
JogiWebster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

sorry, sollte auch in den sql bereich...
ich glaube aber irgendjemand wird mich hier doch verstehen oder???
ich kann mir auch nicht vorstellen, das niemand ein ähnliches problem hat...
also probierts doch einfach mal ;-)
Mit Zitat antworten
  #4 (permalink)  
Alt 02-09-2003, 22:24
graf
 Senior Member
Links : Onlinestatus : graf ist offline
Registriert seit: Mar 2003
Ort: Hamburg
Beiträge: 529
graf ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: Sortierproblem! Trefferindex? Temporäre Spalten?

Zitat:
Original geschrieben von JogiWebster

Wegen der Performance möchte ich das eigentlich ohne weitere Arrays ausführen, ich dachte eher an eine Sucheingrenzung in dem SELECT (evtl. mit "SELECT AS" ? und temporären Spalten?), zur Not ist mir aber "fast jede Variante recht"
naja, also was viel schnelleres als arrays gibts wohl nich.

obs nun mit ner sql abfrage schneller geht musst du probieren, aber ohne array, fällt mir nichts weiter ein, als jede spalte extra abzufragen.


edit:
doch mir fällt noch was ein ..
ein elend lange
select CASE WHEN xx LIKE '%sss% THEN xx WHEN yy LIKE ..... END

Geändert von graf (02-09-2003 um 22:27 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 02-09-2003, 22:33
JogiWebster
 Registrierter Benutzer
Links : Onlinestatus : JogiWebster ist offline
Registriert seit: Jul 2002
Ort: Hamburg, DE
Beiträge: 115
JogiWebster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

also Du meinst das in dem SELECT abzufragen dauert zu lange?
meinst Du denn es würde wirklich funktionieren mit den Bedingungen im SELECT?
Hättest Du einen Tip, wie ich die ARRAYS aufbauen bzw. abfragen sollte?

Danke Dir! Wusste ich doch, dass mich jemand versteht
Mit Zitat antworten
  #6 (permalink)  
Alt 02-09-2003, 22:56
graf
 Senior Member
Links : Onlinestatus : graf ist offline
Registriert seit: Mar 2003
Ort: Hamburg
Beiträge: 529
graf ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von JogiWebster
meinst Du denn es würde wirklich funktionieren mit den Bedingungen im SELECT?

ja sicher
Zitat:

Hättest Du einen Tip, wie ich die ARRAYS aufbauen bzw. abfragen sollte?

PHP-Code:
while($x=mysql_fetch_array(..)) {
  foreach (
$x as $key=>$val) { 
     if(
strpos("suchtext"$val0)) $array[$key][] = $val;
  }
}

asort($array);
foreach (
$array as $key=>$val) { 
 echo 
"Spalte: ".$key." | Text: ".$val

Mit Zitat antworten
  #7 (permalink)  
Alt 03-09-2003, 10:27
JogiWebster
 Registrierter Benutzer
Links : Onlinestatus : JogiWebster ist offline
Registriert seit: Jul 2002
Ort: Hamburg, DE
Beiträge: 115
JogiWebster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

erstmal Danke für Deine Anregung!

Nur habe ich noch so meine Verständnisprobleme mit Arrays und leider gibt das auch eine Menge errors (siehe Kommentare):


PHP-Code:
while($x=mysql_fetch_array($result)) {
  foreach (
$x as $key=>$val) { 
     if(
strpos("$suchbegriff"$val0)) $array[$key][] = $val;    //Empty Delimiter
  
}
}

asort($array);    // asort() expects parameter 1 to be array, null given 
foreach ($array as $key=>$val) {    // Invalid argument supplied for foreach()
 
echo "Spalte: ".$key." | Text: ".$val;

Wäre super, wenn Du mir noch eine kurze Erläuterung zu den Funktionen geben könntest, bzw. sagen, warum die errors kommen?

Vielen Dank!
Mit Zitat antworten
  #8 (permalink)  
Alt 03-09-2003, 10:41
graf
 Senior Member
Links : Onlinestatus : graf ist offline
Registriert seit: Mar 2003
Ort: Hamburg
Beiträge: 529
graf ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
$array = array(); // mach das mal noch, damit kein fehler kommt, wenn nichts gefunden wurde
while($x=mysql_fetch_array($result)) {
  foreach (
$x as $key=>$val) { 
     if(
strpos($suchbegriff$val0)) $array[$key][] = $val;    
    
/*Du suchst    nicht nach dem String $suchbegriff, sondern nach dem
      Inhalt in $suchbegriff
      Wenn $suchbegriff in $val, gefunden wurde, wird dem Array 
      $array[$key] (also bspw. $array["spalte1"]) ein Element hinzugefügt
    */
 
}
}

asort($array);    // sortiert das array, nach den schlüsselwerten, als erst "spalte1", dann "spalte2" etc. (sortierung von Strings!!!)
foreach ($array as $key=>$val) {    // für jedes gefundene Elelement, zeige Spaltenname und Wert
   
echo "Spalte: ".$key." | Text: ".$val;

Mit Zitat antworten
  #9 (permalink)  
Alt 03-09-2003, 12:09
JogiWebster
 Registrierter Benutzer
Links : Onlinestatus : JogiWebster ist offline
Registriert seit: Jul 2002
Ort: Hamburg, DE
Beiträge: 115
JogiWebster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo Danke für die schnelle Antwort!

Nach Deinen Änderugen taucht noch ein error (siehe Kommentar) auf:

PHP-Code:
$array = array();
//Schleife
while($x=mysql_fetch_array($result)) {
  foreach (
$x as $key=>$val) { 
     if(
strpos($suchbegriff$val0)) $array[$key][] = $val;    // Empty Delimiter
  
}
}

asort($array);
foreach (
$array as $key=>$val) { 
 echo 
"Spalte: ".$key." | Text: ".$val;

Ich habe strpos nochmal in der php doc nachgeschlagen und dort ist die Syntax doch eine andere oder habe ich das nicht verstanden, dort steht:

PHP-Code:
int strpos string haystackstring needle [, int offset]) 
Daraufhin habe ich folgendes probiert:

PHP-Code:
$array = array();
//Schleife
while($x=mysql_fetch_array($result)) {
  foreach (
$x as $key=>$val) {
 
       if(
strpos($val$suchbegriff0)) $array[$key][] = $val;   
    }
}

asort($array);
foreach (
$array as $key=>$val) { 
 echo 
"Spalte: ".$key." | Text: ".$val;

Dabei gibt`s keine errors mehr, aber auch keine Ausgabe
Ist es richtig, dass ich die Syntax geändert habe, bzw. wo könnte der Fehler noch liegen?
Mit Zitat antworten
  #10 (permalink)  
Alt 03-09-2003, 13:19
JogiWebster
 Registrierter Benutzer
Links : Onlinestatus : JogiWebster ist offline
Registriert seit: Jul 2002
Ort: Hamburg, DE
Beiträge: 115
JogiWebster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Mir ist leider noch ein Problem klar geworden:

Ich benutze eine Blätterfunktion um durch die Ergebnsiseiten zu blättern, dafür wird immer ein LIMIT $star, $anzahl in jedem SELECT verwendet.

Wenn ich nun die Sortierung per ARRAY vornehmen würde, dann könnte ich ja jeweils nur eine Seite (mit den ersten Einträgen) behandeln.
Mein Ziel ist es aber die Sortierung über alle Seiten hinweg vorzunehmen.
Würde das trotzdem funktionieren?
Oder muss ich dann doch die Abfrage schon im SELECT machen?
Wie könnte die Abfrage im SELECT aussehen?
Oder sehe ich die Problematik falsch?

Vielen Dank im Vorraus!

Jogi
Mit Zitat antworten
  #11 (permalink)  
Alt 03-09-2003, 13:25
graf
 Senior Member
Links : Onlinestatus : graf ist offline
Registriert seit: Mar 2003
Ort: Hamburg
Beiträge: 529
graf ist zur Zeit noch ein unbeschriebenes Blatt
Standard

zum alten thema:
PHP-Code:
$array = array();
while (
$x mysql_fetch_assoc($result)) {
   foreach (
$x as $key=>$val) { 
     if(
strpos(strtolower($val), $suchstring0) != false) {
           
$array[$key][] = $val;
    }
  }
}


foreach (
$array as $key=>$val) { 
    echo 
"<b>Spalte: </b>".$key." | Wert: ";
    foreach(
$val as $wert) {
     echo 
$wert." | ";
   }            
    echo 
"<br>";

Mit Zitat antworten
  #12 (permalink)  
Alt 03-09-2003, 16:47
JogiWebster
 Registrierter Benutzer
Links : Onlinestatus : JogiWebster ist offline
Registriert seit: Jul 2002
Ort: Hamburg, DE
Beiträge: 115
JogiWebster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Auch so klappt es leider nicht, ich erhalte kein Ergebnis, obwohl $x und $val gefüllt sind.

Du meinst ja, dass man das gleiche auch per mysql SELECT bewerkstelligen kann, wie müsste dafür der QUERY aufgebaut sein?

Danke für Deine Mühe!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

PHP Marktplatz-Software
PHP Marktplatz-SoftwareEs hat sich viel getan! Die neue Version 7.5.9 unserer PHP Marktplatz-Software ebiz-trader steht ab sofort zur Verfügung.

28.10.2019 | Berni

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni


 

Aktuelle PHP Scripte

ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

21.10.2020 Berni | Kategorie: PHP/ Anzeigenmarkt
Sendeplan Script inkl. Wunsch- und Grußbox + Kick-System + Bewerbungssystem

Das professionelle Sendeplan PHP Script inkl. Wunsch- und Grußbox + Kick-System für dein Webradio. Der übersichtliche Sendeplan bietet deinen Moderatoren und Zuhörern die perfekte Übersicht der aktuellen Shows! Du kannst nicht nur Sendungen eintragen, s

20.10.2020 drcomputer | Kategorie: PHP/ Web Radio
Newsmanager 2

Der Newsmanager 2 ist sehr Vielfältig und kann News schreiben, Newsletter versenden und RSS Feeds in einem erzeugen.

20.10.2020 Stephan_1972 | Kategorie: PHP/ News
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 04:36 Uhr.