• Login
  • Register
  • Zoek
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Filebase Entry
  • More Options

ICTscripters

Dé plek voor IT

Dé plek voor IT

Login

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Scripting & programmeren
  4. PHP + SQL

Forum

  • Beta-testers gezocht voor Crypto-oefenplatform

    Syntax 29 januari 2026 om 16:11
  • Na 15 jaar terug van weggeweest: iCriminals.nl is terug (BETA)!

    Syntax 19 januari 2026 om 09:34
  • Developer Gezocht

    Mikevdk 10 januari 2026 om 18:57
  • Op zoek naar de legends

    Syntax 5 januari 2026 om 13:50
  • [FREE] WeFact Hosting module

    Jeroen.G 13 oktober 2025 om 14:09
  • Help testers nodig voor android app Urgent

    urgentotservices 26 september 2025 om 10:21
  • Versio vervanger

    Jeroen.G 25 augustus 2025 om 15:56
  • Afspraken systeem met planbeperking

    Lijno 1 augustus 2025 om 23:04

Marktplaats

  • 321 Nieuwe Domeinnamen December 2025

    shiga 1 januari 2026 om 10:26
  • Meerdere mafia game template te koop

    Syntax 26 december 2025 om 00:07
  • Van een pixelige afbeelding naar een strakke, moderne website

    Syntax 21 december 2025 om 17:05

PHP met distinct query in een array

  • thjeu
  • 15 januari 2014 om 20:33
  • thjeu
    Developer
    Ontvangen Reacties
    2
    Berichten
    501
    • 15 januari 2014 om 20:33
    • #1

    Hallo allemaal,

    Ik loop momenteel vast met een query die ik in een array wil hebben. Ik heb namelijk de volgende code:

    PHP
    $query = mysql_query("SELECT distinct id FROM users WHERE id in ( select `id_user_2` as id from user_likes where(`id_user_1` = '$user_id') )");

    Dit staat in een user_likes tabel. Dit is een tabel waarbij users elkaar kunnen liken, zodra beide users elkaar hebben geliked, moet er een match komen (Tinder idee). Deze tabel ziet er zo uit :

    user_id_1 user_id_2
    1 2
    1 3
    2 1
    etc.

    Nu laat ik deze waardes op de volgende manier verschijnen :

    PHP
    <?php
    // eerst username ophalen
    $username = $_GET['username'];
    //DATABSE DETAILS//require 'db.php';
    $db_handle = mysql_connect($server, $dbuser, $password_db);$db_found = mysql_select_db($database, $db_handle);
    if ($db_found) {
    	// user id ophalen
    	$user = mysql_query("SELECT * FROM users where `username` = '$username' ");	$user_row = mysql_fetch_assoc($user);
    	$user_id = $user_row['id'];
    	// Kijken naar matches	$query = mysql_query("SELECT distinct id FROM users WHERE id in ( select `id_user_2` as id from user_likes where(`id_user_1` = '$user_id') )");
    	if(mysql_num_rows($query) > 0) {
    		while($row = mysql_fetch_array($query)) {   				   				$id = $row['id'];							$liked_username_query = mysql_query("SELECT * FROM users where `id` = '$id' ");
    				$liked_user_row = mysql_fetch_assoc($liked_username_query);
    				echo '"' .$liked_user_row['username']. '", ';					}
    	}	else {		echo 'Je hebt geen matches!';	}
    
    
    
    
    }
    else {	print "Database NOT Found.";	mysql_close($db_handle);}
    
    
    ?>
    Toon Meer

    Overzichtelijke code op: http://pastebin.com/Z09pjiW0

    Echter, wil ik het op de volgende manier hebben:

    In de while wil ik een array maken, waarin deze waardes komen te staan. Dus iets als:

    PHP
    array(match_user_1 => $result_1, match_user_2 => restult_2)

    Met andere woorden, deze array moet dynamisch zijn. Hij moet zich namelijk aanpassen aan het aantal matches dat er is. Nu heb ik alleen geen flauw idee hoe ik dit moet doen. Iemand die mij hiermee kan helpen? :D


    PS: Let niet op de veiligheid en ouderdom van de queries, het gaat me alleen even om het idee en dat het werkt.

    TwistedMonkey - Media Productions

  • Quitta
    C++/Java/Python/PHP/JS/CSS/XSLT/Haskell/Prolog
    Ontvangen Reacties
    6
    Berichten
    171
    • 15 januari 2014 om 21:13
    • #2

    Klopt het dat je vraag niet zo zeer met "PHP met distinct query in een array" te maken heeft, of begrijp ik dat nu verkeerd?

    Voor zo ver ik weet kan je gewoon:

    Code
    $matches = array();
    $matches[]= "match1naam";
    $matches[]= "match2naam";
    ...

    dit add telkens achteraan in je array de nieuwste entry.
    Hierna kan je ze gewoon indexen via $matches[0], $matches[1] iirc.

    je kan ook je array dynamisch laten groeien via de push & pop methods

    of is dit niet wat je vraag is :) ?

  • thjeu
    Developer
    Ontvangen Reacties
    2
    Berichten
    501
    • 15 januari 2014 om 21:17
    • #3

    Dat is precies wat ik bedoel Quitta, maar het moet dan wel zo komen te staan:

    array(match_1 => matchnaam1, match_2 => matchnaam2)

    Dit omdat de output zal zijn:

    PHP
    json_encode($array);

    TwistedMonkey - Media Productions

  • M.Beers
    Elite members
    Ontvangen Reacties
    31
    Berichten
    460
    • 15 januari 2014 om 21:21
    • #4

    Hallo Thjeu, ik heb hier wel de oplossing voor dit heb ik namelijk ooit gebruikt voor het leggen van een relatie tussen vrienden. Ik zal het even opzoeken en in deze post aanvullen ;)

    Edit: Dit is met een querybuilder gebouwd dus er kunnen fouten inzitten maar dit zal vast wel werken
    Je zou eventueel nog een status moeten toekennen in je WHERE statements.

    SQL
    SELECT
    	*
    FROM
    	friendships
    INNER JOIN
    	users ON friendships.user_id = users.id OR friendships.friend_id = users.id
    WHERE
    	users.id != %jouw_userID% AND friendship.user_id == %jouw_userID%
    OR WHERE
    	users.id != %jouw_userID% AND friendship.friend_id == %jouw_userID%
    LIMIT 1
    Toon Meer

    Dit was mijn spreekbeurt, zijn er nog vragen?

    Bewerkt één keer, laatst door M.Beers (15 januari 2014 om 21:34).

  • thjeu
    Developer
    Ontvangen Reacties
    2
    Berichten
    501
    • 15 januari 2014 om 23:44
    • #5

    Michael, dat is niet helemaal wat ik bedoel. Met dank aan quitta heb ik wat gemaakt:

    PHP
    while($rows = mysql_fetch_array($query)) {
    
    
    				$id = $rows['id'];
    			
    				$liked_username_query = mysql_query("SELECT * FROM users where `id` = '$id' ");
    
    
    				$liked_user_row = mysql_fetch_assoc($liked_username_query);
    
    
    				$count = mysql_num_rows($query);
    
    
    					for($i = 0; $i <= $count; $i++) {
    
    
    						$matchcount = 'match_'. $i .'';
    						$match = array();
    						$match[$matchcount] = $liked_user_row['username'];
    
    
    					}
    
    
    				echo json_encode($match);
    
    
    		}
    Toon Meer

    link pastebin:
    http://pastebin.com/8fncBQGP

    Maar dit geeft mij de volgende output:

    PHP
    {"match_3":"henk"}{"match_3":"ilse"}{"match_3":"lisa"}

    wat ik wil hebben is:

    PHP
    {"match_0":"henk"}{"match_1":"ilse"}{"match_2":"lisa"}

    TwistedMonkey - Media Productions

  • Stefan.J
    Master
    Ontvangen Reacties
    9
    Berichten
    2.358
    • 15 januari 2014 om 23:50
    • #6

    Ik begrijp de output niet helemaal, maar je initialiseert in de lus iedere keer de array opnieuw, dat klopt natuurlijk sowieso niet. Wat gebeurt er als je dat oplost?

  • thjeu
    Developer
    Ontvangen Reacties
    2
    Berichten
    501
    • 15 januari 2014 om 23:56
    • #7

    Stefan en Quitta, jullie maken mijn dag geweldig! Hij werkt eindelijk.

    Complete code:

    PHP
    $counter = 0;
    
    
    		while($rows = mysql_fetch_array($query)) {
    
    
    				$id = $rows['id'];
    			
    				$liked_username_query = mysql_query("SELECT * FROM users where `id` = '$id' ");
    
    
    				$liked_user_row = mysql_fetch_assoc($liked_username_query);
    
    
    				$count = mysql_num_rows($query);
    
    
    				$matchcount = 'match_'. $counter .'';
    
    
    					$match = array();
    					$match[$matchcount] = $liked_user_row['username'];
    
    
    				echo json_encode($match);
    
    
    				$counter++;
    
    
    		}
    Toon Meer

    TwistedMonkey - Media Productions

  • M.Beers
    Elite members
    Ontvangen Reacties
    31
    Berichten
    460
    • 16 januari 2014 om 00:03
    • #8

    Dan werkt mijn oplossing toch prima zet er een status veld bij en maak daarmee de status op..

    1 = pending (de verzender heeft geliked, de ontvanger niet)
    2 = match

    Wat mijn queries doet is namelijk, hij haaaalt alle relaties op die jij hebt gemaakt met een andere gebruiker

    Edit Verder zie ik ook dat je een query uitvoerd => daarop een while() loop => in de while loop nogmaals een query uitvoerd... dit is echt onnodig zwaar, vandaar die JOINS :)

    Dit was mijn spreekbeurt, zijn er nog vragen?

  • thjeu
    Developer
    Ontvangen Reacties
    2
    Berichten
    501
    • 16 januari 2014 om 00:09
    • #9

    Ah, mijn SQL / PHP kennis reikt helaas niet zo ver... Ik dacht namelijk dat jouw query iets totaal anders deed...

    Ik weet dat mijn oplossing atm niet de beste is, maar het is voor Appinventor. Aangezien de PHP code niet zal worden beoordeeld, maakt het niet zo veel uit hoe de PHP in elkaar zit. Wel bedankt voor het meedenken michael! :)

    Edit: Zie nu dat ik bovenstaand niet in de start post heb gezet, nja bij deze dan... Het is voor school :)

    TwistedMonkey - Media Productions

  • M.Beers
    Elite members
    Ontvangen Reacties
    31
    Berichten
    460
    • 16 januari 2014 om 00:29
    • #10

    Ik heb heeeeel even snel een voorbeeld gemaakt met een table dump misschien dat je er dan wat meer van snapt :thumbup:

    SQL
    SELECT
    	*
    FROM
    	user_likes l
    INNER JOIN
    	users u ON l.request_id = u.id OR l.respond_id = u.id
    WHERE
    	u.id != 1 AND l.request_id = 1
    OR
    	u.id != 1 AND l.respond_id = 1
    SQL
    --
    -- Tabelstructuur voor tabel `users`
    --
    
    
    CREATE TABLE IF NOT EXISTS `users` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `naam` varchar(255) COLLATE latin1_general_ci NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=5 ;
    
    
    --
    -- Gegevens worden uitgevoerd voor tabel `users`
    --
    
    
    INSERT INTO `users` (`id`, `naam`) VALUES
    (1, 'Kees'),
    (2, 'Bert'),
    (3, 'Bart'),
    (4, 'Auke');
    
    
    -- --------------------------------------------------------
    
    
    --
    -- Tabelstructuur voor tabel `user_likes`
    --
    
    
    CREATE TABLE IF NOT EXISTS `user_likes` (
      `request_id` int(255) NOT NULL,
      `respond_id` int(255) NOT NULL,
      `status` int(255) NOT NULL DEFAULT '1'
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
    
    
    --
    -- Gegevens worden uitgevoerd voor tabel `user_likes`
    --
    
    
    INSERT INTO `user_likes` (`request_id`, `respond_id`, `status`) VALUES
    (1, 3, 1),
    (1, 4, 1);
    Toon Meer

    Dit is namelijk exact wat je wilt volgensmij ...

    Dit was mijn spreekbeurt, zijn er nog vragen?

  • Patrick
    Back in the game
    Ontvangen Reacties
    52
    Berichten
    1.417
    • 18 januari 2014 om 09:27
    • #11

    met de tabel die je hebt aangeven kom je heel ver in sql:
    http://sqlfiddle.com/#!2/75c1a/1/2

    Simpele loop nu nog in php om alles in een array te kiepen en dan een json_encode eromheen en done :)
    in het voorbeeld in bijgevoegde link kan je door middel van:

    Code
    set @userid:=1;

    het userid veranderen om mee te testen :)!

  • thjeu
    Developer
    Ontvangen Reacties
    2
    Berichten
    501
    • 20 januari 2014 om 15:19
    • #12

    Ik heb van jullie beiden het even geprobeerd. Vooralsnog kwam ik er niet uit met jouw query Michael. Met jouw query kwamen er ook rijen tevoorschijn waarbij de formule niet telde.

    Pseudocode:

    PHP
    SELECT *
    WHERE Rij 1 = $user_id
    AND Rij 2 = $user_id

    Dus, wanneer user 1 user 2 heeft geliked en wanneer user 2 user 1 heeft geliked, moet hier een resultaat voor komen.

    De code van Patrick, werkte met mijn invulling echter wel! Deze heb ik nu ook gebruikt! Bedankt :)

    PS: Het zou maar zo kunnen dat jouw code wel werkt Michael, maar ik heb er gewoon niet genoeg verstand van.

    TwistedMonkey - Media Productions

  • M.Beers
    Elite members
    Ontvangen Reacties
    31
    Berichten
    460
    • 20 januari 2014 om 16:06
    • #13

    thjeu dit is exact dezelfde code met wat extra where statements, maar maakt niet uit ;)

    Dit was mijn spreekbeurt, zijn er nog vragen?

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!

Maak een account aan Login

ICT Nieuws

  • Fijne feestdagen

    tcbhome 28 december 2025 om 13:55
  • Kritieke update voor Really Simple Security-plug-in

    K.Rens 16 november 2024 om 16:12
  • ING Nederland streeft naar ondersteuning van Google Pay tegen eind februari

    K.Rens 2 november 2024 om 16:09

Blogs

  • Functioneel ontwerp

    Dees 28 december 2014 om 12:38
  • Access Control List implementatie in PHP/MySQL - deel 1/2

    FangorN 28 december 2018 om 12:35
  • Access Control List implementatie in PHP/MySQL - deel 2/2

    FangorN 29 december 2018 om 12:37

Gebruikers die dit topic bekijken

  • 2 Gasten
  1. Marktplaats
  2. Design
  3. Voorwaarden
  4. Ons team
  5. Leden
  6. Geschiedenis
  7. Regels
  8. Links
  9. Privacy Policy
ICTscripters ©2005 - 2026 , goedkope hosting door DiMoWeb.com, BE0558.915.582
Sponsors: Beste kattenhotel provincie Antwerpen | Beste Zetes eid kaartlezer webshop
Style: Nexus by cls-design
Stylename
Nexus
Manufacturer
cls-design
Licence
Commercial styles
Help
Supportforum
Visit cls-design