Shop-Hilfe.com
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 31.08.2005, 10:38   #1
TP-Supporter
 
Benutzerbild von Stefan_G
 
Registriert seit: May 2005
Ort: Tecklenburg
Stefan_G hilft, wo's gehtStefan_G hilft, wo's geht

[php/sql] Sortierung eine Abfrage - DB-Abfrage aus Session Array


Hallo,

für die Sortiermöglichkeit einer DB-Abfrage bräuchte ich mal einen Denkanstoß.
Eine Suchabfrage packe ich folgendermaßen in ein Array:

PHP-Code:
$query="select blabla from blabla where $suche like '".$such_topic."%' ORDER BY user_nick DESC";
}
$result=mysql_query($query);

if(isset(
$_SESSION["userArray"])) unset($_SESSION["userArray"]);
if(isset(
$_SESSION["userArray"])) session_unregister(userArray);
print_r($_SESSION["userArray"]);

$i=0;
   while (
$row mysql_fetch_array($result)) {
    
$Article[$i]["userID"]=$row[0];
    
$Article[$i]["user_nick"]=$row[1];
    
$Article[$i]["user_vorname"]=$row[2];
    
$Article[$i]["user_nachname"]=$row[3];
    
$Article[$i]["user_plz"]=$row[4];
    
$Article[$i]["user_ort"]=$row[5];
    
$Article[$i]["user_edit"]=$row[6];
    
$i++;
    
    
$_SESSION["userArray"][] = $row[0];
    
    } 
Funktioniert alles soweit.
In der Ausgabeseite möchte ich jetzt die Möglichkeit haben, die Suchausgabe sortieren zu lassen - also dieselben Daten - nur in anderer Reihenfolge. Die userID´s stehen ja im sessionarray, aber ich stehe etwas auf dem Schlauch, wie die DBAbfrage/Schleife aus einem SessionArray jetzt aussehen muss.

Gruß

Stefan
Stefan_G ist offline   Mit Zitat antworten


Alt 31.08.2005, 12:20   #2
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
Hi,

um die Ausgabe sortierbar zu machen, hast Du eigentlich nur 2 Möglichkeuten:

1. Suchabfrage in einer temporären Tabelle speichern
2. Array nach vorgegeben Kriterien sortieren.

Ohne jetzt zu wissen, welche Infos in der DB sind und welche Infos Du anzeigst, ist es schwer zu beurteilen, was mehr Sinn macht.
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 31.08.2005, 12:24   #3
TP-Specialist
 
Benutzerbild von theo
 
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
theo macht sich hier sehr viel Mühe
vielleicht hilft dir das hier ansonsten sollte dir google mit "mehrdimensionale arrays sortieren" weiterhelfen koennen
theo ist offline   Mit Zitat antworten
Alt 31.08.2005, 12:26   #4
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
für komplexe Arraysortierung hatte ich schon mal was reingestellt:
http://www.traum-projekt.com/forum/s...ad.php?t=66957

Seltsamerweise gabs keine Reaktionen, war die Routine zu komplex ?
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 31.08.2005, 12:41   #5
TP-Supporter
 
Benutzerbild von Stefan_G
 
Registriert seit: May 2005
Ort: Tecklenburg
Stefan_G hilft, wo's gehtStefan_G hilft, wo's geht
Hi,

danke! Werde mich mal durchwühlen.
Meine Grundidee ist, dass ich dieselbe Seite (also die Ergebnisseite der Suche) erneut aufrufe und zwar mit dem Parameter der gewünschten Sortierung:

Die Sortierlinks auf der Ausgabeseite sehen so aus:

HTML-Code:
...ergebnisseite.php?sort=spaltenname
Die DB-Abfrage bräuchte dann "nur" noch ein

PHP-Code:
"...dbabfrage... SORT by $sort;" 
Zitat:
Zitat von St@eff.en
1. Suchabfrage in einer temporären Tabelle speichern
Das scheint wohl am meisten Sinn zu machen.

//Stefan
Stefan_G ist offline   Mit Zitat antworten
Alt 31.08.2005, 13:19   #6
TP-Specialist
 
