Avatar billede zombien Juniormester
30. september 2014 - 08:51 Der er 18 kommentarer og
1 løsning

MySQL & UNION - UDtræk fra flere tabeller

Hej Eksperter

Jeg sidder og skal til at lave et udtræk som henter fra 3 forskellige tabeller i min database, for at få lavet en oversigt over seneste aktiviteter på min hjemmesiden...

jeg har kigget nærmere på http://www.eksperten.dk/spm/979880
og har fundet frem til UNION...

min streng ser sådan her ud

$sql = mysql_query('select idBlog as id, title, oprettet from blog UNION select idforum as id, oprettet, title from forum where parent = 0 UNION select idEvent as id, title, oprettet from arrangement order by oprettet DESC, LIMIT 0,3');

$fang_udtraek = mysql_fetch_assoc($sql)


Men syntes ikke helt at jeg kan få den til at udskrive noget :/

forsøger her $fang_udtraek['title']; for kommer i tvivl om hvordan den ved hvilken den skal hive ud fra osv.

Håber nogle herinde kan hjælpe den knap så morgenfriske mig :)
Avatar billede zombien Juniormester
30. september 2014 - 09:02 #1
Får evt. følgende fejlbesked

Warning: mysql_fetch_assoc() expects parameter 1 to be resource
Avatar billede tjp Mester
30. september 2014 - 09:44 #2
Umiddelbart synes jeg, det ser ud til at du bruger mysql_fetch_assoc forkert:
http://www.w3schools.com/php/func_mysql_fetch_assoc.asp

(Den er i øvrigt også forældet: http://php.net/manual/en/function.mysql-fetch-assoc.php - brug mysqli_fetch_assoc i stedet: http://php.net/manual/en/mysqli-result.fetch-assoc.php)
Avatar billede zombien Juniormester
30. september 2014 - 09:57 #3
Forkert og forkert er vel så meget sagt :)

Men tvivler på det er der problemet ligger, jeg tror mere mit problem ligger i SQL strengen


$sql = mysql_query('select idBlog as id, title, oprettet from blog UNION select idforum as id, oprettet, title from forum where parent = 0 UNION select idEvent as id, title, oprettet from arrangement order by oprettet DESC, LIMIT 0,3');


Det virker som om den slet ikke fanger noget som helst

for har da rettet den til guidens anbefaling du linker til så den ser sådan her ud nu

print_r(mysql_fetch_assoc(mysql_query($sql)));
Avatar billede tjp Mester
30. september 2014 - 10:07 #4
Du kan jo prøve med en select ad gangen og se om det fanger noget..
Avatar billede zombien Juniormester
30. september 2014 - 10:10 #5
Benytter jeg kun en select så udskriver den fint uden fejl...

så mit problem er den sql streng med union men syntes ikke at jeg benytter den forkert?
Avatar billede tjp Mester
30. september 2014 - 10:11 #6
Fx:
$sql = mysql_query('select idBlog as id, title, oprettet from blog by oprettet DESC, LIMIT 0, 3');
Avatar billede zombien Juniormester
30. september 2014 - 10:12 #7
PHP Version 5.3.10
Avatar billede tjp Mester
30. september 2014 - 10:12 #8
Hov, glemte at opdatere.. tsk tsk
Avatar billede tjp Mester
30. september 2014 - 10:15 #9
Hvad om du nøjes med to i din union?
Avatar billede zombien Juniormester
30. september 2014 - 10:20 #10
Det er så snart jeg benytter en union den vælger at sætte sig ned og strejke :/ om det så kun er en eller to er den fuldkommen ligeglad med :S
Avatar billede tjp Mester
30. september 2014 - 10:21 #11
Hov, har du ikke byttet om på kolonnerne i anden select?
Avatar billede tjp Mester
30. september 2014 - 10:21 #12
titel og oprettet
Avatar billede zombien Juniormester
30. september 2014 - 10:43 #13
Min nye streng ser sådan her ud

$sql = mysql_query('select idBlog as id, title, oprettet from blog UNION select idforum as id, title, oprettet from forum where parent = 0 UNION select idEvent as id, title, oprettet from arrangement order by oprettet DESC, LIMIT 0,3');

og dette virker stadig ikke :/

skal det være 100 % samme kolonne navne og type, så jeg kan egentlig ikke hive en 3 ting ud af streng 2?
Avatar billede zombien Juniormester
30. september 2014 - 11:15 #14
Fordælen jeg er da en skovl :S

Jeg har nu fået den til at hente strengen ud, fejlen lagde i at jeg havde sat et , efter DESC :/

Men hvis jeg benytter print_r(); udskriver den kun en?

Jeg ved der er mere indhold end dette...
Avatar billede zombien Juniormester
30. september 2014 - 11:21 #15
Jeg har fået det til at virke :) jeg siger rigtig mange gange tak for hjælpen :)

Smid du et svar for din tid
Avatar billede zombien Juniormester
30. september 2014 - 11:30 #16
Tror du det er muligt at man kan fange hvor hver bliver hentet fra? altså evt. en variabel "blog", "forum" eller "arrangement" bare så jeg kan sætte de korrekte ikoner/billeder til det den henter ud
Avatar billede tjp Mester
30. september 2014 - 12:10 #17
Du kan give select'erne en fjerde kolonne, hvor du angiver typen:

$sql = mysql_query("select idBlog as id, title, oprettet, 'blog' from blog UNION select idforum as id, title, oprettet, 'forum' from forum where parent = 0 UNION select idEvent as id, title, oprettet, 'arrangement' from arrangement order by oprettet DESC LIMIT 0,3");
Avatar billede tjp Mester
30. september 2014 - 12:11 #18
Og et svar.. :-)
Avatar billede zombien Juniormester
01. oktober 2014 - 08:45 #19
Morgen...

Håber du er vågen og morgenfrisk igen idag, for at har da lige et hurtigt spørgsmål i sammenhæng med dit forslag :)

Hvordan kalder/udskriver jeg så hvilken type det er?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester