phpbar.de logo

Mailinglisten-Archive

Sortierung einer Abfrage aus mehreren =?ISO-8859-1?Q?Datens=E4tzen?=

Sortierung einer Abfrage aus mehreren Datensätzen

Oliver Six mysql-de_(at)_lists.bttr.org
Fri, 14 Dec 2001 11:10:17 +0100


"rh" <rh_(at)_logiks.de> wrote on 13.12.2001 19:03:53:

>
><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
><HTML><HEAD>
><META content="text/html; charset=iso-8859-1" http-equiv=Content-Type>
><META content="MSHTML 5.00.2614.3500" name=GENERATOR>
><STYLE></STYLE>
></HEAD>
><BODY bgColor=#ffffff>
><DIV><FONT face=Arial size=2>
><DIV><FONT face=Arial size=2>
><DIV><FONT face=Arial size=2>Hallo,<BR>ich habe ein kleines 
>Abfrageproblem.<BR><BR>Tabelle sieht folgendermaßen aus:<BR><BR>id feld 1 
>feld 2 feld 3 .... 
>feld 15<BR>---------------------------------------------------------<BR>1 
>inhalt1 1 inhalt2 1 inhalt3 1 inhalt15 1<BR>2 inhalt1 2 inhalt2 
>2&nbsp;&nbsp; ......<BR><BR>Die Felder sind teilweis auch nicht mit Inhalt 
>gefüllt!</FONT></DIV>
><DIV><FONT face=Arial size=2><BR>Nun möchte ich die Inhalte der Tabelle so 
>abfragen, <BR>daß ich alles in einem array habe und die dann sortieren 
>kann,</FONT></DIV>
><DIV><FONT face=Arial size=2>leere Felder wegzuwerfen und eine alphab. 
>Reihenfolge zu bekommen.<BR><BR>Folgendes habe ich bisher 
>versucht:<BR><BR>&lt;?
>php<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $link 
>= mysql connect("localhost", "root", 
>"");<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
>if 
>(!$link)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n-
>b- sp;&nbsp;&nbsp;&nbsp; die("Kein mysql connect() möglich. 
>&lt;br&gt;\n");<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb-
>s- p;&nbsp; $query = "select * from Tabelle";<BR><BR>&nbsp;&nbsp;&nbsp; 
>$res = mysql db query("intranet", $query, $link);<BR>&nbsp;&nbsp;&nbsp; if 
>(!$res)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; die(mysql 
>error($link));<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $r = 
>mysql fetch array($res, MYSQL 
>ASSOC);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $iss = array (sort 
>($r));<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ( $iss!="" 
>) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo $iss. 
>"&lt;br&gt;\n";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>? 
>&gt;<BR><BR>Dies endet aber in einer Endlosschleife.<BR><BR>Kann mir 
>jemand vielleicht einen kleinen Tipp geben, wie ich dies lösen kann?
><BR>Irgendwie habe ich mal was von 'temporary tables' gehört, <BR>aber 
>leider keine Beispiele hierzu gefunden ???<BR><BR><BR>--<BR>Mit 
>freundlichen Grüßen<BR>Karsten 
>Stratmann<BR></DIV></FONT></FONT></DIV></FONT></DIV></BODY></HTML> 

Hi Karsten,

als erstes: Bitte kein HTML-Mail auf der Liste, sonst gehen hier wieder die 
endlosen Threads ueber Sinn und Unsinn darueber los. 

Die Endlosschleife verursachst Du selbst mit dem Konstrukt 'while 
($iss!="")'. Dieses Array wird nie leer (da Du keine Elemente innerhalb der 
Schleife entfernst), deshalb wird die Schleife auch nie abgebrochen. Um die 
Elemente eines Arrays auszugeben, solltest Du mit einer for-Schleife durch 
alle Elemente gehen und sie einzeln ausgeben. Eventuell gibt es da im PHP 
noch andere Moeglichkeiten, ich komme aber vom C und da gehts nur so. 

Ansonsten solltest Du Dich vielleicht von dem Gedanken verabschieden, alles 
selber machen zu wollen. Der MySQL kann das - im Normalfall - schneller und 
besser. Fuege Deiner $query einen "order by Spalte(n)" hinzu, dann bekommst 
Du die Records bereits sortiert vom Server, der dann auch mit seinen 
Indizees arbeiten kann. Auch die leeren Datensaetze entfernt der Server 
bereits fuer Dich, wenn Du ihm das mit einem "where Bedingung(en)" sagst. 
Damit wird der Datenverkehr - auch wenn es die lokale Maschine ist - 
minimiert und alles geht schneller. 

Ciao Oliver
--
Good programming is 40% experience, 30% skill, 20% RTFM, 10% caffeine, and 
5% attention to detail. 

Oliver Six, CEO
CAHOS GmbH, Cimbernstr. 51, Germany 81377 Muenchen
Phone +49 89 71 01 93 40,  Fax +49 89 71 01 93 41

---
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 



php::bar PHP Wiki   -   Listenarchive