mysql while vraag

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Back-End Web Developer

As a Back-End Web Developer at Coolblue, you ensure that our webshops work as optimal as possible. How do I become a Back-End Web Developer at Coolblue? As a Back-End Web Developer you work together with other development teams to make our webshop work as optimal as possible and to make our customers happy. Although you are a PHP Developer, you also feel confident with setting up microservices in Typescript or are open to learning this. Would you also like to become a PHP Developer at Coolblue? Read below if the job suits you. You enjoy doing this Writing pure

Bekijk vacature »

Front-end Developer

Onze klant is sinds 2 jaar actief als adviseur en bemiddelaar in de verzekeringsmarkt. Sindsdien proberen zij deze slapende markt flink wakker te schudden. Dit willen zij doen door het bouwen van slimme vergelijkers op hun eigen website en die van partners. Het bedrijf wil continu voorop lopen, zodat consumenten eenvoudig de verzekeringen kunnen vinden die het beste bij ze past. Functieomschrijving Als Front-end Developer werk je aan vergelijkingsmodules die consumenten dagelijks gebruiken bij het vergelijken en afsluiten van verzekeringen. Je vindt het leuk om samen te werken met de product owner, bestaande modules te verbeteren en nieuwe vergelijkers "from

Bekijk vacature »

Front-end Developer Angular

Dit ga je doen Jouw taken als Front End Developer bestaan uit: Het ontwikkelen van maatwerkoplossingen voor klanten; Het meedenken over nieuwe tools en technieken; Het begeleiden van junioren; Het meewerken aan diverse projecten; Het meedenken in UX/UI design. Hier ga je werken Als Front-End Developer ga je in een Scrum team aan de slag met de nieuwste digitale technologieën om klanten en overheden over de hele wereld te ondersteunen met het ondersteunen van hun software, veelal op het gebied van watermanagement en infra. Door middel van real-time data in combinatie met voorspellende analyses, AI, Deep Learning en Machine Learning

Bekijk vacature »

C# Unity Developer

Functieomschrijving Ontwikkel jij mee door applicaties te bouwen die bijdragen aan het optimaliseren van processen? Voor een erkende werkgever in regio Tilburg zijn wij op zoek naar een Unity C# Developer die graag de uitdaging aangaat! Jouw werkzaamheden zullen er als volgt uitzien: Je bent een luisterend oor naar klanten en vertaalt hun wensen door naar bruikbare software; Je werkt aan innovatieve softwareoplossingen voor het verbeteren en/of vernieuwen van processen; Je bent verantwoordelijk voor het uitvoeren van updates/aanpassingen aan de reeds draaiende applicaties. Bedrijfsprofiel Je komt te werken voor een internationale werkgever in regio Tilburg. Samen met een vooruitstrevend team

Bekijk vacature »

UX Writer (m/v/d)

UX Writer (m/v/d) Everything we do, starts with you. Together with you, we build the most human-centric fintech. We have the ambition to create the next. And - with Bertelsmann - a strong foundation to start from. Let’s make it new – for society and for yourself. Wij zijn op zoek naar een UX Writer (m/v/d) Fulltime - Op ons kantoor in Amsterdam of Heerenveen / deels vanuit huis Als UX Writer bij Riverty hou jij je bezig met onze strategie om daar te zijn waar onze gebruikers zijn en op de manier waarop zij ons nodig hebben, terwijl wij

Bekijk vacature »

Junior Front end developer

Functie Jij als developer gaat ons helpen onze producten verder te ontwikkelen en in te zetten in de markt. Op dit moment bestaat ons SaaS product uit 3 componenten die zowel los als in een pakket gekocht kunnen worden. Het gaat hier om een online kaartapplicatie, een workflow tool en een monitoring tool. Momenteel zijn wij 3 jaar geleden gestart met de ontwikkeling. De tech-stack waarmee we werken is voornamelijk Javascript, Vue.js en Python. Daarnaast gebruiken wij FaundaDB als database en werken we veel met GIS applicaties. De uitdaging die we momenteel hebben is dat we momenteel een intern team

Bekijk vacature »

.NET Developer

Functie De perfecte combinatie tussen techniek en vastgoed. Werk samen met de senior software developer om allerlei software van fluX te verbeteren. Gelukkig voel jij je helemaal thuis in de codewereld van .NET. Dus of je nu bezig bent met het verhogen van de conformiteitscore of het automatiseren van allerlei taxatiemodellen, jij weet precies hoe je de doelstellingen realiseert. En dat terwijl je ook samenwerkt met een extern ontwikkelteam. Waar dit team bepaalde softwaresystemen ontwikkelen, richt jij je vooral op onze Nederlands georiënteerde producten en alle wetgeving die daarbij komt kijken. Voor minimaal 32 uur per week verrijk jij onze

Bekijk vacature »

Software Developer C# .NET

Functie omschrijving Zoek jij een nieuwe uitdaging binnen development waar je komt te werken binnen een flexibel, jong en ondernemend bedrijf? Wij zijn voor deze functie op zoek naar een C# .NET Developer die enthousiast wordt van het aansluiten en begeleiden van (complexe) nieuwe klanten. Verder begeleid je complexe projecten, ben jij iemand die altijd kansen ziet? Dan zoeken wij jou! Verder ga jij je bezighouden met: Het verbeteren van functionaliteiten binnen het dataplatform; Meedenken in oplossingsrichtingen; Werken aan de architectuur; Ontwikkelen van nieuwe technologieën. Bedrijfsprofiel Waar ga je werken? De organisatie waar je voor gaat werken heeft een onafhankelijk

Bekijk vacature »

Senior .NET developer

Functie Als Senior .NET ontwikkelaar ga jij aan de slag in ons Research & development team. Ons team bestaat uit 17 collega’s! Wij zijn momenteel druk bezig met het opzetten van een geheel nieuwe architectuur voor een nieuw product. Hierbij maken wij o.a. gebruik van VS2022 en .NET 6.0. Jouw functie is dan ook voornamelijk backend georiënteerd bij ons. Aangezien wij meetapparatuur ontwikkelen voor de chemische industrie is het ook erg belangrijk om kwalitatief hoogwaardige software te ontwikkelen voor de besturing hiervan. Verder ben jij verantwoordelijk voor het designen, implementeren en testen van nieuwe features. Ook zorg jij voor toekomstbestendige

Bekijk vacature »

Ervaren C#.NET programmeur

Functieomschrijving Voor een moderne werkgever in regio Prinsenbeek zijn wij op zoek naar een ervaren C#.NET programmeur die graag de uitdaging aangaat. Je houdt je bezig met het ontwikkelen van maatwerk webapplicaties voor diverse klanten, waarbij complexe processen optimaal worden ondersteund. Verder ziet jouw takenpakket er als volgt uit: Ontwikkelen en onderhouden van C#.NET-applicaties; Schrijven van hoogwaardige, herbruikbare codes; Schrijven van technische documentatie en gebruikershandleidingen; Bijdragen aan het ontwerp en de architectuur van softwaretoepassingen; Troubleshooten en oplossen van bugs in softwaretoepassingen; Werken met databases en dataopslagoplossingen; Implementeren van beveiligingsoplossingen en het waarborgen van de beveiliging van applicaties en gegevens. Bedrijfsprofiel

Bekijk vacature »

Integratie Developer / Architect

Dit ga je doen Als Integratie Developer / Architect binnen deze organisatie krijg je echt de kans om impact te maken. De organisatie is groeiende maar houdt een corporate cultuur buiten de deur. Heb je een goede business case: zorg voor goede argumentatie en ga ervoor! Geen stroperig beslissingsproces dat jouw ideeën in de weg staat! Enkele van jouw taken: Je ontwerpt en ontwikkelt nieuwe integraties met behulp van interne tools (Boomi) of externe partners; Je vertaalt functionele specificaties naar technische oplossingen; Je denkt mee over strategische ontwikkelingen op het gebied van applicatie integratie; Je voert regie op leveranciers en

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Backend Developer PHP Laravel SaaS

Dit ga je doen Het ontwikkelen van nieuwe features die bijdragen aan de groei van de klanten van de organisatie; Je denkt mee over nieuwe innovaties, features en verbeteringen in de applicatiearchitectuur; Je draagt bij aan de continue ontwikkeling van jouw team doordat je elke dag streeft naar het verbeteren van jouw eigen prestaties; Je neemt actief deel aan Scrum meetings en de Backend Guild. Hier ga je werken Voor een snel groeiend bedrijf, in de regio Nieuw Vennep, zijn wij opzoek naar een ervaren Backend Developer. De organisatie is actief in de e-commercebranche en ontzorgt haar klanten middels een

Bekijk vacature »

Embedded Developer C++

Functie omschrijving Ben jij op zoek naar een leuke uitdaging als Embedded Developer, zoek dan niet verder! Voor een leuke opdrachtgever in omgeving Rotterdam zijn wij op zoek naar een Embedded Developer die graag met Embedded Devices werkt. Je zult verantwoordelijk worden voor het ontwikkelen en onderhouden van diverse producten. Jouw specialisatie ligt op het vlak van software, hardware en back-end. Dit bedrijf is gespecialiseerd in het ontwerpen van software voor een unieke industrie. Wil jij betrokken worden bij een proces dat loopt van ontwikkeling tot installatie? Waarbij je bezig zult zijn met perfecte systemen die geleverd worden aan binnen

Bekijk vacature »

Medior .NET Ontwikkelaar

In het kort Als .NET ontwikkelaar ga je binnen onze business unit Transport en Logistiek aan de slag complexe maatwerk software voor bedrijf kritische systemen binnen de technische automatisering. Denk bijvoorbeeld een IoT-oplossing voor de logistieke sector waarbij we van ruim 200.000 machines de telemetrie en events verwerken. We zijn actief in de distributielogistiek, havenlogistiek en productielogistiek. Naast C# en .NET Core maken we ook gebruik van Azure technologie. En als trotse Microsoft Gold Partner leren we graag van en met jou. Wil jij jezelf blijven ontwikkelen binnen de technische automatisering met .NET, dan gaan we deze uitdaging graag met

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

25/04/2024 13:52:27
 
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.