Overzichttabel maken met waarden uit MySQL

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

Brecht S

Brecht S

16/12/2014 17:35:52
Quote Anchor link
Het nieuwe resultaat is nu:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$sql1 = "SELECT sp.subproject_naam, sp.type, sp.status, tk.taak_naam, tk.type, tk.status, tk.omschrijving, tk.toewijzen_id, tk.ges_tijd, tk.wer_tijd, tk.ges_budget, tk.wer_budget FROM subprojecten sp JOIN taken tk ON taken.id = sp.subproject_id WHERE project_id = '$project_id'";


De foutmelding is nog steeds dezelfde: Column 'project_id' in where clause is ambiguous
 
PHP hulp

PHP hulp

22/11/2024 06:48:58
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

16/12/2014 17:39:23
Quote Anchor link
En ook SQL behoort in een net formaat te staan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
SELECT
    t.kolom,
    a.andere_kolom
FROM
    tabel t
JOIN
    anderetabel a
    ON t.id = a.t_id
WHERE
    a.t_id = 12345

Oneliners zijn voor komedianten ;-)
 
Brecht S

Brecht S

16/12/2014 17:40:38
Quote Anchor link
Ok, even aangepast en ik heb het hier beetje anders gedaan maar komt op hetzelfde neer:

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
SELECT
   sp.subproject_naam as subnm,
   sp.type,
   sp.status,
   tk.taak_naam,
   tk.type,
   tk.status,
   tk.omschrijving,
   tk.toewijzen_id,
   tk.ges_tijd,
   tk.wer_tijd,
   tk.ges_budget,
   tk.wer_budget
FROM
   subprojecten sp
JOIN
   taken tk
ON
   tk.subproject_id = sp.id
WHERE
   project_id = '$project_id'


Krijg ik nu deze foutmelding alhoewel er wel degelijk een kolom subprojecten.subproject_naam bestaat:
Unknown column 'subprojecten.subproject_naam' in 'field list'
Gewijzigd op 16/12/2014 17:49:51 door Brecht S
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

16/12/2014 17:45:20
Quote Anchor link
Dat komt omdat je de tabellen aliassen geeft, dan moet je die aliassen ook gebruiken in de SELECT.
Daarnaast moet je in de WHERE de FQN (Fully Qualified Name) gebruiken dus sp.project_id, anders krijg je straks weer dubbelzinnigheden om je oren.


Toevoeging op 16/12/2014 17:55:06:

Hoe heb je die kolom in de tabel zelf genoemd?
 
Brecht S

Brecht S

16/12/2014 17:55:35
Quote Anchor link
Nog steeds hetzelfde probleem. Query is nu wel aangepast hierboven maar probleem is nog steeds hetzelfde:
Column 'project_id' in where clause is ambiguous


Toevoeging op 16/12/2014 17:57:36:

De kolom in de tabel noemt project_id, maar misschien moet het sp.project_id zijn?
Gewijzigd op 16/12/2014 17:56:30 door Brecht S
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

16/12/2014 18:19:17
Quote Anchor link
Ger van Steenderen op 16/12/2014 17:45:20:
Daarnaast moet je in de WHERE de FQN (Fully Qualified Name) gebruiken dus sp.project_id, anders krijg je straks weer dubbelzinnigheden om je oren.

Met andere woorden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
.........
WHERE
    sp.project_id = $project_id
 
Brecht S

Brecht S

16/12/2014 18:26:16
Quote Anchor link
Het schijnt eerder te lukken met WHERE tk.project_id = '$project_id'
Alleen heb ik nu alle taken onder de subprojecten zoals:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
Subnaam  Taaknaam  Omschrijving
Sub1     Taak1     ...
Sub1     Taak2     ...
Sub2     Taak3     ...

In plaats van:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
Subnaam  Taaknaam  Omschrijving
Sub1
         Taak1     ...
         Taak2     ...
Sub2    
         Taak3     ...


Kunnen we hier nog iets aan veranderen?
Gewijzigd op 16/12/2014 18:26:47 door Brecht S
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

16/12/2014 20:07:07
Quote Anchor link
Ja, groeperen in PHP:
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
<?php
$sub
= '';
$tr = '';
while ($row = mysql_fetch_assoc($res1)) {
    if ($row['subnm'] != $sub) {
        echo $tr;
        $sub = $row['subnm'];
        $tr = '</tr>';
        // dan display je hier de data voor het subproject
    }
    // en hier display je de data per taak
}
echo $tr;
?>

Enigszins wat pseudo code daar ik niet precies weet wat de uiteindelijke html moet zijn.
 

16/12/2014 23:00:04
Quote Anchor link
Sorry mijn fout. Ik schrijf me queries niet meer zelf, dat doet Doctrine voor me of ActiveRecord van Codeigniter.

Maar de intentie was goed :p
 
Brecht S

Brecht S

19/12/2014 22:58:17
Quote Anchor link
@Ger: Werkt perfect. Ik heb het wel volledig aangepast maar je hebt mij enorm goed op weg geholpen met je voorbeeldcode. Thanks!
 
Brecht S

Brecht S

07/01/2015 19:57:42
Quote Anchor link
@Ger: ik ontdek nu een klein probleem met je code. Als ik een aantal taken maak onder een bepaald subproject dan komen die allemaal mooi onder elkaar te staan met bovenaan de naam van het subproject.
Als ik daarna een paar andere taken maak onder een ander subproject dan lukt het ook nog. Resultaat:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
subproject1 naam
- Taak 1
- Taak 2

subproject2 naam
-Taak 3
-Taak 4


Maar dan gaat het fout.
Ik vul nu terug een taak onder subproject1 in en dan krijg ik dit als resultaat:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
subproject1 naam
- Taak1
- Taak2

subproject2 naam
- Taak 3
- Taak 4

subproject 1 naam
- Taak 5


Hoe komt dit? Waarom zet de code die dan niet samen onder de juiste subproject-groep?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

07/01/2015 23:19:17
Quote Anchor link
Dan moet je een ORDER BY subproject_id aan de query toevoegen.
MySQL pretendeert dit automatisch te doen, maar zoals je ziet is dat niet altijd waar!
 
Brecht S

Brecht S

08/01/2015 10:13:16
Quote Anchor link
Inderdaad. Werkt perfect met de ORDER BY erbij.
MySQL doet dit deels wel maar enkel als de items onder elkaar staan in de database en niet als er iets tussen zit. Bvb: Taak1 en Taak2 staan wel gegroepeerd maar 5 komt er niet bij omdat 3 en 4 er tussen zit.
Gewijzigd op 08/01/2015 10:27:44 door Brecht S
 

Pagina: « vorige 1 2



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.