Hallo,

Ik heb een profielenscript en ik wil daar een vriendenlijst aan toevoegen.
Alleen wil dit nog niet helemaal lukken:(

Ik heb al veel dingen geprobeerd met en zonder join en de and's en or's omdraaien en nog wel wat.
Hieronder zie je de query:

SELECT gebruikersnaam,id
						  FROM leden_gegevens JOIN leden_vriendlijst ON id=verzender_id OR id=ontvanger_id
						  WHERE leden_vriend_uitnodiging.status='1' 
						  AND verzender_id='" .$_COOKIE['id']. "' OR ontvanger_id='" .$_COOKIE['id']. "'"


Wat de bedoeling van deze query is dat hij alle vrienden laat zien van een ingelogde gebruiker.
Dat doet hij nu ook wel alleen worden de ingelogde gebruiker 3 keer geplaatst
terwijl hij er helemaal niet in hoor.
Want je kunt natuurlijk geen vriend worden van jezelf

Dit komt er uit:
1 marc
2 Jan
1 marc
3 gijs
1 marc
4 richard

En dit moet het zijn:
2 Jan
3 gijs
4 richard

Zo ziet de tabel leden_vriendenlijst eruit:

  `verzender_id` int(11) NOT NULL,
  `ontvanger_id` int(11) NOT NULL,
  `status` int(1) NOT NULL default '0'


Hoppelijk weten jullie nu genoeg:)
Mag ik er even op wijzen dat je website nu gehackt kan worden?

Je stopt zomaar variabelen in de query zonder ze eens grondig aan een wasbeurt te hebben ondergaan. Cookies kunnen mensen zo maar veranderen.

Jouw huidige query is dus erg vatbaar voor SQL injectie.

EDIT:
WHERE id <> 1???

(1 is dan het ID van marc en <> betekent NOT)
Wees maar niet bang die dat koekje is eest langs een mysql_real_ecsape_string() gekomen.

Maar bedankt ik zal eens kijken.
status = 0 // is het een aan vraag
status = 1 // het is ge aksepteert
status = 2 // afgewezen


$sql = "INSERT INTO leden_vriend_uitnodiging (user_id , vrient_id , status )";
$sql .= " VALUES ('". $user_id ."' , '". $vrient_id ."' , '". $status ."' )" ;


$sql = "UPDATE leden_vriend_uitnodiging SET status='". $status ."' WHERE user_id=".$user_id ." AND $vrient_id=".$vrient_id ;

En men is van elkaar bevriend dus
Hoef niet als de status 2 is.

$sql = "INSERT INTO leden_vriend_uitnodiging (user_id , vrient_id , status )";
$sql .= " VALUES ('". $user_id ."' , '". $vrient_id ."' , '". $status ."' )" ;

Zo zou ik het ongeveer doen.
Alleen dan wel een paar leuke function er om heen.
Gaat het niet om een SELECT, Johan? n.v.t dus.. Je Nederlands is wel super trouwens!

Verder zou je 's kunnen gaan kijken naar een subquery... Alles ophalen behalve waar het ID gelijk is aan de ingelogde gebruiker.
Bedankt timen.
Ik ga het gelijk toepassen!
Timen schreef op 31.03.2009 19:50
Gaat het niet om een SELECT, Johan? n.v.t dus.. Je Nederlands is wel super trouwens!

Verder zou je 's kunnen gaan kijken naar een subquery... Alles ophalen behalve waar het ID gelijk is aan de ingelogde gebruiker.


LOL....

ON: Wat Johan zegt is wel waar....
Dus als ik het goed begrijp johan, staat je userID in een cookie. Dat zal dus betekenen dat ik die ID even kan aanpassen en dus iemand anders z'n profiel kan overnemen?.

Is dat het geval, begin bij het begin en zorg eerst voor goede beveiliging.
Ik irriteer me een beetje!
Waar zeg ik in hemels naam dat ik ID in een cookie zet ik heb een lost variabele naam genomen om aan te geven dat hier het ID van de destijds user die in gelogd is.
die daar ingevuld moet worden.

Nee natuurlijk niet in een cookie zou ik alen het session id “dat is een redelijk rand ID in zo ver dat het rand is op een PC ”.
Die ik bij het inlogen aan de user hang.

Ps het was een voor beelt han hoe het zauw kunnen.
Om een vriend Tbtje te kunnen makken.
En zo als ik ze ik zou er een leuke function er om heen makken.

johan schreef op 01.04.2009 00:03
Ik irriteer me een beetje!
Waar zeg ik in hemels naam dat ik ID in een cookie zet ..........
SELECT ..........'" .$_COOKIE['id']. "' OR ontvanger_id='" .$_COOKIE['id']. "'" '

Je mag je dan iriteren aan somige reacties, Maar je wekt in je 1e post toch duidelijk de indruk dat je COOKIEs gebruikt!

Maar vergeet niet dat de mensen hier in het algemeen meer ervaring hebben, en dus ook vaak genoeg op de koffie zijn gekomen door o.a. SQL injections. Een gewaarschuwd mens telt voor 2.

* EDIT *


SELECT naam,members.id AS wie  
            FROM members LEFT JOIN vriendjes ON (members.id=van_id AND members.id!='2') XOR (members.id=aan_id AND members.id!='2') 
            WHERE van_id='2' OR aan_id='2';


Dit geeft als resultaat op :

3 Jan
5 Monique
6 veronica
7 miranda

Dit is mijn query, welke op de zelfde manier werkt, alleen moet je de veldnamen even aanpassen. En op '2' het id nummer neerzetten van wie je het vriendjes lijst wilt zien.

Grts..
René
Hmmm SORY dan dat ik het id verwek dat ik een cookie in de qeury heb staan.

Reageren