Hoe krijg ik een INNER JOIN echo correct op de pagina

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Wat ga je doen? Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q.

Bekijk vacature »

Java Developer / Overheid / Complexiteit

Functieomschrijving Wil jij als Java Developer een bijdrage leveren aan een veiliger Nederland en je als Java Developer bezig houden met zeer complexe bedrijfskritische applicaties? Lees dan snel verder! Doorontwikkelen bedrijfskritische applicaties; Aanpassingen maken in de bestaande applicatie; Vertalen van jouw visie op continuous integration en continuous delivery; Debuggen van de applicatie; In gesprek gaan met eindgebruikers om verbetervoorstellen op te halen. Functie-eisen Minimaal HBO-werk en denkniveau; Minimaal 5 jaar werkervaring als Java Developer; Je bent minimaal OCP-Java SE 6 gercertificeerd; Je hebt kennis van Webservices en Continuous Integration; Je bent analytisch sterk en zowel klant- als resultaatgericht. Bedrijfsomschrijving Binnen

Bekijk vacature »

Front-end Developer Vue.js Meewerkend voorman

Functieomschrijving Ben jij een ervaren Front-end Developer, bedreven in Vue.js en lijkt het jou gaaf om als meewerkend voorman verantwoordelijk te zijn voor de ontwikkeling van drie junior ontwikkelaars? Werk jij graag aan diverse projecten t.b.v. het vergroten van klant- en medewerkerbeleving? Lee dan snel verder! Het onderhouden, ontwikkelen en testen van front-end software van diverse klant- en medewerkersapplicaties; Het ontwikkelen van maatwerk front-end oplossingen in Vue.js en participeren in een scrumteam; Verantwoordelijk voor het begeleiden en coachen van drie junior front-end developers; Verantwoordelijk voor code-reviews en het opstellen van de juiste documentatie zoals userstories en api ontwerp; Participeren in

Bekijk vacature »

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Wat ga je doen? Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q.

Bekijk vacature »

Christian Snijders

Christian Snijders

01/07/2020 21:05:40
Quote Anchor link
Onderstaande code ben ik al een behoorlijk tijdje aan het bekijken.
Beide tabellen hebben een veld genaamd "id", maar nu wil ik dus van beide velden het id op de pagina laten tonen.

Welke manier kan ik het beste uitvoeren zonder dat ik de tabel aan moet passen?

P.s.: niet te vergeten dat ik heel veel zal moeten leren betreft MySQL querys.

Alvast bedankt!
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

$dataquery
= mysqli_query($connect_mysql, "SELECT * FROM `users` INNER JOIN `user_settings` as us ON (users.id = us.user_id) WHERE `setting_id` = 'PROFPIC' ORDER BY users.id desc");
while($data = mysqli_fetch_array($dataquery))
{

// hier wil ik dus de info van user_settings -> id zien
// De query is nu natuurlijk niet correct.
// dit is sowieso niet goed:

$prof = $data['us.id'];
// Deze wordt ook niet geaccepteerd
$prof =  $data->us->id;
print $prof;
}


?>
 
PHP hulp

PHP hulp

15/08/2020 08:59:13
 
- Ariën -
Beheerder

- Ariën -

01/07/2020 21:09:11
Quote Anchor link
Noem alle velden los in de SELECT, en gebruik geen *

Een aantal enters in je query maakt het geheel ook een stuk overzichtelijker.
Gewijzigd op 01/07/2020 21:10:03 door - Ariën -
 
Christian Snijders

Christian Snijders

01/07/2020 21:12:42
Quote Anchor link
- Ariën - op 01/07/2020 21:09:11:
...


Dus als ik het goed begrijp is het bijvoorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT `id`, `naam`, `achternaam` FROM `users` INNER JOIN `user_settings` ON (users.id = user_settings.user_id)

Maar hoe krijg ik dan van de user_settings de id te pakken?
 
- Ariën -
Beheerder

- Ariën -

01/07/2020 21:14:16
Quote Anchor link
user_settings.id in je SELECT.
 
Christian Snijders

Christian Snijders

01/07/2020 21:16:44
Quote Anchor link
- Ariën - op 01/07/2020 21:14:16:
..


Dus als ik het goed begrijp is het dan zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
SELECT `users.id`, `user_settings.id`, `naam`, `achternaam` FROM `users` INNER JOIN `user_settings` ON (users.id = user_settings.user_id)

print $data['id'] <- als ik daar de user settings id of de users id wil tonen, wat moet ik er dan aan aanpassen?
 
- Ariën -
Beheerder

- Ariën -

01/07/2020 21:28:23
Quote Anchor link
Dan kan je beter een AS alias gebruiken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT user_settings.id AS settingID, bla, blah....
 
Christian Snijders

Christian Snijders

01/07/2020 21:37:43
Quote Anchor link
Thanks Ariën,

Dan ga ik morgen even kijken of het middels de alias werkt :-)
 
- Ariën -
Beheerder

- Ariën -

01/07/2020 23:24:40
Quote Anchor link
Nog mooier is een alias koppelen aan een tabelnaam:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
SELECT us.id AS settingID, bla, blah....
FROM users u
INNER JOIN user_settings us ON (users.id = user_settings.user_id)


Scheelt je een hoop lange tabelnamen als je je lange tabelnamen hebt.
 
Christian Snijders

Christian Snijders

03/07/2020 20:21:54
Quote Anchor link
- Ariën - op 01/07/2020 23:24:40:
..


Ik krijg de volgende error:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in public_html/4-newsite/includes/newestusers.php on line 23


dit is hetgene wat ik hem uit laat voeren:

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
$dataquery = mysqli_query($connect_mysql, "
    SELECT

        users.id AS 'uid',
        users.voornaam AS 'uv',
        users.achternaam AS 'ua',  
        users.username AS 'uname',
        us.value AS 'picture',
        st.value AS 'top'
    FROM `users`
        INNER JOIN

            `user_settings` as us ON (users.id = us.user_id) WHERE `setting_id` = 'PROFPIC'
        INNER JOIN

            `user_settings` as st ON (users.id = st.user_id) WHERE `setting_id` = 'PROFPIC_TOP'
        ORDER BY users.id desc");


Vraag me af wat ik hier fout doe, als ik één INNER JOIN verwijder doet hij het wel.

Toevoeging op 03/07/2020 20:34:37:

Heb hem inmiddels gevonden, in plaats van WHERE moest ik AND gebruiken en ik moest st.setting_id gebruiken.
 
- Ariën -
Beheerder

- Ariën -

03/07/2020 21:15:40
Quote Anchor link
Als je die bovenste foutmelding ziet, dat betekent dat in feite dat je geen goede foutafhandeling hebt. ;-)
 
Thomas van den Heuvel

Thomas van den Heuvel

04/07/2020 20:59:07
Quote Anchor link
- Ariën - op 03/07/2020 21:15:40:
Als je die bovenste foutmelding ziet, dat betekent dat in feite dat je geen goede foutafhandeling hebt. ;-)

Mja, maar dit is het gevolg van een syntactisch incorrecte query. Het is dus niet zozeer het probleem dat de code / databaselaag geen foutafhandeling zou hebben. Indien de query wel zou kloppen -en deze is verder compleet statisch / heeft geen enkel dynamisch deel- dan zou het eigenlijk niet uitmaken of je een foutmeldingslaag hebt of niet.

Neemt niet weg dat het voor een productie-omgeving netter zou zijn dat je wat extra "stootkussens" hebt in de vorm van foutafhandeling, en dan bij voorkeur een variant waarbij de gebruiker een nette foutmeldingspagina krijgt indien er iets misgaat - wellicht met HTTP status code 500 (internal server error), in plaats van rauwe foutmeldingen op het scherm, die op een productie-omgeving eigenlijk altijd uit zouden moeten staan (de weergave, niet de registratie).

Ook is het belangrijk dat je de foutmeldingen echt leert lezen/interpreteren. Als je dit kunt ben je namelijk al halverwege met het oplossen van het achterliggende probleem.
Gewijzigd op 04/07/2020 20:59:28 door Thomas van den Heuvel
 



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.