mysql while vraag

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Back-end Developer (Permanent position with the em

Bedrijfsomschrijving Dutch specialist in technical installation materials. Functieomschrijving Purpose of the position: Our client is looking for a Back-end Developer who, together with the rest of the energetic and dynamic team, is responsible for the development and management of the website. This not only concerns the development and management of the current website, but also the development of a new Headless Commerce Platform to keep the customer's website Future proof. Within the IT department, there is a real DevOps culture and the commerce team is at the forefront and tries to implement continuous improvements. Most important tasks: ï‚· Designing and

Bekijk vacature »

Medior PHP Developer

Functie omschrijving We are looking for a dutch native speaker Wil jij als developer werken bij een interne organisatie en de eigen software verder helpen ontwikkelen? Lees dan snel verder! In deze functie ga je werken als PHP Developer en de interne software en applicaties verder ontwikkelen. In het kort houdt dit in: Je gaat de interne applicaties en software verder optimaliseren. Verder bouw je verschillende API's en koppelingen tussen systemen. Je gaat het CRM-systeem door middel van PHP verder ontwikkelen. Ook ga je collega's ondersteunen bij vragen over de software en applicaties. Bedrijfsprofiel Dit bedrijf is actief in het

Bekijk vacature »

Junior Front end developer Onderwijssoftware

Functie Als Junior front end developer kom jij terecht in een klein, maar hecht team bestaande uit 5 andere developers (waarvan 2 senioren, 2 medior en 1 junior). Met de gezamenlijke missie om “ieder kind te helpen met onze software” wordt er dagelijks gepassioneerd en hard gewerkt aan ons in-house ontwikkeld platform. Deze software is gebaseerd is op AI, machine Learning en wetenschappelijke inzichten. Dagelijks zul jij werken met onze high traffic webapplicatie. We hebben ruim 300.00 gebruikers en meer dan 2 miljard records waar je te maken mee krijgt! Verder zul jij je bezighouden met: – Het ontwikkelen van

Bekijk vacature »

C# Developer

Dit ga je doen De requirements in kaart brengen van de klant; Implementeren van functionele en technische specificaties bij opdrachtgevers; Oplossen van bugs; Meewerken aan maatwerksoftware voor nieuwe opdrachtgevers; Het testen en uitleveren van nieuwe functionaliteiten naar de acceptatie en productieomgeving De database ontwikkelen en onderhouden; Hier ga je werken Onze klant is gevestigd in het westen van Nederland en is gespecialiseerd in het ontwikkelen van software voor de levensmiddelen industrie. De software die het team maakt optimaliseert voornamelijk de administratieve processen, maakt deze meetbaar en zorgt ervoor dat de data zo goed mogelijk gebruikt kan worden. Binnen een van

Bekijk vacature »

(Junior) Back-end Ontwikkelaar

Functie omschrijving We are looking for a dutch native speaker Altijd al willen werken bij een organisatie, die maatwerk applicaties bouwt, die echt impact hebben in de maatschappij? Dit is je kans. Voor een kleine organisatie in de regio van Eindhoven ben ik op zoek naar een C# Ontwikkelaar. Jij gaat aan de slag met de ontwikkeling van maatwerk software en applicaties. Deze organisatie werkt voor grote organisaties in Nederland, maar ook voor het MKB. De projecten waar je aan gaat werken zijn erg divers, waardoor je werk uitdagend blijft en je erg veel kan leren. Verder ga je aan

Bekijk vacature »

Junior/medior Back end developer PHP, Laravel

Functie Jij als ontwikkelaar komt te werken in een team bestaande uit 4 back end programmeurs, 2 vormgevers/ Front end developers en een online marketeer. Qua persoonlijkheden is het team erg gevarieerd van sportfanaten tot gameliefhebbers en Golfers. Een ding heeft iedereen hier gemeen; Passie voor goede code. In jouw rol zul je voor veel van je tijd je bezig houden met het ontwikkelen van maatwerk features en applicaties. Daarnaast hebben wij op aanvraag ook wel eens een website of onderhoudsklusje, die opgepakt moet worden en hier ben jij ook niet vies van. Jij als full stack developer zult dus

Bekijk vacature »

Software Ontwikkelaar C# .NET

Functie omschrijving Startende Software Ontwikkelaar gezocht met kennis van C# .NET! Ben jij net klaar met je opleiding en ben je op zoek naar je eerste echte werkervaring? Of heb jij al enige werkervaring maar ben toe aan iets nieuws? Dan is dit de perfecte kans voor jou! Wij zoeken namelijk een Junior Software Ontwikkelaar die klaar is voor een nieuwe uitdaging bij een leuke werkgeven in de regio Zeist. In deze functie werk jij vaak aan verschillende projecten en ga je bij klanten op bezoek. Ben jij op zoek naar een functie met uitdaging, diversiteit en verantwoordelijkheid? Dan is

Bekijk vacature »

App Developer

Samen werken aan een gezonder Nederland en toekomstbestendige zorg voor iedereen. Dat is de impact die jij kan hebben als App Developer bij VGZ. Wil jij een bijdrage leveren aan een maatschappij waarin iedereen zich thuis voelt? Bekijk dan de vacature. Uit onderzoek van Computable is VGZ verkozen tot ‘beste niet-ICT werkgever voor ICT’ers van Nederland’ Hoe ook jij het verschil maakt Als App developer werk jij aan het belangrijkste communicatiekanaal van VGZ, namelijk de App! Als App developer bij VGZ maak je onderdeel uit van een van onze App-teams. Met een goede mix van kennis en ervaring zet je

Bekijk vacature »

Front-end developer Supply Chain Angular, ReactJS,

Functie Het development team bestaat momenteel uit 9 fullstack (Python en .NET) developers. Binnen het team ga jij je toespitsen op het creëren van de optimale toegankelijkheid en user experience. Om dit voor elkaar te krijgen zul je ontwerpen, programmeren, testen en implementeren. Het hele proces dus! Maar ook bijvoorbeeld meedenken over strategie en design. Hierin krijg je veel vrijheid om de functie naar eigen inzicht in te vullen en te pionieren. Alle data die wordt gebruikt is zichtbaar in een webapplicatie, geschreven in Angular en React. Momenteel zijn ze bezig om de dashboards anders vorm te geven en de

Bekijk vacature »

Mendix Consultant / Developer

Dit ga je doen Het in kaart brengen en analyseren van de functionele wensen van de klant rondom Mendix applicaties; Het fungeren als sparringpartner voor de (interne) klanten; Het opstellen van requirements en het vertalen hiervan naar technische mogelijkheden; Het opstellen van user stories; Het bouwen van de Mendix applicaties in samenwerking met jouw team of zelfstandig; Het testen van op te leveren software en het zorg dragen voor de implementatie; Trainen van gebruikers in het gebruik van de applicatie; Werken in een Agile omgeving. Hier ga je werken De organisatie begeeft zich in de retail branche en focust zich

Bekijk vacature »

.Net Front-end Ontwikkelaar

Wij zoeken een .Net Front-end Ontwikkelaar! Omschrijving Kun jij snel schakelen en ben je stressbestendig? Dan zoeken wij jou! Als .Net Front-end Ontwikkelaar help je mee aan de webapplicatie die over de hele wereld door allerlei bedrijven wordt gebruikt. Je werkt daarnaast mee aan nieuwe en verbeterde functionaliteiten en helpt met het oplossen van bugs. Over de opdrachtgever Je komt te werken in een ambitieus team dat zich blijft ontwikkelen. Dit is alle informatie die we nu kunnen delen over de werkplek. Als jij de .Net Front-end Ontwikkelaar bent voor deze job, vertellen we je snel nóg meer. Eisen Heb

Bekijk vacature »

Fasttrack learning & development voor Java dev

Wat je gaat doen: Wij zoeken enthousiaste en ambitieuze junior en medior ontwikkelaars die toe zijn aan de volgende stap in hun carrière. Wij helpen je op je pad naar senior ontwikkelaar door ons fasttrack learning en development programma. Na een kort en intensief programma ga jij aan de slag bij klanten van DPA. Daarnaast krijg je veel ruimte om je te ontwikkelen als persoon en als specialist. De eerste maand gaan we aan de slag om je certificeringen te behalen waaronder OCP (Oracle Certified Professional). Daarnaast nemen we een deepdive in Spring Boot. Ook laten we je kennismaken met

Bekijk vacature »

.NET Developer

Functie omschrijving Jij gaat in de functie van Software Developer werken met C# en .NET framework. Jij gaat maatwerk software ontwikkelen en softwareoplossingen creëren. Daarnaast optimaliseer je de bestaande software. Oplossingen waar de klant echt iets aan heeft, jij krijgt er energie van op dit te realiseren. Je gaat werken in een Microsoft omgeving(ASP.NET) en gebruikt daarnaast C# en MVC. Samen met het huidige IT team binnen deze organisatie verwerk je de wensen van de klant tot een (eind)product. Bedrijfsprofiel Je komt te werken in een klein team van developers, die zich voornamelijk bezighouden met back-end development. Verder staat dit

Bekijk vacature »

Front-end developer (React)

Functie Het frontend team bestaat momenteel uit 4 dedicated front-enders en is hard aan het groeien! Ook werken er diverse designers waar je veel mee schakelt. Samen leveren jullie een essentiële bijdrage aan de applicaties die ze voor hun klanten realiseren, jij bent hierin de schakel tussen de eindgebruiker en de slimme backend. Je werkt in het frontend team samen met de backend teams en product owners om te zorgen dat onze applicaties een fijne gebruikerservaring opleveren. Ze werken o.a. met: React, Atomic design, Styled components, JavaScript / TypeScript, NPM, Webpack Blade templates, HTML, SCSS, Git flow. Eisen • HBO

Bekijk vacature »

Java Developer

Dit ga je doen Het ontwikkelen van nieuwe software; Het ombouwen van de bestaande software; Zowel back- als front-end software ontwikkelen; Het testen; Het implementeren van de volledig geteste software; Het verzorgen van nazorg en het oplossen van bugs; Het opstellen en bijhouden van procesdocumentatie; Je draagt bij aan het agile/scrum processen van het team. Hier ga je werken Ongetwijfeld heb je een of meerdere producten van deze organisatie in huis. Het proces erachter, daar ben je ongetwijfeld minder bekend mee. Deze opdracht geeft je de kans meer over dit proces te weten te komen en een mooie bijdrage te

Bekijk vacature »

Pagina: 1 2 volgende »

Eeyk Vd noot

Eeyk Vd noot

14/03/2015 16:05:33
Quote Anchor link
goede middag, kan iemand mij uitleggen hoe dit werkt?

ik heb hier een script :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$sql_sql
= mysqli_query($dbcreat,
"SELECT * FROM `vriendenlijst` WHERE
`naam_1`='"
.mysqli_real_escape_string($dbcreat,$data->login)."' or
`naam_2`='"
.mysqli_real_escape_string($dbcreat,$data->login)."' AND `bevestigd`='1'") or die(mysqli_error($dbcreat));
 
$sqll     = mysqli_fetch_object($sql_sql);
$sqll_gevonden  = mysqli_num_rows($sql_sql);

 $berichten = mysqli_query($dbcreat,"SELECT * FROM berichten_muur
  WHERE
  `gebruikersnaam`='"
.mysqli_real_escape_string($dbcreat,$data->login)."' or
  `gebruikersnaam`='"
.mysqli_real_escape_string($dbcreat,$sqll->naam_1)."' or
  `gebruikersnaam`='"
.mysqli_real_escape_string($dbcreat,$sqll->naam_2)."'");

while($object = mysqli_fetch_object($berichten)){
 
?>

het probleem is dat als je 3 vrienden hebt je maar 3 berichten te zien krijgt.
maar als er 10 berichten zijn en je hebt maar 3 vrienden blijven er maar 3 berichten staan.
hoe krijg ik dit dat als er 10 berichten zijn dat je ze ook alle 10 te zien krijgt en niet maar 3?

kan iemand mij helpen? ik ben al paar dagen bezig met deze fout, ik heb al van alles geprobeert van Inner en cross join en nog veel meer.
 
PHP hulp

PHP hulp

20/04/2024 03:22:07
 
Thomas van den Heuvel

Thomas van den Heuvel

14/03/2015 16:42:51
Quote Anchor link
(A OR B) AND C
is iets compleet anders dan
A OR (B AND C)

Het lijkt mij altijd beter om expliciet te zijn in wat je bedoelt. Volgens mij was zo'n AND/OR vraag al eerder aan de orde geweest?

Daarnaast: gebruik (ook hier :)) user ID's in plaats van user namen...

Tevens: misschien kun je dit splitsen in VERZONDEN en ONTVANGEN berichten?
 
Eeyk Vd noot

Eeyk Vd noot

14/03/2015 17:01:48
Quote Anchor link
Je verzend niks en ontvangt niks.
het is een soort gastenboek waar je kan lezen wat je vrienden typen.
ook als ik dit veranderd in user->id werkt er niks.

er blijven maar 3 berichten staan.


alleen als ik

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php  $berichten = mysqli_query($dbcreat,"SELECT * FROM berichten_muur"); ?>


gebruik en in de while

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
 if($vrienden->naam_1 == $gebruikersnaam or $vrienden->naam_2 == $gebruikersnaam or $data->login == $gebruikersnaam
?>


werkt het prima. alleen het probleem is dat ik dan geen pagina 1 2 3 4 5 ect kunt toevoegen omdat als ik dat wil toevoegen de pagina nummer werken op het aantal vrienden dat je hebt.

weet iemand het antwoord?
Gewijzigd op 14/03/2015 17:02:36 door Eeyk Vd noot
 
Thomas van den Heuvel

Thomas van den Heuvel

14/03/2015 17:14:48
Quote Anchor link
Ik zou eerst je vriendelijst eens fixen. Zowel naam1 als naam2 kun je zelf zijn.

Daarnaast zou ik user id's gebruiken.

Hieruit bouw je dan uiteindelijk een lijst van vrienden-id's.

Dan kun je een query bouwen waarbij je bericht opvraagt die ofwel van jou zijn, ofwel van een (bevestigde) vriend.

Of je bouwt een lijst van gebruiker-id's, waarbij je bestaande gebruiker-ids (jezelf) steeds overschrijft zodat je een lijst van unieke gebruikers overhoudt. Die je weer voor de berichtenmuur-query kunt gebruiken.

EDIT: het probleem is ook dat je van je eerste query maar één resultaat ophaalt...
Gewijzigd op 14/03/2015 17:16:17 door Thomas van den Heuvel
 
Eeyk Vd noot

Eeyk Vd noot

14/03/2015 17:20:34
Quote Anchor link
Hoe zorg ik er voor dat de query meerderemaals word opgehaald?
 
Thomas van den Heuvel

Thomas van den Heuvel

14/03/2015 17:24:06
Quote Anchor link
Lees die vraag nog eens hardop voor :).

Het is niet geheel ondenkbaar dat dit meerdere resultaten oplevert:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$sql_sql
= mysqli_query($dbcreat,
"SELECT * FROM `vriendenlijst` WHERE
`naam_1`='"
.mysqli_real_escape_string($dbcreat,$data->login)."' or
`naam_2`='"
.mysqli_real_escape_string($dbcreat,$data->login)."' AND `bevestigd`='1'") or die(mysqli_error($dbcreat));
?>


Hoe haal je normaal meerdere resultaten op? Met een while-loop wellicht?
 
Eeyk Vd noot

Eeyk Vd noot

14/03/2015 17:30:32
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$sql_sql
= mysqli_query($dbcreat,
"SELECT * FROM `vriendenlijst` WHERE
(`naam_1`='"
.mysqli_real_escape_string($dbcreat,$data->login)."' or
`naam_2`='"
.mysqli_real_escape_string($dbcreat,$data->login)."') AND `bevestigd`='1'") or die(mysqli_error($dbcreat));
 
$sqll_gevonden  = mysqli_num_rows($sql_sql);
while($sqll = mysqli_fetch_object($sql_sql)){
 $berichten = mysqli_query($dbcreat,"SELECT * FROM berichten_muur
  WHERE
  gebruikersnaam='"
.mysqli_real_escape_string($dbcreat,$data->login)."' or
  gebruikersnaam='"
.mysqli_real_escape_string($dbcreat,$sqll->naam_1)."' or
  gebruikersnaam='"
.mysqli_real_escape_string($dbcreat,$sqll->naam_2)."'
  ORDER BY datum DESC
  "
);
}


while($object = mysqli_fetch_object($berichten)){ ?>


ik probeer nu dit maar dit geeft nog steeds niet het juiste resultaat.

Toevoeging op 14/03/2015 17:48:23:

ik heb gedaan wat je ze en alles op id gezet maar dit lost niks op helaas.
 
Thomas van den Heuvel

Thomas van den Heuvel

14/03/2015 17:51:11
Quote Anchor link
1. Bouw een vriendelijst en sla (bij voorkeur) id's of wat dan ook op in bijvoorbeeld een array.

2. Haal, mits je vriendenlijst niet leeg is, alle berichten op die afkomstig zijn van deze personen. Gebruik hierbij bijvoorbeeld de IN (...) constructie van MySQL:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$query
=
    'SELECT *
    FROM berichten_muur
    WHERE poster_id = '
.$jouwUserId.'
    OR poster_id IN ('
.implode(',', $nietLegeLijstVanVriendenIds).')';
?>


En for the love of all that is good and holy: refereer aan users via hun ID, niet via hun naam.
 
Eeyk Vd noot

Eeyk Vd noot

14/03/2015 17:54:28
Quote Anchor link
Dus dit moet ik invullen als :

$query =
'SELECT *
FROM berichten_muur
WHERE poster_id = '.$data->id.'
OR poster_id IN ('.implode(',', $sqll->id_gebruiker_2 or $sqll->id_gebruiker_2).')';

?
 
Thomas van den Heuvel

Thomas van den Heuvel

14/03/2015 17:57:57
Quote Anchor link
Nee, je moet, zoals in stap 1 staat, eerst een lijst bouwen - dit is een aparte query. De resultaten hiervan zet je in een array. Dit array gebruik je vervolgens weer in een andere query.

Lees eens goed wat ik schrijf, ik heb niet het idee dat ik onduidelijk ben.
 
Ivo P

Ivo P

14/03/2015 18:05:15
Quote Anchor link
ik heb de afgelopen week volgens mij vrijwel dezelfde vraag gezien waaruit toen een oplossing kwam met 1 query.

Was dat ook een vraag van jou, of zijn meer mensen met hetzelfde probleem bezig?
 
Eeyk Vd noot

Eeyk Vd noot

14/03/2015 18:08:43
Quote Anchor link
dat was de zelfde vraag inderdaad, het probleem echter met de oplossing van toen is dat je alle berichten 2x te zien kreeg.

en je eigen bericht 3x. ik heb nu in me database naam_1 en naam_2 vervangen door id_1 en id_2. en de gebruikersnaam in berichten muur door gebruikers_id.


als je bij de vorige oplossing 3 vrienden had kreeg je je eigen berichten 3x te zien had je 5 vrienden kreeg je je eigenberichten 5x te zien.
Gewijzigd op 14/03/2015 18:11:14 door Eeyk Vd noot
 
Dos Moonen

Dos Moonen

14/03/2015 18:38:45
Quote Anchor link
Het kan en hoort in één query.

Hier is wat pseudo SQL van hoe het zou kunnen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT kolommen FROM berichten INNER JOIN (<die query met meerdere resultaten, maar dan alleen het id> GROUP BY <id veld van het bericht>) AS ids ON ids.id = bericht.id
 
Eeyk Vd noot

Eeyk Vd noot

14/03/2015 18:57:23
Quote Anchor link
SELECT * FROM berichten_muur AS BB
INNER JOIN
(SELECT * FROM vriendenlijst AS TT
WHERE TT.naam_1='".mysqli_real_escape_string($dbcreat,$data->login)."'
OR TT.naam_2='".mysqli_real_escape_string($dbcreat,$data->login)."') AS TTT
ON BB.gebruikersnaam= TTT.naam_2 or BB.gebruikersnaam= TTT.naam_1 AND BB.pagina='overzicht'


dat heb ik al eens geprobeerd alleen dan krijg ik maar 3 berichten te zien.
en als je 4 vrienden hebt krijg je 4 berichten te zien terwijl er bijvoorbeeld 20 berichten staan.



Toevoeging op 14/03/2015 19:01:01:

ik heb er id van gemaakt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php

$berichten
= mysqli_query($dbcreat,"SELECT * FROM berichten_muur AS BB
INNER JOIN
(SELECT * FROM vriendenlijst AS TT
WHERE TT.id_1='"
.mysqli_real_escape_string($dbcreat,$data->id)."'
OR TT.id_2='"
.mysqli_real_escape_string($dbcreat,$data->id)."') AS TTT
ON
(BB.gebruiker_id = TTT.id_1 OR
 BB.gebruiker_id = TTT.id_2) AND
 BB.pagina='overzicht'
 "
) or die(mysqli_error($dbcreat));
 

?>


vrienden aanvragen en berichten plaatsen werkt nu ook op id.



Toevoeging op 14/03/2015 19:09:59:

maar nog steeds werkt het niet.
Gewijzigd op 14/03/2015 19:12:55 door Eeyk Vd noot
 
Thomas van den Heuvel

Thomas van den Heuvel

14/03/2015 19:39:01
Quote Anchor link
Door de manier waarom de vriendelijst-tabel in elkaar zit leent een oplossing met 1 query zich hier niet direct voor. Ook zou je je niet in allerlei moeilijke/onmogelijk bochten moeten wringen om het met 1 query op te lossen. Daarnaast heb je een ("jouw") vriendenlijst wellicht vaker nodig dus valt er best iets te zeggen om dat elke page-access opnieuw te berekenen en in een user-object op te slaan ofzo.

Tevens is er niets mis met de "verdeel en heers" strategie: deel je probleem op in deelproblemen die je afzonderlijk oplost. Ik snap de aversie voor meerdere queries niet.

Begin dus gewoon eerst eens met het opstellen van een array in PHP, waarin de gebruiker-id's van jouw vrienden zitten.

Deze bouwsteen kun je vervolgens toepassen in andere onderdelen, bijvoorbeeld queries.
 
Eeyk Vd noot

Eeyk Vd noot

14/03/2015 19:45:59
Quote Anchor link
Het vreemde is dat alles op andere pagina's wel werken.
bijvoorbeeld de vrienden pagina is ook opgebouwd met de zelfde soort constructie.

Afbeelding

Toevoeging op 14/03/2015 19:50:11:

Hoe bedoel je eigenlijk met array's? of zit ik nou totaal ergens anders aan te denken?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$hot
= array("ik", "jij", "tot ziens");
echo "hallo ".$hot[0].", ben eeyk en  ".$hot[1]." leuk je te ontmoeten ".$hot[2];
?>


zo iets?

Toevoeging op 14/03/2015 20:00:54:

ik gebruik nu

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$berichten
= mysqli_query($dbcreat,"SELECT * FROM berichten_muur");
$toegestaan = 1;
while($object = mysqli_fetch_object($berichten){
$gebruikersnaam = $object->gebruikers_id;
 if($vrienden->id_1 == $gebruikersnaam or $vrienden->id_2 == $gebruikersnaam or $data->id == $gebruikersnaam AND $toegestaan = 40){


$toegestaan++;
}
else{}

}

?>


als tijdelijke oplossing en kom ik er ooit achter zou het mooi zijn.
Gewijzigd op 14/03/2015 20:10:26 door Eeyk Vd noot
 
Thomas van den Heuvel

Thomas van den Heuvel

14/03/2015 20:58:56
Quote Anchor link
Bloody hell.

De lijst van jouw vrienden.

Ik type toch geen Chinees?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$mijnVrienden
= array();

$res = mysqli_query(
    $dbcreat,
    'SELECT user_id_1, user_id_2
    FROM vriendenlijst
    WHERE (user_id_1 = '
.$mijnUserId.' OR user_id_2 = '.$mijnUserId.')
    AND bevestigd = 1'

);
// bouw die lijst nou eens
while ($row = mysqli_fetch_assoc($dbcreat, $res)) {
    // overschrijf gewoon alle keys, zodat je een array met unieke gebruiker id's overhoud
    $mijnVrienden[$row['user_id_1']] = true;
    $mijnVrienden[$row['user_id_2']] = true;
}

// geef resultaat vrij
mysqli_free_result($res);
// verwijder jezelf als vriend van jezelf
unset($mijnVrienden[$mijnUserId]);
?>

Vervolgens kun je met array_keys($mijnVrienden) je queries opbouwen.

Zorg wel dat $mijnVrienden niet leeg is voordat je deze in constructies als "... IN (...)" gebruikt. Zoals hier boven al is beschreven.

Wel ff $mijnUserId en user_id_1 en user_id_2 aanpassen aan whatever jij gebruikt in je code uiteraard...

Om eerlijk te zijn, als je dit niet volgt vraag ik mij eigenlijk hardop af waarom je dan wel aan een klus als het bouwen van een soort van community bezig bent.
Gewijzigd op 14/03/2015 21:04:26 door Thomas van den Heuvel
 
Eeyk Vd noot

Eeyk Vd noot

14/03/2015 21:25:49
Quote Anchor link
Bedankt voor de moeite!

ik ga er mee aan de slag! ik hoop dat het werkt.
Nogmaals bedankt.
ik ben bezig met een soort van 'community' voor Nederlanders en belgen.
Waar men foto's, video's kan delen en met elkaar contact kan opnemen, ect.
 
Dos Moonen

Dos Moonen

14/03/2015 22:00:43
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
SELECT B.*
FROM berichten_muur AS B
INNER JOIN (
  SELECT IB.id
  FROM berichten_muur AS IB
  WHERE IB.gebruikersnaam = ?

  U N I O N ALL // zonder die spaties... phphulp lijkt een stomme anti sql-injection blacklist te hebben -.-

  SELECT IB.id
  FROM berichten_muur AS IB
  INNER JOIN vriendenlijst AS V
  ON V.naam1 = IB.gebruikersnaam
  WHERE V.gebruikersnaam = ?

  U N I O N ALL

  SELECT IB.id
  FROM berichten_muur AS IB
  INNER JOIN vriendenlijst AS V
  ON V.naam2 = IB.gebruikersnaam
  WHERE V.gebruikersnaam = ?
) AS IDS
ON IDS.id = B.id
ORDER BY een_datum_lijkt_me_handig


probeer dit eens...

Joinen op integers (altijd 4 bytes) is fijner voor een database dan joinen op strings (varchars zijn variabel in lengte, hoeveel bytes per teken hangt af van de encoding. het kan zijn dat 'dos' als 12 bytes kost om op te slaan.)
vervang het veld gebruikersnaam is tabel berichten_muur dus aub door een id en haal de gebruikers naam op via een join...
Hoe langer je wacht hoe moeilijker het wordt die fout te verbeteren.

PS. het GROUP BY gedeelte van mijn pseudo code was erg belangrijk...
PPS. PosqlgreSQL > MySQL
Gewijzigd op 14/03/2015 22:02:48 door Dos Moonen
 
Eeyk Vd noot

Eeyk Vd noot

14/03/2015 22:34:26
Quote Anchor link
@dos moonen Thanks het werkt alleen ik blijf deze fout houden.
met alles wat ik doe, iedere manier.

alles komt dubbel vrienden aantal = jou bericht dubbel.
dus 4 vrienden = 4x jou bericht zichtbaar.

Afbeelding


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
$vrienden_bericht
= mysqli_query($dbcreat,
"SELECT * FROM `vriendenlijst` WHERE (`naam_1`='".mysqli_real_escape_string($dbcreat,$data->login)."' or `naam_2`='".mysqli_real_escape_string($dbcreat,$data->login)."') AND `bevestigd`='1' LIMIT 0,2500") or die(mysqli_error($dbcreat));
while($ovj     = mysqli_fetch_object($vrienden_bericht)){
$berichten = mysqli_query($dbcreat,"
SELECT B.*
FROM berichten_muur AS B
INNER JOIN (
  SELECT IB.id
  FROM berichten_muur AS IB
  WHERE IB.gebruiker_id = '"
.mysqli_real_escape_string($dbcreat,$ovj->id_1)."' or IB.gebruiker_id = '".mysqli_real_escape_string($dbcreat,$ovj->id_2)."'
  
  U NION ALL
  
  SELECT IB.id
  FROM berichten_muur AS IB
  INNER JOIN vriendenlijst AS V
  ON V.id_1 = IB.gebruiker_id
  WHERE V.id_1 = '"
.mysqli_real_escape_string($dbcreat,$ovj->id_1)."'
  
  U NION ALL
  
  SELECT IB.id
  FROM berichten_muur AS IB
  INNER JOIN vriendenlijst AS V
  ON V.id_2 = IB.gebruiker_id
  WHERE V.id_2 = '"
.mysqli_real_escape_string($dbcreat,$ovj->id_2)."'
) AS IDS

ON IDS.id = B.id
ORDER BY B.datum DESC"
) or die(mysqli_error($dbcreat));
}

?>
Gewijzigd op 14/03/2015 22:47:45 door Eeyk Vd noot
 
Dos Moonen

Dos Moonen

15/03/2015 11:41:21
Quote Anchor link
Woops, de twee selects met joins hebben een group by clause nodig, of haal het 'ALL' weg.
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.