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