Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
MySQL: Problem mit JOINT [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
MySQL: Problem mit JOINT


 
matze|p
03-07-2007, 15:43 
 
Hallo,

zunächst: ich habe den JOINT-Thread gelesen ;)
Trotzdem habe ich ein Problem und zwar folgendes:

Ich habe 2 Tabellen:

user_fields:
fid (key)
fieldname (varchar255)
sort (int11)

user_fields_values
id (key)
fid (int11)
uid (int11)
value (varchar255)

Das ganze wird nun so abgefragt, wobei $uid zuvor definiert wurde.

SELECT fields.fid, fields.fieldname, value.value
FROM `user_fields` fields
LEFT JOIN `user_fields_values` value
ON value.fid=fields.fid
WHERE uid='$uid'
ORDER BY fields.sort ASC

Soweit klappt auch alles wunderbar. Man kann in der Tabelle user_fields Felder definieren und für verschieden $uid's verschiedene Werte hinterlegen. Falls nun aber für eine $uid KEIN Wert vorhanden ist, wird auch der Feldname nicht ausgelesen. Genau das soll aber nicht passieren da ich, falls ein Wert nicht vorhanden ist, einfach den Feldnamen + eine entsprechend Meldung ausgeben möchte.

Wäre wirklich gut wenn jemand die Lösung parat hätte :)

Gruß matze

 
jens76
03-07-2007, 15:55 
 
also wenn du probleme mit dem JOINT hast bist hier zu 100% falsch!

und was erwartest du? wenn where die bedingung uid=$uid hat dann werden halt nur die zeilen ausgegeben in denen udi=$uid ist.

vielleicht solltest du dein where um ein " OR uid = NULL "

dann werden alle mit uid=$uid und alle mit leere uid angezeigt

 
TobiaZ
03-07-2007, 15:58 
 
zunächst: ich habe den JOINT-Thread gelesen Damit wollen wir nichts zu tun habe. :goth: ;)

Da du im PHP-Forum fragst, würde ich vorschlagen dass du einfach die feldnamen vorher (in einem Array) definierst. hat den Vorteil, dass du sogar die Reihenfolge der Ausgabe definieren kannst. (okay, du sortierst sowieso alphabetisch.)

Ansonsten würd ich spontan noch ein uid = NULL hinzufügen. dann solltest du auch die Felder geliefert bekommen, die keinen wert haben.

 
jens76
03-07-2007, 16:25 
 
feldnamen in ein array? und dann per implode nach select?!

 
TobiaZ
03-07-2007, 17:59 
 
nö, eher ne schleife in der du die werte ausgibst.
mit isset kannste prüfen ob ein entsprechender wert in deiner ergebnis (des Select) vorhanden ist.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:45 Uhr.