Mailinglisten-Archive |
Hallo,
was soll denn das privat an mich??
> Hoi Thomas,
> Kleine Bitte vorweg: Poste Antworten auf Listenmails auch immer in die
> Liste, es sei denn, es ist offtopic.
>> Hallo Jens,
> Jan. Aber das macht auch nichts :)
>> warum es do{} while sein muss.
> Ganz einfach: Du hast mit deiner Abfrage eine Struktur erzeugt, die so
> viele Zeilen wie Angebote hat (1 Anbieter gekreuzt mit n Angeboten macht
> 1 * n = n Zeilen). In den ersten Spalten steht jeweils das Angebot, in
> den hinteren Spalten der Anbieter, der ja in jeder Zeile gleich ist.
> Mit dem ersten Fetch liest du die erste Zeile ein. Du erhaelst eine
> Zeile, die hinten den Anbieter enthaelt (das tun ja alle), aber vorne
> bereits das erste Angebot! Wenn du jetzt in die Angebotsschleife
> eintrittst, dann darfst du nicht nochmal einen Fetch machen, denn sonst
> erhaelst du die 2. Zeile! Der Fetch darf erst HINTERHER erfolgen. Deshalb
> do {} while.
>> Warum steht die kundenliste so sehr von der angeboteliste in
>> Abhaengigkeit. Muss die Abfrage vielleicht noch anders aussehen?
> Das zweite Problem ist direkt mit dem ersten verknuepft: Wenn dein
> Anbieter noch kein Angebot hat, dann kriegst du mit deiner Abfrage 0
> Datensaetze! Warum? Weil 1 Anbieter mit 0 Angeboten ergibt 1 * 0 = 0
> Datensaetze!
> Du musst dir erst mal klar werden, was so eine Abfrage ueberhaupt macht.
> Ich habe am 13.9. unter dem Thema "Re: Select-Alternative" eine Mail
> gepostet, die die grundlegenden Eigenschaften von Abfragen mit
> Verknuepfungen, sogenannten JOINS, erklaert. Such sie und lies sie dir
> durch.
> Dein Problem liesse sich nun auf zweierlei Weise loesen:
> Entweder du machst statt dem INNER JOIN (durch das Komma zwischen den
> Tabellen festgelegt) einen Anbieter LEFT JOIN Angebote, dann liefert die
> Datenbank auch Eintraege fuer Anbieter zurueck, die noch kein Angebot
> haben. Allerdings musst du dann beim Eintritt in die do {} while
> -Schleife abchecken, ob ueberhaupt ein Angebot vorliegt.
> Logischer, sinnvoller und performanter waere es, die beiden Abfragen zu
> trennen. Frag zuerst den Anbieter ab, danach die Angebote mit WHERE
> anbieter_id=$anbieter.
> Gruss Jan
> --
>> Hallo Jens,
>>
>> bei den Schleifen wird mir noch ganz schwindelig. Da muss ich aber
>> noch mal nachlesen, warum es do{} while sein muss. Aber super,
>> dass das geklappt hat.
>> Eine kleine Falle hast du mir aber noch bei deiner Loesung
>> eingebaut. Du hast das ; ausgelassen :-) Ist mir direkt
>> aufgefallen, weil ich wegen eines fehlenden Semikolons schon mal
>> einen halben Tag vor einem Script gesessen habe. Nun bin ich
>> sensibilisiert fuer semis :-)
>>
>> Kannst du mir vielleicht sagen, warum nun aber Leute, die noch
>> keinen Eintrag vorgenommen haben, sich nicht einloggen koennen?
>> Warum steht die kundenliste so sehr von der angeboteliste in
>> Abhaengigkeit. Muss die Abfrage vielleicht noch anders aussehen?
>> Wenn ja, werde ich mal dort suchen.
>>
>> Danke und Gruss,
>>
>> Thomas Barth...
> ---
> *** Weitere Infos zur Mailingliste und MySQL unter www.4t2.com/mysql
---
*** Weitere Infos zur Mailingliste und MySQL unter www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive