[PHP] Werte aus Schleife ordnen

lustig

MACAN FAN^^
ID: 18670
L
25 April 2006
981
51
Hi,

1.) habe folgenden Code, mit ich aus der DB die höchsten 7 Werte auslese und per Schleife ausgebe:

Code:
<? 
          $zahlen1 = "SELECT * FROM werte ORDER BY anzahl DESC LIMIT 7";
          $zahlen2 = mysql_query($zahlen1) or die(mysql_error());
          while($zahlen3 = mysql_fetch_array($zahlen2))
          

          echo " <strong> $zahlen3[nr]   </strong> ";
          ?>

er gibt mir dann die werte so aus:
33, 45, 13, 17, 2, 44, 29

ich möchte aber die Werte ordnen, so das die kleinsten Zahlen (hier die 2, dann die 13, 17...) zuerst genannt werden usw... wie könnte das gehen?

2.) gibt es eine Möglichkeit, die einzelnen Werte nach durchlaufen der Schleife jede Zahl in der DB in eine eigene Spalten einzutragen, in dem man die Schleife durchläuft und dann die Zahl 2 in die Spalte "zahl1", die Zahl 13 in die Spalte "zahl2" usw. einträgt?

Danke für die Hilfe ;)
 
ok, wenn ich
sort($zahlen3);
eingebe, dann gibt er mir keine Zahlen mehr aus.

Code:
<? 
          $zahlen1 = "SELECT * FROM werte ORDER BY anzahl DESC LIMIT 7";
          $zahlen2 = mysql_query($zahlen1) or die(mysql_error());
          while($zahlen3 = mysql_fetch_array($zahlen2))

          sort($zahlen3);

          echo " <strong> $zahlen3[nr]   </strong> ";
          ?>

komme da nicht weiter :-?
 
Warum sortierst du im Query nach Anzahl absteigend, wenn du es im PHP doch anders willst? :roll:

Du wirst erst alle Einträge aus der DB in nen Array packen müssen und dann mit uasort das Array vergleichen müssen.
 
Hi,

probiers mal so (inkl. Code-Cleanup):

Code:
<?php
          function cmp($a, $b) {
              if ($a['nr'] == $b['nr']) {
                  return 0;
              }
              return ($a['nr'] < $b['nr']) ? -1 : 1;
          } 
          $sql = "SELECT * FROM werte ORDER BY anzahl DESC LIMIT 7";
          $res = mysql_query($sql) or die(mysql_error());
          $daten = array();
          while($data= mysql_fetch_array($res)) {
              $daten[] = $data;
          }
          
          usort($daten, 'cmp');
          
          foreach($daten AS $zahl) {
              echo " <strong> " . $zahl['nr'] . "  </strong> ";
          }
          ?>

Greetz

paddya

Edit: so gehts natürlich auch...

Code:
<?php

          $sql = "SELECT * FROM werte ORDER BY nr ASC LIMIT 7";
          $res = mysql_query($sql) or die(mysql_error());
          $daten = array();
          while($data= mysql_fetch_array($res)) {
              $daten[] = $data;
          }
                    
          foreach($daten AS $zahl) {
              echo " <strong> " . $zahl['nr'] . "  </strong> ";
          }
          ?>
 
Zuletzt bearbeitet:
Edit: so gehts natürlich auch...

Code:
<?php

          $sql = "SELECT * FROM werte ORDER BY anzahl DESC LIMIT 7";
          $res = mysql_query($sql) or die(mysql_error());
          $daten = array();
          while($data= mysql_fetch_array($res)) {
              $daten[] = $data;
          }
          sort($daten);          
          foreach($daten AS $zahl) {
              echo " <strong> " . $zahl['nr'] . "  </strong> ";
          }
          ?>

Vielen Dank, das hat geklappt mit sort($daten);

Noch zu meiner 2. Frage:

2.) gibt es eine Möglichkeit, die einzelnen erhaltenen und geordneten Werte nach durchlaufen der Schleife jede Zahl in der DB in eine eigene Spalten einzutragen, indem man z.B. dann die Zahl 2 in die Spalte "zahl1", die Zahl 13 in die Spalte "zahl2" usw. einträgt?
z.b. wie hier
Code:
mysql_query("UPDATE werte SET zahl1 = '$zahl['nr1']' WHERE wert = '1'");
mysql_query("UPDATE werte SET zahl2 = '$zahl['nr2']' WHERE wert = '2'");