SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Der CSS-Problemlöser

Der CSS-Problemlöser zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)
Hilfe Community Kalender Heutige Beiträge Suchen

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 28.09.2014, 16:39:39
steffileinchen steffileinchen ist offline
Anfänger
 
Registriert seit: Sep 2014
Alter: 39
Beiträge: 2
Benutzersuche mit Einstellugen

Hallo liebe SelfPHP-Gemeinde,

ich bin gerade dabei ein kleines Portal zu basteln, in dem sich User registrieren können. Nun möchte ich noch eine Suche hinzufügen. Eigentlich ja kein Problem, wenn ich nicht einige Suchkriterien durch Privatsphäreeinstellungen gesichert hätte.
Also zum allgemeinen Verständnis. Die User dürfen sich ein Profil anlegen. Bei jedem privaten Detail darf der User entscheiden, ob es nur von Ihm gesehen werden darf, von seinen Freunden oder von allen. Desweiteren kann der User auch angeben, ob er über die Suche gefunden werden möchte.
Die persönlichen Daten werden in der Tabelle user gespeichert und die Privatsphäreeinstellungen (inkl. ob der User in der Suche gefunden werden möchte) in der Tabelle user_privacy.
Tabelle user enthält eine ID und die einzelnen Daten. primary key ist natürlich die ID
Tabelle user_pravacy ist der primary key zusammengesetzt aus der user_id und dem Namen, welches Element geschützt werden soll. 3. Spalte ist dann nur ein value (0 - nur ich, 1 - Freunde, 2 - alle) Sieht dann in etwa so aus
user_id | name | value
1 | geburtsdatum | 2
1 | Wohnort | 1
1 | suche | 2 (0 heißt, der User will nicht gefunden werden, 1 nur freunde dürfen ihn finden, 2 alle dürfen ihn finden)

So jetzt mal kurz zu meiner SQL Anfrage, wenn man noch Usern in einer bestimmten Stadt sucht

Code:
SELECT DISTINCT id 
FROM users u 
LEFT JOIN users_privacy p ON (u.id = p.user_id) 
WHERE city LIKE '%münchen%'
Funktioniert ohne Probleme! Nun mal hinzufügen, dass der User noch gefunden werden möchte

Code:
AND (
                   (p.name='search' AND p.value='2') 
                   OR 
                   (u.id IN (SELECT contact_user_id 
                                FROM users_contact 
                                WHERE user_id='1122') 
                    AND p.name='search' AND p.value='1')
                   )
Soweit funktioniert noch alles. Der erste Teil sagt ja nur, dass wenn meine Such-Privatsphäreeinstellung auf 2 steht, der User gefunden wird. Nach dem OR die SELECT-Anweise sucht alle Kontakte von dem User und funktioniert nur, wenn Sucher und Gefundener bereits befreundet sind.
So, jetzt möchte ich auch noch überprüfen, ob der Gefundene auch seine Privatsphäreeinstellung für den Wohnort frei gegeben hat

Code:
AND (
                   (p.name='city' AND p.value='2') 
                   OR 
                   (u.id IN (SELECT contact_user_id 
                                FROM users_contact 
                                WHERE user_id='1122') 
                    AND p.name='city' AND p.value='1')
                   )
also wird das noch angehängt und schwups, die Anfrage funktioniert nicht mehr. (Bedingung ist aber richtig formuliert, ohne die 'search'-Bedingung funktionierts)

Meine Vermutung ist, dass man wahrscheinlich nicht nach mehreren Zeilen suchen kann.
Die einzige Idee, die ich jetzt noch habe, ist die Such-Einstellung über PHP vorzunehmen, aber eigentlich wollte ich alles über die SQL Abfrage machen.

Hat irgendwer eine Idee, wie man das noch umsetzen könnte?!?

Vielen Dank schonmal für eure Hilfe

LG, Steffi


Falls ich zu verwirrend geschrieben habe, bin ich auch gerne bereit einzelne Punkte noch mal zu erklären :)
Mit Zitat antworten
  #2  
Alt 28.09.2014, 18:01:22
Ckaos Ckaos ist offline
Member
 
Registriert seit: Nov 2007
Beiträge: 843
AW: Benutzersuche mit Einstellugen

Hi,

Zitat:
ich bin gerade dabei ein kleines Portal zu basteln
viel Glück ;)

Zitat:
WHERE city LIKE '%münchen%'
Ohje, das ist nicht indexierbar. Like benutzt nur den Index wenn das
erste % weggelassen wird und damit sucht der "alle" ab...
Tip: Benutz die GEODB oder GoogleApi und schlage Städte vor inkl. PLZ
Dann kannst du auch Umkreissuche einfügen.

Zitat:
Meine Vermutung ist, dass man wahrscheinlich nicht nach mehreren Zeilen suchen kann.
Kannst du, aber nicht so.
Du willst eine Ergebniszeile verknüpfst aber eine Tabelle mit einem (user) und eine andere (user_privacy) die X hat.
Versuche die zweite mehrmals zu joinen z.B.
Code:
SELECT DISTINCT id 
FROM users u 
LEFT JOIN users_privacy up_city ON (u.id = up_city.user_id and up_city.name='Wohnort') 
LEFT JOIN users_privacy up_search ON (u.id = up_search.user_id and up_search.name='suche') 
WHERE u.city LIKE '%münchen%' and up_city.value>0 and up_search.value>0
ungetestet.

Zitat:
Falls ich zu verwirrend geschrieben habe, bin ich auch gerne bereit einzelne Punkte noch mal zu erklären :)
Normalerweise wäre es besser den "genauen" Tabellenaufbau Stichwort : show create table,
einige Testdaten Stichwort: inserts
und deine kompletten Query's + Fehlermeldungen

Na schaun wir mal wies weitergeht ;)

MfG

CKaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
Mit Zitat antworten
  #3  
Alt 29.09.2014, 11:28:58
steffileinchen steffileinchen ist offline
Anfänger
 
Registriert seit: Sep 2014
Alter: 39
Beiträge: 2
AW: Benutzersuche mit Einstellugen

Vielen lieben Dank für die schnelle Antwort... Genau das hab ich gesucht. Hat wunderbar geklappt :)
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:36:54 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt