maxid in array packen und damit neues select starten
gabi
- datenbank
Morgen zusammen,
Stehe grad vor folgendem Problem:
$sql1="SELECT MAX(id) AS maxid FROM filialen GROUP BY firma";
$result1=mysql_query($sql1);
while($row1=mysql_fetch_array($result1))
{
$werte=array($row1['maxid']);
}
$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
Holladiewaldfee,
die prinzipielle Vorgehensweise:
$a = array()
while(...)
$a[] = $wasauchimmer
$query = '... id IN('.implode(', ', $a).') ...';
Ciao,
Harry
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
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
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
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);
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
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
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
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
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