Benutzerbild von theo
 
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
theo macht sich hier sehr viel Mühe
ueber die aenderung des statements wuerde es auch gehen. aber wozu jedesmal die db abfragen, wenn die daten schon da sind?
klar ... ein mehrdimensionales array staendig neu rauf- und runtersortieren kostet etwas zeit beim scripten und einige unruhige minuten fuer die grauen zellen. aber das sollte sich lohnen.

... es sei denn, deine daten aendern sich haeufig.

@steffen: hatte ich noch gar nicht gesehen (*grrrrrrrrrrrr* und ich hab die letzten tage wie ein held mit mehrdimensionalen monstern gekaempft ). dafuer gibts nachtraeglich noch ein fettes bienchen!


gruss
hardy
theo ist offline   Mit Zitat antworten
Alt 31.08.2005, 13:46   #7
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
Ehrlichgesagt - ich würde auch die Array-Methode bevorzugen.

Du hast ja Sessions, also kannst Du einen Sessionzweig dafür nehmen, Du könntest auf Getparameter verzichten und das ganze sehr effizient und ressourcensparend ausgeben.
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 31.08.2005, 14:28   #8
TP-Supporter
 
Benutzerbild von Stefan_G
 
Registriert seit: May 2005
Ort: Tecklenburg
Stefan_G hilft, wo's gehtStefan_G hilft, wo's geht
Hallo,

die Version mit der Temp-Tabelle habe ich grad probiert, aber da kommen schnell große Datenmengen zusammen. Gefällt mir nicht.
Hab keine richtig Idee, wie ich das mit der Array-Methode angehen soll. Durch die angegebenen Links steige ich nicht so richtig durch.

Bisher läuft alles in einer Datei ab - user_suche.php
Das Suchergebnis wird ebenfalls in dieser Datei ausgeben. Die userID lasse ich - wie im ersten Posting beschrieben - in ein Session-Array fließen.

Ausgegeben werden die Daten (Userdaten - bis zu 500 pro Abfrage) nach dem folgenden Muster:

Überschrift (z. T. als Links für die Sortierung ausgezeichnet):
HTML-Code:
<div class="listtitel">
<span class="tdid"><a href="<?php echo $PHP_SELF?>?sort=userID&amp;gesendet=go" title="nach ID sortieren" class="normlink">ID</a></span>
<span class="tdid"><a href="<?php echo $PHP_SELF?>?sort=user_edit" title="nach Bearbeitungszustand sortieren" class="normlink">Status</a></span>
<span class="tduser"><a href="<?php echo $PHP_SELF?>?sort=user_nachname" title="nach Name sortieren" class="normlink">Name</a></span>
<span class="tduser"><a href="<?php echo $PHP_SELF?>?sort=user_nick" title="nach Nickname sortieren" class="normlink">Nick</a></span>
<span class="tdplz"><a href="<?php echo $PHP_SELF?>?sort=user_plz" title="nach PLZ sortieren" class="normlink">PLZ</a></span>
<span class="tduser"><a href="<?php echo $PHP_SELF?>?sort=user_ort" title="nach Ort sortieren" class="normlink">Ort</a></span>
<span class="tdplz">edit</span>
<span class="tdplz">view</span>
</div>
Das ist die Schleife für die Einträge nach der ersten Suchabfrage:
PHP-Code:
<?php 
$i
=0;
while(
$Article[$i]) :?>
<div class="doglist">
<span class="tdid"><a href="user_edit.php?userID=<?php echo $Article[$i]["userID"];?>" class="navi" title="<?php echo $Article[$i]["userID"];?> - Hauptdaten bearbeiten"><?php echo $Article[$i]["userID"];?></a></span>
<span class="tdid"><?php echo $Article[$i]["user_edit"];?></span>
<span class="tduser"><?php echo $Article[$i]["user_vorname"]." ".$Article[$i]["user_nachname"];?></span>
<span class="tduser"><?php echo $Article[$i]["user_nick"];?></span>
<span class="tdplz"><?php echo $Article[$i]["user_plz"];?></span>
<span class="tduser"><?php echo $Article[$i]["user_ort"];?></span>
<span class="tdplz"><a href="user_edit.php?userID=<?php echo $Article[$i]["userID"];?>" class="navi" title="<?php echo $Article[$i]["userID"];?> - Hauptdaten bearbeiten">edit</a></span>
<span class="tdplz"><a href="user_details.php?userID=<?php echo $Article[$i]["userID"];?>" class="navi" title="<?php echo $Article[$i]["userID"];?> - Daten ansehen">view</a></span></div>
<?php
$i
++;
endwhile;
?>
Jetzt möchte ich, dass bei Klick auf die jew. Überschrift (s. Html) eine Sortierung der Daten (also der in dem Session-Array gespeicherten userID´s) auf der Seite nach dem jew. Parameter erfolgt. Das wäre der nächste Schritt und genau da hänge ich.

