kirchmeyer: Zeilenweises Durchkämmen einer Ergebnismenge

hallo,

ich hab folgendes problem.
mit der unten stehenden syntax bekomme ich durch die abfrage ein ergebnis, welches mir eine reihe von schlüsselcodes wiedergibt.
Bsp.: 6a00001, 6a00002, 6a00003 usw.

mein ziel ist es nun, dass ich die ergebniszeile mit der größten nummer - in dem fall 6a00003 - in eine variable bekomme (also "zu fassen bekomme").
ich muss also irgendwie in die ergebnismenge eingreifen können, um mir einen teil, also die größte nummer, rausziehen zu können.

hat jemand ne idee?

danke

<?php

$liste = mysql_query("SELECT A1_ALL FROM haupt WHERE (A1_ALL LIKE '$schluessel%')");
 while ($treffer = mysql_fetch_array($liste))
  {

echo $treffer['A1_ALL'];

}
?>

  1. $liste = mysql_query("SELECT A1_ALL FROM haupt WHERE (A1_ALL LIKE '$schluessel%')");
     while ($treffer = mysql_fetch_array($liste))
      {

    $a[]=$treffer['A1_ALL'];

    }

    natsort($a);
    reset($a);
    echo $a[count($a)-1];

    ?>

    Gruß aus Berlin!
    eddi

    1. super danke, hat geklappt!

      nun häng' ich aber an folgender stelle:

      hab nun in

      $a[count($a)-1];

      die größte nummer (Bsp.: 6a00008) stehen, muss die aber noch mit 1 addieren.
      hab also n substring draus gamcht --> 00008 dann +1 und dann
      kommt aber als ergebnis nicht 00009, sondern 9 :-(

      wie bekomm ich denn das hin, dass die nullen davor bleiben?

      danke für den tipp

      gruss aus potsdam

      1. dann sollte Dir str_pad() weiterhelfen

        Link gefällig ;) http://de.php.net/manual/de/function.str-pad.php

        Gruß aus Berlin!
        eddi

      2. hab also n substring draus gamcht --> 00008 dann +1 und dann
        kommt aber als ergebnis nicht 00009, sondern 9 :-(

        preg_match("/^([0]+)([1-9]+)$/", $substring, $matches);
        $endVal = $matches[count($matches) - 2] . intval($matches[count($matches) - 1]) + 1;

        andi

  2. hi,

    <?php

    $liste = mysql_query("SELECT A1_ALL FROM haupt WHERE (A1_ALL LIKE '$schluessel%')");
    while ($treffer = mysql_fetch_array($liste))
      {

    preg_match("/^([0-9]+)([a-zA-z]+)([0-9]+)$/", $treffer['A1_ALL'], $matches);
       if(intval($matches[count($matches) - 1]) > $speicherWert){
        $speicherWert = intval($matches[count($matches) - 1]);
       }

    }
    ?>

    ahoi, andi

    1. sorry, so isses glaube ich so, wie du willst:

      <?php

      $liste = mysql_query("SELECT A1_ALL FROM haupt WHERE (A1_ALL LIKE '$schluessel%')");
      while ($treffer = mysql_fetch_array($liste))
        {
         preg_match("/^([0-9]+)([a-zA-z]+)([0-9]+)$/", $treffer['A1_ALL'], $matches);
         if(intval($matches[count($matches) - 1]) > $speicherWert){

      $speicherWert = $treffer['A1_ALL'];

      }

      }
      ?>

      ahoi, andi

      1. oh no... da ergibt sich wieder ein fehler, also nochmal:

        <?php

        $speicherWert = array(0, "leer");

        $liste = mysql_query("SELECT A1_ALL FROM haupt WHERE (A1_ALL LIKE '$schluessel%')");
        while ($treffer = mysql_fetch_array($liste))
          {
           preg_match("/^([0-9]+)([a-zA-z]+)([0-9]+)$/", $treffer['A1_ALL'], $matches);
           if(intval($matches[count($matches) - 1]) > $speicherWert[0]){

        $speicherWert[0] = intval($matches[count($matches) - 1]);
                   $speicherWert[1] = $treffer['A1_ALL'];

        }

        }
        ?>

        jetze aba ;)
        andi