gabi: maxid in array packen und damit neues select starten

Morgen zusammen,
Stehe grad vor folgendem Problem:

Mache ein SELECT aus einer db_table:

$sql1="SELECT MAX(id) AS maxid FROM filialen GROUP BY firma";
$result1=mysql_query($sql1);
while($row1=mysql_fetch_array($result1))
{

Hier möchte ich diese maxid's in ein array packen

$werte=array($row1['maxid']);

}

Und hier möchte ich alle id's auslesen die in diesem array vorkommen

$sql1="SELECT * FROM filialen WHERE ???? IN id";

Ich kriegs nicht hin die maxid in ein array zu packen (hab bis jetzt noch nicht viel mit arrays zu tun gehabt) und weiß auch nicht so recht wie ich dann diesen Vergleich "WHERE ???? IN id" richtig angehen soll.
Liege ich mit meinem Gedankengang eignetlich richtig diese maxid zuerst in ein array zu packen und dann ein SELECT zu starten wo ich einen Vergleich starte ob ein wert oder mehrere Werte dieses arrays als id vorkommen oder gibts da eine andere Lösung. Ich brauche halt von den verschiedenen Firmen die in der db_táble gespeichert sind die jeweils letzte bzw höchste id.

Danke
Gabi

  1. Holladiewaldfee,

    die prinzipielle Vorgehensweise:

    $a = array()
    while(...)
     $a[] = $wasauchimmer

    $query = '... id IN('.implode(', ', $a).') ...';

    Ciao,

    Harry

    --
      Herbst ist Wanderzeit!
      http://harry.ilo.de/projekte/berge/
    1. Hi Harry,
      Hab die Abfrage jetzt wie folgt gemacht:

      $sql1="SELECT MAX(id) AS maxid FROM filiale GROUP BY firma";
      $result1=mysql_query($sql1);
      $wert=array();
      while($row1=mysql_fetch_array($result1))
      {
       $maxid=$row["maxid"];
       $wert[]=$maxid;

      }
      $sql="SELECT * FROM news WHERE id IN('.implode(', ', $wert).')";

      Krieg aber kein Ergebnis raus.
      Irgendwo ist bei meiner Abfrage noch der Hund begraben. Aber wo???

      Danke und lg
      Gabi

      1. Hi harry,
        Wenn ich die Abfrage wie folgt starte:

        $sql1="SELECT MAX(id) AS maxid FROM filiale GROUP BY firma";
        $result1=mysql_query($sql1);
        while($row1=mysql_fetch_array($result1))
        {
         $maxid=$row1["maxid"];
         $wert=array();
         $wert[]=$maxid;
         $anzeige=implode(',',$wert);
         echo $anzeige;
        }

        dann werden mir bei der Ausgabe von $anzeige zwar die gewüschten id's angezeigt, aber als einziger String:

        6953

        Ich denke mal das die Abfrage nicht funkt weil es die id 6953 ja nicht gibt. Es gibt die id 69 und die id 53.

        lg
        Gabi

        1. Holladiewaldfee,

          $wert=array();

          Wieso überschreibst Du $wert innerhalb der Schleife wieder?
          Du musst das Array vor der Schleife definieren und dann in der Schleife mit Werte füllen.

          Ciao,

          Harry

          --
            Herbst ist Wanderzeit!
            http://harry.ilo.de/projekte/berge/
          1. Hi Harry,
            So sieht die Abfrage jetzt aus, aber es gibt kein Ergebnis?????

            $sql="SELECT MAX(id) AS maxid FROM filiale GROUP BY firma";
            $result=mysql_query($sql);
            $wert=array();
            while($row=mysql_fetch_array($result))
            {
             $maxid=$row["maxid"];
             $wert[]=$maxid;

            }
            $sql="SELECT * FROM filiale WHERE id IN('.implode(', ', $wert).')";
            $result=mysql_query($sql);

            1. Holladiewaldfee,

              $sql="SELECT * FROM filiale WHERE id IN('.implode(', ', $wert).')";

              Da ist der Hase:
              $sql='SELECT * FROM filiale WHERE id IN('.implode(', ', $wert).')';

              Du mußt auf die verschiedenen Typen von Anführungszeichen aufpassen.

              $result=mysql_query($sql);

              Hier hätte Dir ein mysql_error() klar Auskunft gegeben, wo der Fehler begraben liegt. Genauso hätte Dir ein simples echo($sql) weitergeholfen.

              Ciao,

              Harry

              --
                Herbst ist Wanderzeit!
                http://harry.ilo.de/projekte/berge/
              1. Hallo Harry,
                Ich weiß, wahrscheinlich geh ich Dir schon auf den Geist, aber es klappt nicht.

                1. Mit echo $sql; bekomme ich folgende Meldung:

                SELECT * FROM news WHERE id IN('.implode(', ', Array).')

                Müssten statt Array nicht die Werte der Max(id) drinnenstehen????

                2. Wenn ich mir das array folgendermaßen anzeigen lasse:

                $sql="............";
                $result=........;
                $wert=array();
                while(.......)
                {
                $maxid=["maxid"];
                $wert[]=$maxid;
                $anzeige=implode(',',$wert);
                echo $anzeige;

                Dann krieg ich für $anzeige folgendes:
                6161,59
                Er liest mir also die höchste id die gefunden wird überhaupt 2mal aus
                Warum??????

                Danke
                Gabi

                1. Hallo Harry,
                  Hab das Problem gefunden bzw. gelöst:
                  Nachdem die einfachen Hochkommas auch nichts bewirkt haben, hab ich doppelte Hochkommas gesetzt, jetzt funkts.
                  $sql="SELECT * FROM news WHERE id IN(".implode(", ", $wert).")";

                  Danke für Deine Hilfe
                  lg
                  Gabi

                  1. Holladiewaldfee,

                    Nachdem die einfachen Hochkommas auch nichts bewirkt haben, hab ich doppelte Hochkommas gesetzt, jetzt funkts.
                    $sql="SELECT * FROM news WHERE id IN(".implode(", ", $wert).")";

                    $sql='SELECT * FROM filiale WHERE id IN('.implode(', ', $wert).')';

                    Die Unterschiedlichen Anführungszeichen machen hier keinen Unterschied. Allerdings hast Du den Namen der Tabelle spontan geändert?!

                    Ciao,

                    Harry

                    --
                      Herbst ist Wanderzeit!
                      http://harry.ilo.de/projekte/berge/
      2. Holladiewaldfee,

        $sql1="SELECT MAX(id) AS maxid FROM filiale GROUP BY firma";
        $result1=mysql_query($sql1);
        $wert=array();
        while($row1=mysql_fetch_array($result1))
        {
         $maxid=$row["maxid"];

        ^^
                      Da fehlt eine "1"

        $wert[]=$maxid;

        }
        $sql="SELECT * FROM news WHERE id IN('.implode(', ', $wert).')";

        Krieg aber kein Ergebnis raus.

        Ist auch richtig so, wenn man den Fehler als richtig annimmt (toller Satz, tolle Formulierung, tolle Aussage).

        Ciao,

        Harry

        --
          Herbst ist Wanderzeit!
          http://harry.ilo.de/projekte/berge/