PHP-Code:
if($gesendet=="go" AND $sort!="") { //Abfragen ob das Form gesendet wurde und ob eine Sortierung erfolgen soll
$query="Abfrage .... ORDER by $sort; 
Gibt es nicht vielleicht noch ne viel einfachere Möglichkeit?

//Stefan
Stefan_G ist offline   Mit Zitat antworten
Alt 31.08.2005, 14:39   #9
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
Du kannst Doch die Funktion nutzen, wenn ich das richtig sehe, gehts um das $Artikel-Array, also:

PHP-Code:
//sortieren
if(isset($_GET['sort'])) masort($Artikel,$_GET['sort']);

function 
masort(&$data$sortby){ 
   if(
is_array($sortby)){ 
       
$sortby join(',',$sortby); 
   } 

   
uasort($data,create_function('$a,$b','$skeys = split(\',\',\''.$sortby.'\'); 
       foreach($skeys as $key){ 
           if( ($c = strcasecmp($a[$key],$b[$key])) != 0 ){ 
               return($c); 
           } 
       } 
       return($c); '
)); 

__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 31.08.2005, 14:50   #10
TP-Supporter
 
Benutzerbild von Stefan_G
 
Registriert seit: May 2005
Ort: Tecklenburg
Stefan_G hilft, wo's gehtStefan_G hilft, wo's geht
Hi,

thx!
Werde es mal probieren, wenn es kühler wird ;-)

//Stefan
Stefan_G ist offline   Mit Zitat antworten
Alt 31.08.2005, 16:40   #11
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
also in 4 wochen
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 01.09.2005, 12:56   #12
TP-Supporter
 
Benutzerbild von Stefan_G
 
Registriert seit: May 2005
Ort: Tecklenburg
Stefan_G hilft, wo's gehtStefan_G hilft, wo's geht
Hallo,

es ist dann doch eine viel einfachere Lösung geworden:
Hab das Query der Suchabfrage in einer Session-Variablen gespeichert...
PHP-Code:
$query...DB-Abfrage der Suche
...
$_SESSION["user"] = $query11;
?> 
und setz das Query mit dem Sortierschlüssel wieder zusammen, sobald einer auf den Sortierlink klickt.
PHP-Code:
if($gesendet=="go" AND $sort!="") { 
 
//sortieren 
$query="".$_SESSION["user"]." ORDER BY $sort";
$result=mysql_query($query);

$i=0;
   while (
$row mysql_fetch_array($result)) {
    
$Article[$i]["userID"]=$row[0];
    
$Article[$i]["user_nick"]=$row[1];
    
$Article[$i]["user_vorname"]=$row[2];
    
$Article[$i]["user_nachname"]=$row[3];
    
$Article[$i]["user_plz"]=$row[4];
    
$Article[$i]["user_ort"]=$row[5];
    
$Article[$i]["user_edit"]=$row[6];
    
$i++;
    
    } 
Funktioniert so auch.

Danke für die Tipps!

//Stefan
Stefan_G ist offline   Mit Zitat antworten
Alt 01.09.2005, 12:58   #13
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
gut.

Anmerkung - warum heisst das $_SESSION["user"] ?

Besser ist es immer sinnvolle Namen zu nutzen, damit Du auch nach mehreren Wochen noch zurechtkommst:

$_SESSION["userquery"]
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
[php/sql] Sortierung eine Abfrage - DB-Abfrage aus Session Array [php/sql] Sortierung eine Abfrage - DB-Abfrage aus Session Array
« .htaccess zwecks mod_rewrite dynamisch generieren | korrekte An- Abführungszeichen »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten: