[php] data uit verschilldende tabellen sorteren

Pagina: 1
Acties:
  • 104 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • AtlonXP1800
  • Registratie: Augustus 2001
  • Laatst online: 29-01 12:01
Ik ben bezig om een website met php & mysql te bouwen.
Op dit moment worden er gegevens uit verschillde tabellen gehaald, en meteen op het scherm weergegeven.

dit doe ik op deze manier:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$result1 = mysql_query("SELECT * FROM a where serie = '". $serie ."' ORDER BY `ID` ");
 while ($row1 = mysql_fetch_array($result1)){
 $trid = $row1["ID"];
 $result = mysql_query("SELECT * FROM b where ID = ". $trid ." ORDER BY `ID` ");
 while ($row = mysql_fetch_array($result)){
  $sql = mysql_query("SELECT Naam FROM a where id = " . $row["ID"] . " ORDER BY ID DESC LIMIT 1");
    $regel = mysql_fetch_array($sql);
    $id = $regel["Naam"];
        
    echo $row["ID"];
    echo $id;
    echo $row["geleg"];
    echo $row["plaats"];
    echo $row["datum"];
    echo $row["img1"],$row["img2"],$row["img3"],$row["img4"] . "<br>";


Dat het niet erg netjes geprogrameerd is weet ik :X
Het werkt verder prima, en ik krijg mijn resualtaten op het sherm. Wat nu het probleem is is dat ik de resultaten wil sorteren op $id.
Dit is niet makkelijk met een order by te doen volgens mij, maar ik kan er niet helemaal uit komen hoe ik het wel moet doen.
Is diet te doen door de $id waarden in een array te zetten, en deze te sorteren?

Acties:
  • 0 Henk 'm!

  • ludo
  • Registratie: Oktober 2000
  • Laatst online: 26-04-2024
Verdiep je even in SQL JOIN's (zie ook de P&W Faq) en bespaar jezelf een hele hoop (onnodige) ellende :) Met SQL heb je zo het resultaat dat je wilt hebben...

[ Voor 24% gewijzigd door ludo op 23-06-2005 16:20 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Inderdaad, joins zijn hier het toverwoord. Als de P&W-FAQ te abstract is dan kun je ook kijken op www.sqlcourse.com en www.sqlcourse2.com. Trouwens:
Dat het niet erg netjes geprogrameerd is weet ik :X
Waarom doe je het dan niet meteen goed? Je code is bijna onleesbaar door de slechte uitlijning. :o

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • AtlonXP1800
  • Registratie: Augustus 2001
  • Laatst online: 29-01 12:01
ok, het is inderdaad een beter idee het probleem bij de bron aan te gaan pakken.
Ik ga ff die faq's door spitten (ok, had ik natuurlijk eerst moeten doen :X )

[ Voor 34% gewijzigd door AtlonXP1800 op 23-06-2005 16:30 ]


Acties:
  • 0 Henk 'm!

  • jnr24
  • Registratie: Oktober 2004
  • Laatst online: 27-08 11:48
snelle JOIN extra graties:

SELECT * FROM a,b WHERE a.ID=b.ID ORDER BY a.Name;

enz.. :D

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

jnr24 schreef op donderdag 23 juni 2005 @ 16:36:
snelle JOIN extra graties:

SELECT * FROM a,b WHERE a.ID=b.ID ORDER BY a.Name;

enz.. :D
Leuk dat je het wil voorkauwen, maar dat is natuurlijk eigenlijk niet de bedoeling van dit forum he? ;)

Overigens klopt die query nog niet helemaal, want er mist nog een stukje in de WHERE voor het selecteren van de juiste serie, maar daar moet TS zelf wel uit kunnen komen. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • AtlonXP1800
  • Registratie: Augustus 2001
  • Laatst online: 29-01 12:01
ja, en dat gaat lukken, met de faq kom ik een heel eind.
Ben er al achter dat je erg handige dingen met die join kan. (zoals van die 3 selects er een maken)

wat mij betreft mag dit topic gesloten worden (tenzij jullie nog willen zien wat ik er uiteindelijk van maak :) )

Acties:
  • 0 Henk 'm!

  • AtlonXP1800
  • Registratie: Augustus 2001
  • Laatst online: 29-01 12:01
ok, toch nog even een update.

Ik kom een heel eind in het samenvoegen van de 3 queries.
Wat ik nu heb is dit:

code:
1
2
3
4
SELECT a.naam, a.serie ,b.* 
FROM b 
left JOIN a ON (b.id = a.id) 
where trID = 18


Dit werkt opzich goed, en geeft mij 2 regels terug, incusief de naam en de serie die uit tabel a worden gehaald.
Probleem waar ik nu tegen op loop is dat bij de eerste van de 2 regels naam en serie ingevuld staan, maar bij de 2e regel staan deze op null.

Dit is een probleem als ik de selectie nu verder wil uitbreiden naar AND serie = "bla" want dan verdwijnen de records waar serie op null staat...
Iemand een idee hoe dit op te lossen is?

[ Voor 16% gewijzigd door AtlonXP1800 op 23-06-2005 20:09 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Je joint de tabel b op zichzelf. Je moet a op b joinen, en volgens mij met een INNER join, niet LEFT OUTER join. :)

[ Voor 57% gewijzigd door NMe op 23-06-2005 19:39 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • AtlonXP1800
  • Registratie: Augustus 2001
  • Laatst online: 29-01 12:01
-NMe- schreef op donderdag 23 juni 2005 @ 19:38:
Je joint de tabel b op zichzelf. Je moet a op b joinen
dat was ff een typfoutje.

een inner join kan niet, om dat er meerdere records uit b geselecteerd worden, terwijl deze wel de zelfde naam in a hebben, en van de zelfde serie zijn.
Maak ik gebruik van een inner join, dan krijg ik dus alleen het eerste record uit b.

[ Voor 42% gewijzigd door AtlonXP1800 op 23-06-2005 20:11 ]


Acties:
  • 0 Henk 'm!

  • AtlonXP1800
  • Registratie: Augustus 2001
  • Laatst online: 29-01 12:01
zo, 3 uur lang zitten puzzelen, en wat was het...
uiteraard een dom foutje |:(
ik vergeleek de primery key's met elkaar voor de join, ipv de primary en foreign key :X

nu nog het in php werkend zien te krijgen

Acties:
  • 0 Henk 'm!

  • AtlonXP1800
  • Registratie: Augustus 2001
  • Laatst online: 29-01 12:01
ok, ik blijf met een probleem zitten, in php heb ik nu:

PHP:
1
2
3
4
5
6
7
8
9
      $result = 'SELECT a.naam ,a.serie , b.* '
        . ' FROM `a` '
        . ' right JOIN `b` ON (a.id = b.trID ) '
        . ' where trID=' . $trid ;
        
       
       
        echo $result . "<br>";
        while ($row = mysql_fetch_array($result)){


Hierbij krijg ik de foutmelding "mysql_fetch_array(): supplied argument is not a valid MySQL result resource "

terwijl de query die ik uit de echo krijg het prima doet als ik em invoer via phpmyadmin.
Iemand enig idee wat er fout kan zijn?

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Misschien is het handig om je query ook nog even uit te voeren ;)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1